文章导读

点云滤波通常是点云预处理的第一步,只有将噪声点、离群点、孔洞、数据压缩等做相关处理后,才能更好地进行特征提取、配准、曲面重建、可视化等高阶应用,本文针对点云的几种滤波器进行分析和对比。

目录

  • 点云滤波的介绍
  • 几种常用滤波器
  • 对比与总结

点云滤波的介绍

在获取点云数据时,由于设备精度、操作者经验、环境因素等带来的影响,点云数据中将不可避免地出现一些噪声点。而滤波的作用就是利用数据的低频特性剔除离群数据,并进行数据平滑或者提取特定频段特征。

什么时候需要做点云滤波?

  1. 点云数据密度不规则需要平滑
  2. 因为遮挡等问题造成离群点需要去除
  3. 大量数据需要进行下采样
  4. 噪音数据需要去除

几种常用滤波器

常用的点云滤波器包括以下几种:

  • 直通滤波器
  • 条件滤波器
  • 高斯滤波器
  • 双边滤波器
  • 体素滤波器
  • 统计滤波器
  • 半径滤波器
  • 频率滤波器

从功能层面可以分为三类使用,直通和条件滤波用于预处理的最前端提取出感兴趣区域;体素滤波用于对密集点云进行下采样减少数据量;其他滤波器用于平滑点云同时去除离散点。

1. 直通滤波器

原理:在点云的指定维度上设置一个阈值范围,将这个维度上的数据分为在阈值范围内与不在阈值范围内,从而选择过滤与否。能够快速过滤掉用户自定义区间范围内的点云。

在实际应用中,由于激光扫描采集的距离较远,但是根据功能需求的不同可能只关心一定区域内的数据,比如低速物流车的运营场景,可能在X方向只关心前后60米,Y方向只关心左右20米的范围。此时就可以利用直通滤波器提取出感兴趣区域,可较快剔除部分点云,达到第一步粗处理的目的。

特点:根据人工设定的先验范围约束或者借助外部约束,直观的缩小关注的空间范围,减少后续计算量。

2. 条件滤波器

原理:通过设定滤波条件进行滤波,类似于分段函数,判断点云是否在规则的范围则中,如果不在则舍弃。上述的直通滤波器就是一种较简单的条件滤波器。

如下图所示:采用直通滤波器或者条件滤波器均能够完成提取感兴趣区域的功能。

ccpointcloud按索引删除点云_ccpointcloud按索引删除点云

3. 高斯滤波器

原理:采用加权平均方式的一种非线性滤波器,在指定域内的权重是根据欧式距离的高斯分布,通过权重加权平均的方式得到当前点的滤波后的点。

特点:利用标准差去噪,适用于呈正态分布的数据平滑效果较好,但是边缘角点也会被较大的平滑。

4. 双边滤波器

原理:通过取邻近采样点的加权平均来修正当前采样点的位置,在高斯滤波器只考虑空间域点的位置基础上,增加了维度上的权重。一定程度上弥补了高斯滤波的缺点。

特点:既有效地对空间三维模型表面进行降噪,又可以保持点云数据中的几何特征信息,避免三维点云数据被过渡光滑。但是只适用于有序点云。

5. 体素滤波器

原理:通过对输入的点云数据创建一个三维体素栅格,然后在每个体素内,用体素中所有点的重心来近似显示体素中的其他点,这样该体素内所有点就用一个重心点最终表示。

也有另外一种相似的表达形式:利用每一个体素立方体的中心来近似该体素立方体内的所有点,相比上一种方法计算速度较快,但是损失了原始点云局部形态的精细度。

特点:可以达到向下采样同时不破坏点云本身几何结构的功能。点云几何结构不仅是宏观的几何外形,也包括其微观的排列方式,比如横向相似的尺寸,纵向相同的距离。随机下采样虽然效率比体素网格滤波器高,但会破坏点云微观结构。

如下图所示:经过体素网格下采样后的行人,点云会变得更稀疏。主要是针对线束比较高的激光雷达或者多个雷达数据叠加时,平滑点云间隔的情况使用。

ccpointcloud按索引删除点云_python_02

在将统计滤波器和半径滤波器之前,提到一个离散群点的概念,那么什么是离散群点?

在获取点云数据时,由于受到外界干扰如视线遮挡,障碍物等因素的影响,点云数据中存在着一些距离主题点云较远的离散点,即离散群点。

如下图所示:由于设备采集或者障碍物遮挡等问题或导致在三维空间中出现零星的点集。

ccpointcloud按索引删除点云_人工智能_03

离散群点有什么影响?

离散群点会破坏点云的表达准确性。使得局部点云特征(例如表面法线或曲率变化)的估计变得非常复杂,这往往导致错误的估计结果,从而可能导致点云配准失败。

6. 统计滤波器

原理:对每个点的邻域进行一个统计分析,并修剪掉那些不符合一定标准的点。我们的稀疏离群点移除方法基于在输入数据中对点到临近点的距离分布的计算。

具体方法如下:

计算每个点到其最近的k个点平均距离,(假设得到的结果是一个高斯分布,其形状是由均值和标准差决定),那么平均距离在标准范围之外的点,可以被定义为离群点并从数据中去除。

特点:主要是根据密度去除离群点,对密度差异较大的离群点去除效果较好。

7. 半径滤波器

原理:与统计滤波器类似,只是操作更加暴力直观,根据空间点半径范围临近点数量来滤波。

具体方法如下:

在点云数据中以某点为中心画一个圆计算落在该圆中点的数量,当数量大于给定值时,则保留该点,数量小于给定值则剔除该点。此算法运行速度快,依序迭代留下的点一定是最密集的,但是圆的半径和圆内点的数目都需要人工指定。

特点:用于去除离群点,在一定程度上可以用来筛选边缘点。

如下图所示:采用上述两种滤波器可以提出掉零星的点集。

ccpointcloud按索引删除点云_ccpointcloud按索引删除点云_04

8. 频率滤波器

原理:在点云处理中,点云法线向量差为点云所表达的信号。用点云的曲率来表示频率信息,如果某处点云曲率大,则点云表达的是一个变化高频的信号。如果点云曲率小,则点云表达的是一个不变低频的信号。例如:地面曲率小,它表达的信息量也小;障碍物处曲率大,频率就会更高。

以DoN算法为例,目的是在去除点云低频滤波,低频信息(例如建筑物墙面,地面)往往会对分割产生干扰,高频信息(例如建筑物窗框,路面障碍锥)往往尺度上很小,直接采用基于临近信息的滤波器会将此类信息合并至墙面或路面中。所以DoN算法利用了多尺度空间的思想。

具体如下:

  1. 在小尺度上计算点云法线1
  2. 在大尺度上计算点云法线2
  3. 法线1-法线2
  4. 滤去3中值较小的点
  5. 根据第三步得到的法线差,进行欧式分割

特点:在小尺度上是可以对高频信息进行检测的,可以很好的小尺度高频信息。其在大规模点云中优势尤其明显。

对比与总结

滤波器主要是通过局部计算的方式,获得一个响应值,然后根据响应值调整点云,比如位置调整,保留或删除某点。

当一种滤波无法完整达到预处理要求时,可以通过组装多个滤波器达到更复杂的功能。比如小编在实际应用中借助于车辆运动轨迹和路沿检测作为感兴趣区域的先验知识进行直通滤波;接着根据激光雷达的线束多少调整统计滤波参数过滤离群点;由于使用了两颗激光雷达做数据拼接,最后通过体素降采样平滑点的间隔。