APP下载

非一致性稀疏采样的LiDAR点云压缩方法

2021-06-16陈元相陈建郑明魁陈志峰

关键词:像素编码距离

陈元相, 陈建, 郑明魁, 陈志峰

(福州大学物理与信息工程学院, 福建 福州 350108)

0 引言

随着3D感知和获取技术的进步, 虚拟现实(virtual reality, VR)/增强现实(augmented reality, AR)/混合现实(mixed reality, MR)、 移动地图、 文物扫描、 智慧城市、 机器人和自动驾驶等新兴智能产业飞速发展, 3D点云已经成为这些产业中一种流行的数据存储和传输的格式. 在智能驾驶和移动机器人领域, 3D 激光雷达(light detection and ranging, LiDAR)传感器作为关键的点云采集设备, 对于真实环境的数字感知, 以及在定位、 路径规划[1]和障碍物检测[2]等应用中起着至关重要的作用. 存储和共享LiDAR点云是智能交通及车路协同系统的必然要求. 然而, 在实际应用中, 点云数据面临着与2D应用相同的带宽、 存储和压缩限制, 以及相似的质量水平期望, 3D技术所需处理的点云数据量通常比相似分辨率的2D媒体应用至少高一个数量级. 因而, 研究高效的点云压缩(point cloud compression, PCC)解决方案对于自动驾驶、 高级辅助驾驶等相关的产业具有重要的科学意义.

本文关注于单帧LiDAR点云压缩问题, 因为LiDAR点云序列的基本组成是单帧点云, 在点云后续的帧间预测中, 为了有效利用邻近帧之间的时域相关性, 使用先前已经编码的重建帧作为参考帧(关键帧),对后续的编码帧进行预测. 对关键帧的压缩是帧间预测基本前提, 高性能的单帧压缩方案不仅可以为后续帧提供高质量的参考帧, 提高帧间预测准确度, 而且可以提升点云序列压缩率与性能. 单帧压缩是点云序列压缩的重要组成部分, 为此本文提出一种新颖的高效有损压缩方法. 该方法通过将LiDAR点云分割为地面和非地面点云, 对两部分点云区别对待, 采用不同程度的稀疏采样去冗余处理, 并通过坐标转换将点云从笛卡尔坐标转为球坐标, 之后映射为二维矩阵的距离图像. 为了增加相邻像素的相关性, 通过Morton码对距离图像进行更为紧凑的表示, 最终利用经典图像编码算法完成进一步压缩.

1 相关工作

近年来, 3D点云压缩受到了广泛的关注, 越来越多的学者致力于点云压缩的研究工作中, 并发表了许多相关论文[3-14]. 根据点云数据处理格式的不同, 压缩算法可以大致分为两类.

利用树结构是直接压缩点云的主流压缩方式. 八叉树是用于对3D点云进行空间划分的流行数据结构. 这是视频编码中四叉树的3D扩展[3]. Mekuria等[4]通过对占据码进行熵编码来压缩八叉树中的几何结构; 将颜色映射到2D网格后, 对颜色属性进行图像压缩; 同时, 使用迭代最近点算法来计算连续帧中兼容宏块之间的刚性变换进行帧间预测. 此方法可以作为点云压缩的通用框架. 后续研究继续针对3D点云的帧内和帧间压缩展开. Ainala等[5]使用增强层改进单帧点云压缩框架. 在固定八叉树深度之后, 切换到使用平面投影近似法的新图层, 对更高层次的细节编码, 提高压缩性能和运行速度. Subramanyam等[3]在之前的通用点云压缩框架[6]基础上对增强层在帧间预测进行扩展, 通过使用PCL中的双缓冲八叉树结构执行帧间预测. 在八叉树的基础上, 与新颖的基于图的变换方法相结合, 针对静态点云几何文献[7]将点云编码为基础层和增强层, 对基础层使用基于八叉树的方法, 对增强层利用了层间预测和基于图的变换, 最后对残差和变换系数进行转换和编码. 运动图像专家组(MPEG)开发的G-PCC[8]也是通过利用基于八叉树的编码策略来压缩点云几何信息, 是目前最先进的基于几何的点云编解码器, 主要针对静态和动态捕获点云.

