3. 点云预处理
在激光SLAM前端配准与建图中,原始点云往往包含大量噪声、离群点、地面点以及冗余数据。如果直接送入配准或建图模块,不仅计算量巨大,还会导致特征误匹配、位姿估计漂移。因此,点云预处理是保障SLAM系统精度与实时性的关键环节。本节围绕去噪、降采样、地面分割、聚类分割、特征提取与点云滤波方法展开,帮助读者建立完整的预处理流水线认知。
一、核心原理:为什么需要点云预处理
激光雷达输出的原始点云具有三个显著特点:数据量大、噪声分布复杂、场景结构混杂。以64线激光雷达为例,单帧点云可达十几万点,若以10Hz频率运行,每秒产生百万级点云。预处理的核心目标可以归纳为三点:
- 降低数据规模:通过降采样减少点数,提升后续配准与建图效率。
- 抑制噪声干扰:去除离群点、反射噪声、雨雾噪点,避免虚假特征。
- 分离语义结构:将地面、障碍物、动态目标分开,为特征提取和配准提供干净输入。
预处理不是单一算法,而是一条流水线:去噪 → 降采样 → 地面分割 → 聚类分割 → 特征提取 → 滤波输出。每一步的输出质量都会影响后续环节。
二、方法流程:从原始点云到可用特征
下面给出一个典型的激光SLAM前端预处理流程,适用于机械式激光雷达与固态激光雷达。
- 去噪:采用统计滤波(Statistical Outlier Removal)或半径滤波(Radius Outlier Removal)去除离群点。统计滤波计算每个点到邻域的平均距离,剔除超过全局均值加标准差倍数的点。
- 降采样:使用体素栅格滤波(Voxel Grid Filter)将三维空间划分为小立方体,每个体素内用质心代替所有点,实现均匀降采样。
- 地面分割:常用RANSAC平面拟合或射线地面分割。RANSAC随机采样三点拟合平面,迭代寻找最大内点集作为地面。
- 聚类分割:对非地面点使用欧式聚类(Euclidean Cluster Extraction),基于KD-Tree近邻搜索,将距离小于阈值的点归为同一簇。
- 特征提取:从聚类结果中提取边缘点、平面点、角点等特征,用于帧间配准。
- 点云滤波:最后通过直通滤波(PassThrough)限定感兴趣区域,或使用条件滤波保留特定强度、高度范围的点。
三、案例/场景:城市道路SLAM预处理实战
以城市道路场景为例,激光雷达安装于车顶,扫描到大量地面点、路边植被、车辆、行人以及建筑物。若不做预处理,RANSAC配准容易将地面点误认为匹配特征,导致Z轴漂移。典型处理策略如下:
- 去噪:先使用统计滤波去除雨滴、灰尘产生的稀疏离群点。
- 降采样:体素栅格设为0.2m,将单帧点云从12万点降至3万点,满足10Hz实时性。
- 地面分割:RANSAC拟合地面,距离阈值0.15m,保留非地面点用于后续聚类。
- 聚类分割:欧式聚类将车辆、行人、树木分开,便于剔除动态目标。
- 特征提取:从建筑物立面提取平面特征,从路灯杆提取边缘特征。
- 点云滤波:直通滤波限定Z轴范围,去除天空和地下噪声。
在城市道路场景中,地面分割的阈值不宜过大,否则会误删低矮障碍物;也不宜过小,否则地面残留会影响聚类。建议根据雷达安装高度和路面平整度动态调整。
四、误区/复盘:常见问题与优化建议
在实际工程中,点云预处理常出现以下误区:
| 误区 | 现象 | 优化建议 |
|---|---|---|
| 降采样过度 | 特征点丢失,配准失败 | 体素尺寸不超过最小特征尺寸的1/3,通常0.1~0.3m |
| 地面分割阈值固定 | 坡道或颠簸路面地面残留 | 采用自适应阈值或射线地面分割 |
| 聚类参数单一 | 远近目标混簇或过分割 | 根据距离分段设置ClusterTolerance |
| 忽略动态目标 | 建图出现鬼影 | 结合聚类与跟踪剔除动态点 |
| 滤波顺序错误 | 噪声被放大或特征被误删 | 先去噪再降采样,最后做直通滤波 |
复盘时建议记录每步处理的点数变化与耗时,形成预处理日志。例如:
[预处理日志]
原始点云: 124,832 点
统计滤波后: 118,450 点 (耗时 8ms)
体素降采样后: 31,200 点 (耗时 12ms)
地面分割后: 18,760 点 (耗时 15ms)
聚类分割后: 12,340 点 (耗时 20ms)
特征提取后: 3,210 点 (耗时 6ms)
总耗时: 61ms / 帧
预处理总耗时必须小于雷达帧间隔。若10Hz雷达,单帧预算100ms,预处理应控制在60ms以内,否则需降低降采样分辨率或优化算法实现。
综上所述,点云预处理是激光SLAM前端不可或缺的一环。去噪、降采样、地面分割、聚类分割、特征提取与点云滤波各有侧重,需根据场景、雷达型号与算力平台灵活组合。只有保证输入点云干净、精简、结构清晰,后续的配准与建图才能稳定可靠。