开源点云实时压缩方案测试

上周在一篇共享的开源的方案中我们介绍了理论的研究部分,处于好奇,本人决定亲自测试一下该开源的方案,虽然了解PCL的同学应该都知道,该开源库中也有关于点云的压缩和解压的研究,效果也很好。在之前的博客中,我们有过介绍,将来如果有机会更加可以继续深入解析其中的理论以及代码部分,这里我们首先来学习一下这一优秀的开源代码。首先介绍一下这篇文章《Real-Time Spatio-Temporal LiDAR Point Cloud Compression》

本文提出了一个新的系统,可以有效地压缩一系列点云。利用点云帧序列中的空间和时间冗余的思想。首先在点云序列中识别关键帧,然后通过迭代平面拟合对关键帧进行空间编码。然后我们利用连续点云在物理空间中有大量重叠的事实,因此空间编码的数据可以(重新)用于对时间流进行编码。利用空间编码数据进行时间编码,不仅提高了压缩率,而且避免了冗余计算,大大提高了压缩速度。实验表明,我们的压缩系统达到了40×90的压缩率,明显高于MPEG的LiDAR点云压缩标准,同时保持了较高的端到端应用精度。同时,我们的压缩系统的压缩速度与目前激光雷达的点云生成速率相匹配,并优于现有的压缩系统,实现了实时点云传输。

具体文章可查看:

github地址:

https://github.com/horizon-research/Real-Time-Spatio-Temporal-LiDAR-Point-Cloud-Compression

由于在测试时,编译有点小问题,所以这里对源代码进行了一些重构,在代码结构上进行了CMake重构,将头文件和源文件进行了部分修改。

整理后的代码地址:

https://github.com/yaoli1992/LiDAR-Point-Cloud-Compression

测试内容介绍

原始的代码给出了data 和src两个文件,其中data是给的测试数据,代码是在src中,并且使用的Makefile编译。

根据文件的命名,可以一目了然的知道每一个文件是什么作用,代码上看起来是比较简单明了的,这里面也给出了六个测试代码,分别是对单帧点云数据和多帧的点云数据的压缩和解压以及完整的测试,具体如下:

* 'pcc_encoder':对单帧点云进行编码的编码器。

* 'pcc-decoder':解码单帧点云的解码器。

* 'pcc_test':这是一个完整的测试代码。

* 'pcc_stream_encoder':对多帧的点云数据流进行编码的编码器。

* 'pcc_stream_decoder':解码多帧的点云数据流解码器。

* 'pcc_stream_test':这是多帧数据流完整的测试。

使用了opencv4和boost库函数,如果你的电脑端正好有这两个库,那么你就直接make吧,可以直接编译和使用,但是由于本人的电脑只有opencv3.4以及boost1.58,修改后在编译的时候仍然没有成功,所以我决定将代码重新构建一下,使用cmake进行编译,并且为了测试压缩前后点云数据的质量,我已经引入了点云库PCL,对点云进行一些转换和可视化,

同时将代码的公共部分编译成一个.so的动态链接库,这样我们就可以很好的整合这些代码了,这里可以先看一下,本人在构建完成后的文件夹有哪些,如图:

每个文件夹的说明如下:

build:主要是我们的编译文件,以及生成的可执行文件。

data:是原始的数据文件,这里没有做改变

include:主要存放原始文件中的头文件

lib:文件主要是保存在接下来的编译中生成的.so动态链接库

src:主要用于存放原始文件的实现函数,主要是.cpp文件。

pcl_test:是我临时增加的一个基于点云库的bin文件转到pcd文件

test:主要是实验单帧和多帧点云数据压缩和解压的测试代码。

CmakeLists.txt:增加cmake文件。

重新构建的代码刚刚分享在了我的github地址上,所以有需要的直接下载后,使用cmake的方式编译代码即可,

编译完成后生成动态链接库,以及可执行的二进制文件

接下来我们就可以根据提供的数据和生成的二进制文件进行一些测试,在测试之前,可以根据我提供的pcl_test文件生成一个pcl_bin2pcd的可执行文件,并使使用pcl_viewer进行可视化查看原始数据和原始点的数量以及加载这些点云需要的时长。如图所示:

为了更好的对比压缩前后点云数据所占空间的大小,这里我们首先查看一下点云的属性,查看其大小:

然后我们使用,编译生成的可执行文件进行点云压缩处理

./pcc_encoder --path ../data --file 0000000000.bin -p 0.18 -y 0.45 -f binary -l 4 -t 0.5 --out frame.tar.gz

命令行来对0000000000.bin进行压缩。解压后生成一个frame.tar.gz,我们查看此时这一帧点云数据的大小。

对比一下文件大小可以看出压缩后的点云确实很小啊,从2M压缩到了50.6KB,节省了空间,但是会不会影响我们的点云质量呢?这里我们再解压出来看看。使用命令

./pcc_decoder -p 0.18 -y 0.45 -f binary -l 4 --file frame.tar.gz

此时解压出来的bin文件的大小,如图所示:

解压后从大小上好像比之前的小了一些,那说明是有一些损失,这里我们直接使用工具将其转化后可视化的结果大致查看一下结果如下

总结

从点的个数和点云的加载时间上也减少了不少,有损失,但是可视化出来的结果,看不出有什么影响点云质量。同时在作者的论文中也从三个方面,提出了三个评估指标来验证这里的压缩是没有影响到点云的质量。分别从以下三个方面的应用验证了压缩的有效性:

  • 点云配准:配准的测试使用了基于点云PCL库的ICP算法进行对比测试。

  • 点云目标检测:使用了体素网格的深度学习的方法测试对比。

  • 点云场景的分割:使用了基于DNN的squezeseg方法。