另一类方法通过将3D点云数据转换为2D格式进行压缩, 这种压缩方法并未利用点云的3D特性. 通过将点云映射到全景图, Houshiar等[9]提出基于传统图像压缩的3D点云压缩方案. Tu等[10]将LiDAR数据无损转换为距离图像, 然后使用标准图像或视频编码技术来减少数据量. 针对距离图像序列, 他们基于同步定位与建图(simultaneous localization and mapping, SLAM)思想, 及结合点云的3D特性以及车辆的位置和方向信息, 将I帧通过运动估计来预测B帧[11], 以有效提升压缩性能. 在转为2D格式的基础上, 借助由数据驱动的深度学习方法的强大特征学习能力, Tu等[12]使用循环神经网络和残差块构建编码网络、 二值化器和解码网络组成压缩网络从3D LiDAR逐步压缩一帧点云数据. 为了有效地压缩动态点云数据, 减少空间和时间冗余, Tu等[13]在之前将3D点云信息无损存储在2D矩阵中的基础上, 使用U-net的实时流点云数据压缩方法, 将点云数据转换为类似视频的格式. 通过将一部分帧指定为参考帧, 使用U-net计算光流, 对参考帧中间的点云帧进行插值, 有效减少了时间冗余, 达到更高的压缩率. Sun等[14]对距离图像执行聚类操作将3D距离数据分割为不同的对象, 基于分割结果的距离图像预测并编码轮廓图与残差, 合理利用点云数据的空间结构并消除了空间冗余.

上述方法可以显著减小点云数据的大小, 并且能够用于某些特定应用. 但是, 它们中很少是专门为LiDAR点云数据特性而设计的, 对LiDAR点云进行压缩的效率较低. 本文借鉴上述编码技术中的3D转2D、 占据码等思想, 将用于机载航拍点云的渐进式形态滤波器[19]应用于车载LiDAR点云地面与非地面分割, 结合地面与非地面区别压缩、 Morton排序等的思想, 提出一种针对单帧LiDAR点云的新颖编码方案. 首先对分割后的地面和非地面点云采取不同强度采样策略, 其次, 在3D转换为距离图的基础上, 采用占据图和Morton排序方案进行降维处理, 最后结合图像编码进行进一步压缩. 本文的方法可以在很大程度上消除点云空间冗余且有较高的压缩性能.

2 点云压缩方案

在本节中, 提出单帧LiDAR点云混合编码/解码框架. 编码端: 输入的LiDAR点云由渐进形态学滤波器分割为非地面点云和地面点云两部分. 其次, 分割点云经非一致性稀疏采样, 对地面点云采用较大间隔进行采样, 对非地面点使用小间隔进行采样, 然后由坐标转换及映射将3D的数据转为2D距离图形式, 大幅度降低了数据冗余. 再则, 距离图的空像素与非空像素的分布借助1 bit深度的占据图进行表示, 距离图经其占据图Morton排序表示为紧凑的16 bit深度的向量. 最后, 将距离向量及占据图压缩为JPEG、 PNG码流, 实现进一步压缩. 解码端: 解码为编码的逆过程. 图1给出该方法的编码流程图, 其中平行四边形代表数据, 矩形代表处理步骤.

图1 LiDAR点云压缩编码框架图Fig.1 LiDAR point cloud compression coding framework

2.1 基于渐进式形态滤波器的LiDAR点云分割

图2 车载LiDAR捕获点云示意图Fig.2 Schematic diagram of point cloud captured by vehicle-mounted LiDAR

车载LiDAR点云的采集过程如图2所示, 以Velodyne HDL-64E为例, LiDAR固定于车上方并做360°旋转, 对26.8°垂直领域内的环境进行扫描, 如此采集得到一帧点云. 基于此过程以及LiDAR的结构, LiDAR发射的探测信号大多数由地面反射回来并被接收器所接收. 实验统计, 在一帧点云中地面点占比超过50%, 而密集的地面点云在自动驾驶中提供的信息有限. 路径规划和障碍物检测通常是由非地面点云来提供位置信息和物体信息. 因而, 将地面和非地面点云分割, 而后对两者进行不同处理可充分降低点云空间冗余.

文献[15]中设计了从机载LiDAR数据中除去非地面测量值的渐进式形态滤波器, 其思想是通过逐渐增加滤波器窗口的大小并结合高度差阈值, 删除植被、 车辆和建筑物等非地面点, 而地面数据将被保留. 数学形态滤波器通常用于无人机等在高空捕获的点云, 根据观测对象的高度差异从点云生成的灰度图像中去除非地面物体. 数学形态学具备强大的功能, 可以处理图像和信息提取中的各种问题, 例如边缘检测、 道路检测. 数学形态学由两个基本运算组成, 即膨胀和腐蚀, 用于放大(扩张)或缩小(侵蚀)图像中的特征尺寸. 膨胀和腐蚀操作可以组合为开启和关闭操作.

