点击“蓝字”关注我们,选择“星标”获取最新文章

上周在一篇共享的开源的方案中我们介绍了理论的研究部分,处于好奇,本人决定亲自测试一下该开源的方案,虽然了解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方法介绍

往期线上分享录播汇总

第一期B站录播之三维模型检索技术

第二期B站录播之深度学习在3D场景中的应用

第三期B站录播之CMake进阶学习

第四期B站录播之点云物体及六自由度姿态估计

第五期B站录播之点云深度学习语义分割拓展

第六期B站录播之Pointnetlk解读

[线上分享录播]点云配准概述及其在激光SLAM中的应用

[线上分享录播]cloudcompare插件开发

[线上分享录播]基于点云数据的 Mesh重建与处理

[线上分享录播]机器人力反馈遥操作技术及机器人视觉分享

[线上分享录播]地面点云配准与机载点云航带平差

点云PCL更多活动请查看:点云PCL活动之应届生校招群

扫描下方微信视频号二维码可查看最新研究成果及相关开源方案的演示:

如果你对本文感兴趣,点击“原文阅读”获取知识星球二维码,务必按照“姓名+学校/公司+研究方向”备注加入免费知识星球,星球可自由发言交流和分享。也可免费下载公众号分享的论文pdf文档,和更多热爱分享的小伙伴一起交流吧!

欢迎各位转发分享朋友圈,将公众号设置为星标,或点击“在看”以示鼓励和支持,让我们继续分享!

以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除

扫描二维码

关注我们

让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入免费星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。

分享及合作方式:可联系微信“920177957”(需要按要求备注)联系邮箱:dianyunpcl@163.com,欢迎企业来联系公众号展开合作。

点一下“在看”你会更好看耶

开源点云实时压缩方案测试相关推荐

  1. 首批+唯一。阿里云实时计算 Flink 版通过信通院大数据产品稳定性测试

    概要 2021年12月13日,中国信息通信研究院新一轮"大数据产品能力评测"结果公布,阿里云实时计算 Flink 版通过分布式流处理平台稳定性专项测评,阿里云成为「首批+唯一」通过 ...

  2. 国内首批!阿里云实时计算 Flink 版通过信通院大数据产品能力测试

    简介:阿里云实时计算 Flink 版通过信通院分布式流处理平台测评,成为国内首批通过测试的厂商. 2021年6月24日,中国信息通信研究院(以下简称"中国信通院")在北京主办&qu ...

  3. 阿里云实时计算的前世“功”今生“能”

    2019独角兽企业重金招聘Python工程师标准>>> 前言: 不修内功,难成大器.为了将Apache Flink在阿里巴巴真正运行起来,阿里巴巴实时计算团队做了大量的优化,在阿里云 ...

  4. 阿里云实时计算,前世功,今生能!

    前言: 不修内功,难成大器.为了将Apache Flink在阿里巴巴真正运行起来,阿里巴巴实时计算团队做了大量的优化,在阿里云上的产品正式命名为实时计算,以Flink SQL为主要API,致力于打造一 ...

  5. 腾讯云实时音视频带你玩转语音聊天室

    声音交友,在线K歌,自由上麦,声波传达-- 从最初单一的一对一语音通话,到后来火爆的多人语音群聊,再到现在聚集了一批"音控"的纯语音聊天室,当代年轻人的社交APP里最不可少的功能就 ...

  6. Android中图片压缩方案详解

    如感觉排版不舒服,可移步至此处查看 图片的展示可以说在我们任何一个应用中都避免不了,可是大量的图片就会出现很多的问题,比如加载大图片或者多图时的OOM问题,可以移步到Android高效加载大图.多图避 ...

  7. 新知实验室 腾讯云实时音视频 RTC WEB端初识

    这里写目录标题 前言 初识产品 产品介绍 基础功能 高级功能 扩展功能 快速上手 位置 创建 源码下载 源码文档 写入密钥 使用 调试区域 前言 当前时代是信息行业飞速发展的时代,万物都在朝物联网方向 ...

  8. Bitmap之压缩方案

    文章目录 前言 1.基础知识 1.1色彩模式 1.2四种模式的区别 1.3具体对比 1.4bitmap内存占用大小计算方式 1.5图片存在的形式 1.6BitampFactory加载Bitmap对象的 ...

  9. 最新发布!《阿里云实时计算 Flink 版解决方案白皮书-2021版》开放下载

    简介:阿里云实时计算 Flink 版解决方案白皮书-2021版正式发布- Apache Flink:全球领先的开源大数据计算引擎 Apache Flink 是一个开源的分布式大数据处理引擎,可对有限数 ...

最新文章

  1. ARIMA+参数选择p+d+q
  2. 无线AP如何区分来宾(流动)用户和正常用户?
  3. 笔记-项目干系人管理-管理干系人参与
  4. java 自动装载_springboot自动装载
  5. 一文教你轻松搞定ANR异常捕获与分析方法
  6. 默认栅格大小为多少_用于创建空栅格的ST_MakeEmptyRaster函数
  7. 有了这个王座,写代码的速度都加快了
  8. 塞班S40手机内存出现乱码无法删除的解决办法
  9. Java2048游戏源代码
  10. Ubuntu安装翻译软件(goldendcit)
  11. w ndows热键,Window 10 优雅的快捷键
  12. Codeforces Round #828 (Div. 3) E2. Divisible Numbers (hard version)
  13. python股票涨停_Python与量化投资-股票复盘工具-2018-02-02
  14. bash: ./xx: Permission denied解决方法
  15. UDS诊断系列之三 ISO14229协议介绍(下)
  16. Qt - 窗口移动拉伸
  17. 【微信小程序】小程序应用和页面生命周期
  18. python open_python open() – 访问被拒绝
  19. java定义类属性方法_java定义类、属性、方法
  20. 重建Windows图标缓存

热门文章

  1. 当统计信息不准确时,CBO可能产生错误的执行计划,并在10053 trace中找到CBO出错的位置示例...
  2. [codeforces]Round #538 (Div. 2) F. Please, another Queries on Array?
  3. sourcetree管理git
  4. 2022-2028年中国喹烯酮行业市场研究及前瞻分析报告
  5. 常用的CSS(收集)
  6. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)
  7. jquery-tmpl 插件
  8. c# 垃圾回收是引用类型而言的
  9. JavaScript基本知识
  10. 接口有个电池标志_USB接口上的小标签有啥用?从“+”号到闪电的奥秘