2. 点云滤波概述:滤波的目的与意义、常见噪声类型、滤波算法分类
大家好,我是你们的老朋友。今天咱们正式进入点云处理的第一道门槛——滤波。
说实话,我刚开始接触点云那会儿,拿到数据就直接往上怼算法,结果经常被各种奇怪的结果搞得一头雾水。后来才明白,点云滤波不是可有可无的预处理,而是决定整个处理流程成败的关键一步。你想想看,如果原始数据里全是噪声和离群点,后面再怎么折腾也是白搭。
2.1 滤波的目的与意义
滤波说白了就三件事:去噪、降采样、保结构。
- 去噪:把传感器采集过程中混入的乱七八糟的点剔除掉。比如激光雷达扫到玻璃上产生的反射点,或者深度相机在边缘处产生的飞点。
- 降采样:原始点云动不动就几百万个点,直接处理太慢了。滤波可以帮你保留关键信息的同时,把数据量降下来。
- 保结构:这是最容易被忽略的一点。滤波不能把物体的边缘、棱角给磨平了,否则后面做特征提取就废了。
核心观点:滤波不是简单的"删点",而是在"保留有用信息"和"去除无用噪声"之间找平衡。我见过太多人把滤波参数调得太狠,结果点云变成了一团浆糊。
2.2 常见噪声类型
不同的噪声,处理方式完全不同。咱们得先认识它们,才能对症下药。
2.2.1 离群点
离群点就是那些"孤零零"的点,周围没什么邻居。产生原因很多:
- 激光打到镜面或玻璃上,产生反射
- 传感器抖动或运动模糊
- 环境中的飞虫、灰尘
我在做自动驾驶项目时遇到过这种情况:一辆车停在玻璃幕墙旁边,结果雷达扫出来的点云里,玻璃后面凭空多出一堆点。这就是典型的离群点。处理这类噪声,统计滤波和半径滤波是首选。
2.2.2 高斯噪声
高斯噪声是传感器本身的"底噪",每个点的位置都会有一点点随机偏移。这种噪声的特点是:
- 分布服从高斯分布
- 幅度不大,但无处不在
- 对平面拟合、法向量估计影响很大
我记得有一次做三维重建,点云看起来挺干净的,但拟合出来的平面总是歪歪扭扭。排查了半天,才发现是高斯噪声在作怪。处理高斯噪声,体素滤波和双边滤波效果不错。
2.2.3 混叠点
混叠点是最让人头疼的。它通常出现在物体边缘或深度突变的地方。比如:
- 前景和背景交界处
- 物体边缘的"拖尾"现象
- 运动物体的模糊区域
避坑指南:我曾经在点云配准时,因为没处理混叠点,导致ICP算法死活收敛不到正确位置。后来发现是边缘的混叠点把匹配给带偏了。所以,混叠点一定要在滤波阶段就处理掉,别留到后面。
2.3 滤波算法分类
滤波算法五花八门,但按原理可以分成几大类。我画了一张图,帮大家理清思路:
2.3.1 基于统计的方法
这类方法假设点云中点的分布符合某种统计规律。比如:
- 统计滤波:计算每个点到其K近邻的平均距离,如果距离超过阈值(均值+若干倍标准差),就判定为离群点
- 高斯滤波:用高斯核函数对点云进行平滑,适合处理高斯噪声
小技巧:统计滤波的阈值参数怎么调?我一般先看数据,如果离群点比较稀疏,标准差倍数设2-3就够了。如果噪声严重,可以放宽到4-5。但别设太大,否则会把正常点也删掉。
2.3.2 基于邻域的方法
这类方法更直观——看一个点周围有没有足够的邻居。代表算法:
- 半径滤波:在指定半径内,如果邻居点数量少于阈值,就删除
- 体素滤波:把空间划分成小立方体,每个立方体只保留一个代表点(通常是重心或中心)
- 双边滤波:同时考虑空间距离和特征相似度,能在去噪的同时保留边缘
体素滤波是我用得最多的降采样方法。它的参数只有一个——体素大小。体素越大,降采样越狠,但细节丢失也越多。我一般从0.01米开始试,根据效果慢慢调。
2.3.3 基于投影的方法
这类方法先把3D点云投影到2D平面上,然后在2D空间做滤波。好处是可以利用成熟的图像处理算法。比如:
- 把点云投影成深度图,然后用中值滤波、高斯滤波处理
- 处理完再反投影回3D空间
嗯,这里要注意:投影法会丢失一些3D几何信息,所以更适合结构化场景(比如室内、道路)。
2.4 如何选择滤波算法?
没有万能算法,关键看你的数据和应用场景。我整理了一个速查表:
| 噪声类型 | 推荐算法 | 适用场景 | 注意事项 |
|---|---|---|---|
| 离群点 | 统计滤波、半径滤波 | 室外大场景、激光雷达数据 | 阈值要调,别误删正常点 |
| 高斯噪声 | 体素滤波、双边滤波 | 深度相机数据、室内重建 | 体素大小影响细节保留 |
| 混叠点 | 半径滤波 + 边缘检测 | 物体边缘、运动场景 | 需要结合几何特征判断 |
| 综合噪声 | 组合使用(先统计滤波,再体素滤波) | 大多数实际项目 | 注意处理顺序 |
我的经验:实际项目中,我通常先用统计滤波把明显的离群点干掉,再用体素滤波降采样。如果对边缘保留有要求,最后再加一步双边滤波。这个组合拳能应对80%以上的场景。
好了,这一章的内容就到这里。滤波是点云处理的基本功,看似简单,但参数调优需要大量实践。建议大家多拿自己的数据试试,慢慢就能找到感觉。