设G(x,y)表示二维灰度图像中坐标位置(x,y)处的灰度值,B(x,y)表示其结构元素.在灰度形态中, 在DB邻域内的膨胀和腐蚀分别定义为:

(G⊕B)(x,y)=max{G(x-i,y-j)+B(i,j)|(i,j)∈DB}

(1)

(GΘB)(x,y)=min{G(x-1,y-j)-B(i,j)|(i,j)∈DB}

(2)

将这些概念扩展到连续表面的分析中, 对LiDAR测量数据p(x,y,z), 高度z在x和y处的膨胀定义为:

(3)

式中: 点(xp,yp,zp)表示窗口w内p的邻域坐标.窗口可为一维线性或二维矩形或其他形状.膨胀输出为p的邻域最大高度值.侵蚀与膨胀类似, 其定义为:

(4)

侵蚀和膨胀的结合产生用于过滤激光雷达数据的开启和关闭操作. 侵蚀操作删除了尺寸小于窗口尺寸的对象, 而膨胀恢复了大型对象的形状. 树木、 汽车和建筑物等非地面物体的标高通常高于周围地面的标高, 将LiDAR点云按照高程转换为规则灰度网格图像, 可通过改变灰度来识别建筑物、 汽车和树木的形状. 渐进形态滤波器通过逐渐增加形态过滤器的窗口大小, 并根据建筑物和地形的高程变化的差异, 将建筑物和地面的测量值分开. 通过逐渐增加窗口大小并重复应用打开操作直到窗口大小大于最大建筑物的大小, 上述过程同样作用于树木、 汽车等非地面物体. 由此地面与非地面得以分离. 鉴于机载点云与车载LiDAR点云的差异, 通过实验对窗口大小和高度阈值的修改与调整, 使渐进形态滤波器适用于车载LiDAR点云地面与非地面分割. 地面和非地面分离效果如图3所示.

(a) 原始点云

(b) 地面点云

(c) 非地面点云

2.2 点云非一致性稀疏化采样

P={xi,yi,zi,i=1∶1∶N}

(5)

(6)

2.3 坐标变换与距离图映射

图4 球坐标系Fig.4 Spherical coordinate system

激光扫描仪覆盖固定的垂直度数和360°水平视场, 具有固定数目的光束和角分辨率. 由于原始数据是通过测量从激光雷达中心到物体的径向距离而获得的, 因此对于LiDAR点云, 与传统的笛卡尔坐标系相比, 采用球面坐标系可以更好地适应其数据的特性, 可以将其转换为距离图像. 完成此转换不仅不会损失原有的空间位置信息, 而且可以减少近四分之三的数据量. 相应的球坐标如图4所示, 通过下式完成坐标转换.

(7)

(8)

(9)

式中:ωi为偏航角;θi为俯仰角;ri为点到中心的距离, 下标i表示点的索引.

利用LiDAR点云的特点, 将球坐标中的点映射到2D距离图, 将偏航角映射为距离图像像素的横坐标, 俯仰角映射为距离图像像素的纵坐标, 距离值映射为像素值. 映射过程如下式.

(10)

(11)

P(pxi,pyi)=round(ri)

(12)

在式(10)~(11)中,x_quan、y_quan表示偏航角和俯仰角的量化系数, 两者决定距离图的分辨率大小, 通过调整量化系数控制压缩率和压缩性能, 以此实现点云压缩有损程度的控制. 此映射方式适用于所有的3D格式的LiDAR点云.

2.4 基于Morton的范围向量转换

在球坐标映射为距离图像中, 由于LiDAR扫描特性、 点云的下采样稀疏化以及偏航角及俯仰角的量化等因素和处理过程, 在距离图中存在大量的空像素, 相邻点之间的空间相关性将丢失. 若直接对距离图进行压缩编码, 则需要更多的比特, 即更高的码率. 受八叉树中3D占据码的启发, 通过占据码对2D的距离图的每个像素是否为空像素进行表示, 由此生成一张与距离图相同分辨率的占据图.

(13)

式中:O(px,py)表示在占据图中(px,py)位置的像素值, 值为0表示对应距离图相应位置没有点, 值为1表示有点. 然后通过下式计算占据图上各个像素的Morton码, 将二维中的点坐标用一个一维数值表示. Morton码值之间的相邻性可以表示二维像素的相邻性, 通过对Morton码排序, 同时也是对Morton码对应的点进行排序, 由此把距离图像像素值根据对应Morton码的大小排列为一维向量, 节省了距离图的空间.

