动态物体滤除算法
图像层面:2D图像分割反投影到3D点云滤除
基于分割
- 原理:通过2D语义分割(如DeepLab、Mask R-CNN)识别动态物体(车辆、行人),将分割结果反投影至3D点云中滤除。
- 优化方向:
- 结合时序一致性(如连续帧分割结果融合)减少单帧误分割。
- 多模态融合:联合RGB与深度信息提升分割精度(如RGB-D分割网络)。
- 挑战:静态物体误标(如停靠车辆)、分割模型泛化性不足。
基于光流跟踪
- 原理:通过相邻帧光流场(如RAFT、FlowNet)检测运动物体,反投影动态点云。
- 优化方向:
- 动态-静态光流分离:利用运动一致性约束区分背景光流与动态物体光流。
- 挑战:
- 物体静止时失效(光流接近零)。
- 相机运动与物体运动耦合时误判(需Ego-motion补偿)。
点云层面
1. 几何分析方法
- 代表方法:
- RANSAC平面拟合:移除非地面点(适用于地面移动机器人)。
- 曲率聚类:高曲率区域常为动态物体边缘(如LeGO-LOAM)。
- 局限:依赖场景几何规则性,复杂非结构化场景鲁棒性差。
2. 基于单帧-全局对比的方法
”这类方法的基本假设是:如果一个激光点的光路穿过了另一个激光点,那么另一个激光点就是动态点。这个假设逻辑上完全说得通,但实现起来有两个问题:其一,入射角接近90度时的误杀问题,如下图所示,红色箭头指向的旧点因为与新点(五角星)光路很接近,会被误杀掉,考虑到一帧激光点云本身的角度误差、测距误差、光斑影响等,这种误杀会更严重。其二,遮挡问题,比如对于一些大型动态物体,它们完全挡住了激光雷达的视线,激光雷达没有机会看到这些动态物体后方的静态物体,意味着这些动态点永远不会被新的激光点穿过,此时就绝无可能把这些动态点滤除掉了”
“误杀问题”和“静态点不可见”的问题。其一,误杀问题包括但不限于点云自干扰、平行点差异导致的假阳性、遮挡点误判、接触点假阳性等一系列由于雷达点云的物理特性引发的误杀问题。其二,静态点不可见的问题相较于误杀问题会少见一些,但更加难以解决,例如当存在动态障碍物一直遮挡了部分或者全部的激光雷达的视线,则雷达没有机会看到这些动态障碍物后方的静态物体信息以至于动态障碍物点云永远不会被识别和滤除掉。
基于可见性(Ray-Casting)
- 问题深化:
- 误杀问题:入射角接近90°时,点云噪声导致光线路径误差(解决方案:加入角度阈值约束,如剔除入射角>80°的射线)。
- 静态点不可见:动态物体长期遮挡导致漏检(解决方案:引入概率观测模型,长期未更新的栅格标记为"可能动态")。
- 优化方法:
- 多帧射线聚合(如SUMA++):统计多帧光线穿透情况,降低单帧噪声影响。
- 自适应阈值:根据点云密度动态调整射线判定容差。
基于栅格滤除(Voxel-based)
结合栅格地图(例如概率占据栅格、八叉树栅格,etc),识别与区分静态和动态点的基本原理:激光点云所落在的栅格处hits计数+1或者占据概率上升,激光光束穿过的所有栅格misses计数+1或者空闲概率上升,通过统计同一栅格中hits和misses数量差值或者占据概率,以判断栅格中包含的点云是否需要滤除。
- 代表作:
- DUFOMap:使用概率占据栅格,通过贝叶斯更新
Hit/Miss
概率。 - OctoMap:八叉树结构高效管理大规模场景。
- DUFOMap:使用概率占据栅格,通过贝叶斯更新
- 优化方向:
- 运动概率传播:将动态点概率传递至相邻栅格(如DynSLAM)。
- 多分辨率栅格:近处高精度、远处低精度,平衡效率与效果。
基于扇形栅格高度比对
代表作 ERASORS
-
算法流程:首先,通过常规的激光SLAM手段获得了原始点云地图后,回放数据以query scan的位姿为中心从地图中截取对应的submap,再将两者按照圆柱坐标系的方式划分成一个个 bin;随后,为两者的每一个 bin 计算占据状态描述子(点云高度差);接下来,找出 submap 中那些描述子之比<0.2 的 bin,作为潜在的动态 bin,也就是 query scan 中bin 的高度差远小于submap中 bin 的高度差;最后,在每一个潜在动态 bin 中用主成分分析法拟合地平面,将地平面以上的点作为动态点滤除;
-
流程优化:
- 高度描述子改进:引入高度分布直方图替代单一高度差,避免地形起伏误判。
- 动态点判定:联合高度差与点云密度(如ΔH<0.2Hmap\Delta H < 0.2H_{\text{map}}ΔH<0.2Hmap且密度比<0.5<0.5<0.5)。
-
局限:高架桥、斜坡地形易误杀静态点。
基于深度图比对
代表作 Revert
- 算法流程:单帧点云和原始点云地图都根据传感器位姿投影为深度图,通过比对对应深度图像素的差异来滤除动态点
- 优化策略:
- 畸变补偿:在深度图生成前进行点云运动畸变校正(如IMU辅助去畸变)。
- 边缘保护:使用双边滤波平滑深度图,保留物体边缘。
弊端
- 对SLAM位姿精度敏感,一点偏差都会造成投影误差,进而造成误杀和漏杀,这一点尤其容易发生在物体的边缘处和细长物体(如路灯杆)上。
- 对点云畸变敏感。同样的道理,运动畸变造成一个点落在了它本不属于的位置上,引入误差
- 容易误杀地面点 当入射光线贴近地面时,部分地面点(红色箭头所指的点云)因为靠近五角星点的光路,会被认为遮挡了query scan中的点,从而被误杀!这种现象在大入射角时尤其明显。
3. 基于点云分割的方法
基于分割的方法中当前比较主流的是基于深度学习的语义分割方法,通过前期的点云特征训练,在使用过程中直接标注出点云中的动态障碍物信息部分,在定位和建图算法中根据点云中的标注直接过滤即可,虽然滤除的内容仅限于前期训练得到的模型且容易有假阳性和假阴性的问题,但其方法胜在简单高效。另一类传统的点云分割的方法则基于聚类的模式,如快速点特征直方图 ( fast point feature histograms, FPFH )、基于确定视角下的特征分布直方图VFH(viewpoint feature histogram),用以在静态聚类中区分出动态聚类,此类方法能够改善计算成本提高实时性从而得到广泛研究,再者就是基于区域(逆)生长以分割混杂着动态和静态点云的目标,识别出动态点云目标以便于后期滤除等。
深度学习语义分割
- 代表网络:
- RangeNet++(Range图像分割):实时性强,适合车载平台。
- Cylinder3D(圆柱体分割):解决点云稀疏性问题。
- 动态物体扩展:
- 时序分割:如4D-SPNet融合多帧点云时序特征。
- 弱监督学习:减少标注依赖(如Self-supervised动态点检测)。
传统聚类分割
- 特征优化:
- FPFH+VFH融合:结合局部与视角不变特征,提升聚类鲁棒性。
- 图神经网络分割:构建点云图结构,利用邻域关系优化聚类(如Point-GNN)。
- 动态目标提取:
- 区域生长+运动一致性:从静态背景中分离运动聚类(如DetectDyn)。
核心挑战与解决趋势
挑战 | 原因 | 解决思路 |
---|---|---|
SLAM位姿敏感 | 一点偏差都会造成投影误差,进而造成误杀和漏杀,这一点尤其容易发生在物体的边缘处和细长物体(如路灯杆)上。 | 紧耦合优化:动态滤除与位姿估计联合迭代(如LIO-SAM的动态点滤波模块) |
运动畸变影响 | 同样的道理,运动畸变造成一个点落在了它本不属于的位置上,引入误差 | 在线畸变校正:IMU/轮速计辅助运动补偿 |
地面点误杀 | 当入射光线贴近地面时,部分地面点因为靠近光路,会被认为遮挡了query scan中的点,从而被误杀!这种现象在大入射角时尤其明显。 | 地面优先分割:先提取地面再处理非地面点(如Patchwork++地面分割) |
静态点不可见 | 长期地图管理:设置栅格"遗忘机制",超时未观测区域重置为未知 | |
复杂动态场景 | 多方法融合:语义分割+几何分析+时序跟踪(如Panoptic-SLAM) |
未来研究方向
- 端到端动态滤除:训练网络直接从点云/图像输出动态概率(如MotionNet)。
- 事件相机辅助:利用事件相机高动态特性检测运动物体。
- 仿真-现实迁移:在CARLA等仿真平台生成标注数据,解决真实场景标注匮乏问题。