4. 点云预处理
原始点云从激光雷达、深度相机或结构光设备输出后,往往不能直接送入配准与融合模块。它通常带有测量噪声、密度不均、离群点、地面点以及数量庞大的冗余点。若跳过预处理,配准算法会因错误对应点而收敛到错误位姿,融合结果也会出现重影与拖尾。因此,点云预处理是三维感知流水线中决定后续精度与实时性的关键环节。
一、核心原理:为什么必须做预处理
点云配准依赖点与点之间的对应关系。噪声点会让法向量估计产生偏差,离群点会制造虚假对应,地面点会在配准时把两帧“拉平”而掩盖真实运动,点云密度过高则会让最近邻搜索耗时急剧上升。预处理正是从这四个方向降低配准的歧义性。
从信号角度看,点云是三维空间中的离散采样。滤波去噪相当于抑制高频测量噪声;下采样相当于降低采样率但保留几何骨架;离群点去除相当于剔除不符合局部统计规律的异常样本;地面分割相当于按语义把点云分成“支撑面”和“目标体”两类。四者顺序不同,效果差异明显。
二、方法流程:四步预处理的标准顺序
工程上推荐的处理顺序是:先粗去噪,再下采样,然后离群点去除,最后地面分割。原因在于:先下采样能显著降低后续统计滤波与 RANSAC 的计算量;而离群点去除放在下采样之后,可以避免稀疏区域被误删;地面分割放在最后,是因为它需要相对干净且密度均匀的点云来拟合平面。
- 滤波去噪:体素栅格滤波用体素内点云质心代替全部点,既降噪又降采样;统计滤波计算每个点到 k 个近邻的平均距离,剔除超出全局均值加 σ 倍标准差的点。
- 下采样:体素降采样最常用,通过设置体素边长控制输出密度;对特征敏感的场景可用曲率采样,在边缘与角点保留更多点。
- 离群点去除:统计离群点去除(SOR)适合去除稀疏噪声;半径离群点去除(ROR)适合去除孤立飞点,二者常组合使用。
- 地面分割:RANSAC 拟合最大平面作为地面,结合法向量与高度阈值剔除地面点,保留墙面、车辆、行人等目标点。
三、代码实操:PCL 风格预处理片段
下面以 PCL 风格伪代码展示一条完整预处理链,参数需按传感器型号与场景尺度调整:
// 1. 体素栅格滤波:降噪 + 降采样
pcl::VoxelGrid<PointT> vg;
vg.setInputCloud(cloud_in);
vg.setLeafSize(0.10f, 0.10f, 0.10f); // 10cm 体素
vg.filter(*cloud_voxel);
// 2. 统计离群点去除
pcl::StatisticalOutlierRemoval<PointT> sor;
sor.setInputCloud(cloud_voxel);
sor.setMeanK(30); // 近邻数
sor.setStddevMulThresh(1.0); // 标准差倍数
sor.filter(*cloud_clean);
// 3. RANSAC 地面分割
pcl::SACSegmentation<PointT> seg;
seg.setOptimizeCoefficients(true);
seg.setModelType(pcl::SACMODEL_PLANE);
seg.setMethodType(pcl::SAC_RANSAC);
seg.setDistanceThreshold(0.03); // 3cm 平面内点阈值
seg.setInputCloud(cloud_clean);
seg.segment(*inliers, *coefficients); // 地面内点索引
// 4. 提取非地面点,送入配准
pcl::ExtractIndices<PointT> ext;
ext.setInputCloud(cloud_clean);
ext.setIndices(inliers);
ext.setNegative(true); // 取反:保留非地面
ext.filter(*cloud_object);
四、案例与场景:室内建图与室外感知的差异
在室内 SLAM 场景中,地面平整、结构规则,RANSAC 平面分割效果稳定,体素边长可设为 0.05 m,SOR 的 k 取 20~30。此时地面点占比高,分割后能显著减少配准计算量。
在室外自动驾驶场景中,地面存在坡度与起伏,单一平面假设会失效。此时应改用分段平面拟合或基于法向量与坡度的地面分割,并保留地面点用于定位,仅将非地面点送入目标配准。下采样体素可放大到 0.15~0.25 m,以应对远距离稀疏点云。
| 处理步骤 | 典型方法 | 关键参数 | 主要作用 |
|---|---|---|---|
| 滤波去噪 | 体素栅格、统计滤波 | 体素边长、k、σ | 抑制测量噪声,平滑局部表面 |
| 下采样 | 体素降采样、曲率采样 | 体素边长、采样比例 | 降低点数,提升配准速度 |
| 离群点去除 | SOR、ROR | 近邻数、半径、阈值 | 剔除飞点与虚假对应 |
| 地面分割 | RANSAC、坡度法 | 距离阈值、迭代次数 | 分离支撑面与目标体 |
五、误区与复盘
复盘时应关注三个指标:预处理后点数与原始点数的比例、地面点剔除比例、配准后的均方误差与迭代次数。若配准误差偏大,优先检查离群点阈值与地面分割是否误删了目标点;若配准速度慢,优先检查下采样体素是否过小。只有把预处理参数与配准结果联动评估,才能形成稳定的数据准备流程。