(14)

(15)

式中:xl,yl∈{0, 1}, 式(14)表示将位置转换为二进制形式. 距离图由此转化为占更小存储空间的1 bit深度的二维占据图和一个16 bit深度的距离向量.

2.5 图像压缩

基于JPEG的压缩方法致力于减少空间冗余, 在JPEG算法中, 包含一种无损算法和三种有损算法, 鉴于LIDAR点云的应用场景需求, 基于DPCM的JPEG无损压缩算法更适用于16 bit深度距离向量, 其采用预测编码和哈夫曼编码(或算术编码)以保证重建图像与原图像完全相同. 此外, 采用便携式网络图形(PNG)[16]对1 bit深度占据图像进行无损压缩可以达到更高压缩率. 由此通过图像编码对点云进行进一步的压缩.

3 实验结果

3.1 客观质量评估指标

为了定量评估本文方法的压缩性能, 使用每点比特数(bits per point, bpp)来表示点云压缩后的码率, 并使用点对点均方距离的峰值信噪比(peak signal to noise ratio, PSNR)[17]作为度量标准.

原始点云Por是一组无严格排序的N点的集合, 其中p包含点的位置信息.解码点云Pde为一组无严格排序的M点的集合. 对于有损压缩, 解码点数小于原始点数.

Por={(pi):i=0, …,N-1}

(16)

Pde={(pi):i=0, …,M-1}

(17)

对于每个在Pde中的点pde, 在Por找到最近邻点, 记做pmn_or. 通过基于L2距离范数的K-d树算法计算得到最近邻点[17]. 下式定义了几何属性的均方误差(mean squared error, MSE).

(18)

基于MSE, 下式给出了几何属性的PSNR的计算方法.

(19)

3.2 压缩性能

实验的测试序列主要来自广泛应用于自动驾驶领域的KITTI测试集. 图5给出了本文的方法与点云压缩锚点[4]、 谷歌的Draco[18]以及由MPEG开发的目前最先进的基于几何的编码器G-PCC[19]对比的性能曲线. 图中g5o3和g5o2表示地面与非地面点云的采样间隔, 前者分别为5和3, 后者分别为5和2. 实验在同等条件下进行, 对比结果由PSNR-码率曲线给出. 本文在KITTI数据集五个场景上进行实验: 城市, 校园, 道路, 居民区, 行人. 较大的PSNR和较小的码率意味着更好的压缩性能, 因为可以以较小的宽带实现较高的PSNR. 在KITTI数据集的5个测试序列中, 数据均为LiDAR获取的原始数据, 尽管不同场景的性能略有差距, 本文方法和其他对比方法均表现较稳定. 在相同PSNR重建质量下, 本文的方法仅需要更小的码率, 性能显著优于锚点[4]和Draco[18]. 当码率≥2.5 bpp时, 本文方法优于G-PCC[19], 可以达到更高的重建质量; 在较低码率时, 本文算法的压缩性能略低于G-PCC, 这是由于低码率时偏航角和俯仰角的量化系数较小, 在其量化后四舍五入时引入了较大的舍入误差. 总体上, 本文所提出的方案有着较佳的压缩性能.

(a) 城市

(b) 校园

(c) 道路

(d) 居民区

(e)行人

4 结语

本文针对自动驾驶领域提出一种新颖的通用LiDAR点云有损压缩框架. 基于地面点云占比大且高度冗余的特点, 对单帧点云采取“分而治之”策略, 将3D点云中地面和非地面点进行分割, 并分别进行不同强度的稀疏化处理, 而后经球坐标转换后映射为二维图像, 并利用Morton码表示为空间更小的一维向量, 最后进行图像压缩. 实验结果表明, 本文的方法明显优于文献[4,18-19]的方法. 然而, 目前的编码方案仅针对单帧点云. 本研究的下一步目标是压缩点云序列, 在单帧点云压缩框架基础上, 拓展对后续编码帧高效的预测算法, 这将具有更广阔的应用前景. 例如, 结合深度学习探索高效的点云帧间预测技术, 降低时间冗余, 以达到更高压缩性能.

猜你喜欢

像素编码距离
像素前线之“幻影”2000
基于SAR-SIFT和快速稀疏编码的合成孔径雷达图像配准
《全元诗》未编码疑难字考辨十五则
子带编码在图像压缩编码中的应用
“像素”仙人掌
算距离
Genome and healthcare
ÉVOLUTIONDIGAE Style de vie tactile
高像素不是全部
每次失败都会距离成功更近一步