使用三个评估指标:未压缩点云的压缩率、FPS的压缩速度和应用程序结果的精确度。

所谓前人栽树,后人乘凉,再次感谢作者开源了代码。

资源

三维点云论文及相关应用分享

【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法

3D目标检测:MV3D-Net

三维点云分割综述(上)

3D-MiniNet: 从点云中学习2D表示以实现快速有效的3D LIDAR语义分割(2020)

win下使用QT添加VTK插件实现点云可视化GUI

JSNet:3D点云的联合实例和语义分割

大场景三维点云的语义分割综述

PCL中outofcore模块---基于核外八叉树的大规模点云的显示

基于局部凹凸性进行目标分割

基于三维卷积神经网络的点云标记

点云的超体素(SuperVoxel)

基于超点图的大规模点云分割

更多文章可查看:点云学习历史文章大汇总

SLAM及AR相关分享

【开源方案共享】ORB-SLAM3开源啦!

【论文速读】AVP-SLAM:自动泊车系统中的语义SLAM

【点云论文速读】StructSLAM:结构化线特征SLAM

SLAM和AR综述

常用的3D深度相机

AR设备单目视觉惯导SLAM算法综述与评价

SLAM综述(4)激光与视觉融合SLAM

Kimera实时重建的语义SLAM系统

SLAM综述(3)-视觉与惯导,视觉与深度学习SLAM

易扩展的SLAM框架-OpenVSLAM

高翔:非结构化道路激光SLAM中的挑战

SLAM综述之Lidar SLAM

基于鱼眼相机的SLAM方法介绍

(0)

相关推荐

  • CMake 使用教程

    本文档翻译自官方 cmake turorial .更新日期:2018年9月27日.译者这里以 windows 平台为例,介绍了在 Windows 平台下配合 VS2017 的使用方法. 虽然本文是官方 ...

  • CMake编译工具与项目构建

    文章导读 本文从C/C++代码的编译过程入手,弄清楚Make与Makefile,CMake与CMakeLists的关系,最后从CMakeLists的语法规则入手给出示例带大家熟悉如何编写一份简单的编译 ...

  • 简单易懂的单元测试框架-gtest(一)

    简介 gtest是google开源的一个单元测试框架,以其简单易学的特点被广泛使用.该框架以第三方库的方式插入被测代码中.同其他单元测试框架相似,gtest也通过制作测试样例来进行代码测试.同时,gt ...

  • MPP-使用说明

    MPP-使用说明

  • 跨平台构建工具,cmake是 yyds ? bjd !

    跨平台构建工具,cmake是 yyds ? bjd !

  • 国开电大-人文英语2-单元测试1-8满分答案

    国开电大人文英语2形考任务单元自测1答案 题目顺序是随机的,使用查找功能(Ctrl+F)进行搜索 题目:_____dangerous it is to ride fast on a busy road ...

  • 铁岭诗词||千朵出尘姿,花开正盛时

    点击蓝字 ● 关注铁岭诗词 铁岭诗词微刊第5期约稿通知 红豆生南国,春来发几枝,是思念:爆竹声中一岁除,春风送暖入屠苏,是期盼:草长莺飞二月天,拂堤杨柳醉春烟,是和春天的初识:沾衣欲湿杏花雨,吹面不寒 ...

  • 开普票时开票码是什么?

    摘要: 本文给各位税务会计带来的是开普票时开票码是什么?相关的内容,在开普票时开票码是什么?文章中给大家详细讲解了有关开普票时开票码是什么?的会计税法知识. 答:发票代码是税务部门给予发票的编码.在查 ...

  • 小满:花开半浓时最美,酒至半酣时最醇

    花开半浓时最美,酒至半酣时最醇 作者 | 慕绯雪  主播 | 竹子 编辑 | 安般兰若(ID:anbanlr) 红了樱桃,绿了芭蕉,麦浪吹尽,小满来到. 小满,是夏季的第二个节气. 小满后,天气由暖变 ...

  • 若想提高观赏鱼的存活率,在鱼缸开缸之时,可先放入这种鱼

    闯缸鱼大家知道什么鱼吗?这种鱼用好了,可以帮助你顺利开缸,以及减少后面观赏鱼的损耗.今天我们一起来探讨下闯缸鱼的妙用,以及如何选择. 对于资深鱼友或者是刚接触养鱼却有通过一些资料提前了解的鱼友来说,闯 ...

  • 准备贷款买房的人,开收入证明时一定不要做

    准备贷款买房的人,开收入证明时一定不要做这3件事: 1.多次提交资料不一致.如果你之前贷款已经提交过一次收入证明,那么最好保证前后提交资料的一致性,否则你的资料将会被列为重点审查对象,一旦被证实材料存 ...

  • 我开烧烤店时整理的烧烤技术配方,非常珍贵的笔记

    这是我开烧烤店时整理的烧烤技术配方,非常珍贵的笔记,拿去摆摊开店咯.

  • 诗韵飞扬 / 杨书娟 情花总带三分毒,开到深时始见伤(23)

    <追忆似水年华> 文/花影琴韵 眉山含黛目含情,一笑一颦风韵生. 似水年华不曾忘,伴侬记忆是卿卿. 2019.5.10.23:52 <情花有毒> 文/花影琴韵 纸短难描是意长, ...

  • 看看看!横梁芍药园花开正艳时

    横梁芍药园地处东部干线横梁现代农业产业园(新篁钟林红路口向北的树林近缘友果园)路东一片树林里,当下正是花开季拍点花儿供君欣赏! 药花色彩丰富,有红.粉.黄.白.绿.紫等多种颜色,以红粉白色居多,各有各 ...