大型点云压缩相关介绍:LASzip: lossless compression of LiDAR data论文解读代码梳理;MEPG的V-PCC和G-PCC

LAZ和LAS

下图为标准LAS的数据类型,论文将其分类为四种类型

数据压缩 解压 序列化 反序列化

LASzip

Rapidlasso GmbH 的免费开源产品,可以将快速将庞大的 LAS 文件转换为紧凑的 LAZ 文件而不会丢失信息。
LASzip 是 2012 年地理空间世界论坛获得激光雷达处理技术创新奖,也是 2012 年 INTERGEO 创新产品的亚军。
图片中是用PDAL工具压缩后和压缩前的大小对比。压缩后是原数据的0.498倍。

paper

paper简介:LASzip压缩器对点集进行分块压缩,由四部分组成:POINT10,GPSTIME10,RGB12和WAVEPACKET13。
解压和压缩过程是借鉴的 这篇文章
,是用一个类似于kdtree/Octree的分类方式,简单来说就是,对线性增量即熵求最优,也是分为8个维度然后每个维度的线性预测差值区间为,可以构造类似与八叉树的结构进行编码。

软件是开源的,且向后兼容。

且允许在压缩后的laz文件中查找点,每5万点分成一个压缩快,一个文件由多个压缩块组成。

point10的压缩,我们以Return Number(r)和Number of Returns of Pulse(n)重构为例,具体是根据一些二进制掩码什么的重构的,重构示意:

重构后的字段信息:

还会生成一个l阵,l = n - r

其余的也是会生成类似的矩阵

MEPG

MEPG是做视频压缩为主的公司,在VR相关工作中,开发了点云压缩技术——PCC(point cloud compression)。发展出了基于视频的PCC(V-PCC)和基于几何的PCC(G-PCC)。

分别介绍V-PCC和G-PCC。

V-PCC:

其技术是基于之前开发的视频压缩技术,视频流是二维图像数据,故先将3D点云投影到2D上。基础版本的V-PCC发表在《An emerging point cloud compression standard》上。

投影方式是基于±x, ± y, ± z的正交投影,根据点的法向量确定最相关的投影方向。为了避免三维到二维转换中,不同三维点对应同一二维平面点,将不同距离的点投影到不同的二维图像中,看成多个视频流。投影过程中还有一些其他小的Tricks,比如考虑深度值的变换差值、空点插值等,以及插值造成的重复点的剪枝等。

这种形式类似于视频,可以进行分辨率之类的设置,可以有损也可以无损压缩,中间的一些Tricks可能造成,压缩前后点云数量不一致的情况(本人推测)。

G-PCC

这种方式是需要先进行体素化的,本身体素化的过程就是有损的,其后面的过程可以保证无损,但整个过程注定是有损的。其编码方式借鉴了八叉树,根据点云每个体素内的占用与否编码成二进制,占用为1不占用为0。

这种方式的压缩有三种编码方式供选择,(a) RAHT; (b) Predicting Transform;(c) Lifting Transform,其中只有Predicting Transform,是无损的。
这里只介绍无损的Predicting Transform,它是一种基于插值的分层最近邻预测方案。他有一种特定的欧式距离的点的划分准则,下图划分了三个欧式距离范围层级,层级越高分辨率越低(L),层级越低细化程度越高(H)。

查找最近点的时候先在同一层级中查找,再去往下一个相邻层级。
编码的时候先是最高层级的往低层级的分裂,层级属性为分辨率L(N)和细化程度H(N),同时会根据规则生成一个预测值P(N)和偏差值D(N),在解码时用同样的数值反变换即可。

Lastool读取laz点云相关代码梳理

测试结果

测试目标 Darco lz4 lazperf laszip
文件格式(大小、点数) 压缩前.ply(818kb 7w点)——压缩后.drc 压缩前.las(262M左右 809w点)——压缩后.lz4 压缩前.las(262M左右 809w点)——压缩后.laz 压缩前.las(279M左右 984w点)——压缩后.laz
压缩率 50%(-qp = 20) 43%(-qp = 16) 33%(-qp = 13(默认数值)) 总体在百分之30-50左右比较看数据(各字段二进制编码相似程度) 25%左右 25%左右
误差 <万分之一(-qp = 20) 万分之三(-qp = 16) 千分之二(-qp = 13(默认数值)) 无损 无损 无损
压缩时间 441ms(-qp = 20) 309ms(-qp = 16) 290ms(-qp = 13) 3979ms 直接保存为laz格式,不计时间,不做实时存取,直接读.laz 直接保存为laz格式,不计时间,不做实时存取,直接读.laz
解压时间 131ms(-qp = 20) 121ms(-qp = 16) 113ms(-qp = 13) 445ms 直接读取遍历所有x坐标点,laz:60969ms las:3018ms 直接读取遍历所有x坐标点,laz:18511ms las:4051ms
注:后面会出laslayer相关的文章,是一种IO提速方式,会让laszip下laz读取的时间大大降低。这里测试的是没做过laslayers处理的laz,进行坐标遍历
posted @ 2021-07-23 20:13  Lachiven  阅读(2256)  评论(0编辑  收藏  举报