M-detector

2023

Paper: Moving event detection from LiDAR point streams

Code: https://github.com/hku-mars/M-detector

在点云“流式采样”的时间尺度上,对每个新到达的激光雷达点进行“点到即判”,判断其是否来自运动体;同时可在短窗内聚合为帧级运动事件

方法

核心假设:在静态刚体世界里,历史观测(经过里程计去畸变并对齐到统一坐标系)所形成的可见表面,对后续沿近似相同视线方向的观测应保持遮挡一致;任何打破这种几何遮挡关系的“前穿/后露”,提示该点属于运动体

依赖与约束:需要稳定的里程计用于去畸变与配准;以角域投影近似射线一致性;短时历史窗口足以提供“静态背景”的遮挡证据

系统框架

数据摄取与时序对齐

  1. 输入流:激光点流和里程计流(位姿轨迹)
  2. 去畸变:将每个点按其时间戳用里程计插值对齐到统一参考系,得到本体坐标下的去畸变点
  3. 缓冲区:维护一个小延迟的点缓冲以协调“写入深度图”和“输出判定”的先后,避免竞态

球面深度图记忆

  1. 角域投影:将$x, y, z$坐标转球坐标
\[r=\left \| p \right \|, \quad \theta =\arctan2(y,x),\quad \arcsin\left ( \frac{z}{r} \right )\]
  1. 角域量化:以设定的水平/垂直分辨率将 $\left ( \theta , \varphi \right ) $映射到像素格,保证近似同向射线落在同一或相邻像素。量化到离散角分辨率的像素索引 $\left ( i,j \right ) $
  2. 多张短窗深度图:以时间为轴维护最多$N$张“深度图快照”,每张覆盖时长$\Delta T$。每个像素仅保留有限个最近的深度样本与统计量,用于后续局部查询与投票

逐点遮挡一致性检验

  1. 邻域检索:对新点的像素 $\left ( i,j \right ) $,在水平/垂直角域半径内采样一个小邻域,与多张历史深度图中的前沿深度对比
  2. 一致性判据:若新点与历史表面的遮挡关系被打破(出现“前穿/后露”),为该点累积一次“遮挡不一致”计数;当计数超过阈值,即判为运动点
  3. 时间投票:跨多张深度图做投票抑制噪声,并限定每像素样本数控制复杂度

输出与后处理

  1. 逐点输出(point-out):低时延标注每个点的动态/静态标签
  2. 帧级输出(frame-out):在短窗内对运动点做连通聚类与时间一致性过滤,形成稳定的运动体片段或实例,按需回馈耦合以提高鲁棒性

算法细节

  • 像素存储:每个像素维护至多$K$个深度样本(如最小、分位数、时间戳),用于近似该方向上的“静态前沿”

遮挡一致性测试

几何关系: 设新点沿单位方向$u$的测量为$r$, 历史在邻域内的代表深度为$d_m$, 在静态场景中,若视线相近,则应有:

\[r > \approx \min_m d_m\]

前穿检测

\[\mathrm{viotau ion}^+ = \left [ r < \left ( \min_m d_m - \tau \right ) \right ]\]

即新点比历史前沿显著更近(阈值 $ \tau $ 吸收量化与噪声)

后露检测:

\[\mathrm{viotau ion}^- = \left [ \min_m d_m <\left ( r - \tau \right ) \right ]\]

即历史点“本应被新点遮挡却仍可见”,提示历史为运动体或当前为运动体的互证

投票与阈值

在多个时间片、多个邻域像素上累积 $\mathrm{viotau ion}^+, \mathrm{viotau ion}^-$ 计数, 如果:

\[\sum \left ( \mathrm{viotau ion}^+ \vee \mathrm{viotau ion}^- \right ) \ge \gamma\]

则标记该新点为运动点。参数 $\gamma$ 控制敏感度与误报的平衡

邻域与稳健化

  • 角域邻域:水平/垂直角半径决定参与投票的像素范围;过大会引入误匹配,过小则证据不足。
  • 时域衰减:对更近时刻的深度图赋更高权重,降低里程计漂移对远时历史的影响。
  • 样本选择:像素内优先使用“更近、更新”的样本代表前沿,辅以分位数或中值抑制离群点。

其他

复杂度与时延

  • 近似常数时间:每点查询被角域大小、时间片数与像素样本上限共同界定,形成稳定的 O(1) 处理;无需全局重建或帧级配准,因此实现微秒到毫秒级的判定延迟。
  • 内存受控:深度图数量 $N$ 与每像素容量 $K$ 线性控制显存/内存占用

输出形态

  • 逐点标签:为每个点附加二值或概率型“运动事件”标签,可直接用于动态点过滤、即时避障或早期触发策略。
  • 帧级实例:对短窗内的运动点做空间聚类与时间耦合,输出实例级的轨迹片段、体素包围盒或掩膜,便于与跟踪/规划模块衔接。
  • 耦合策略:可选择将帧级稳定结果反哺到像素记忆(例如屏蔽已确认的动态区域),降低持续性动态对背景建模的干扰

关键参数

  • 角分辨率与视场:控制投影精度与覆盖范围,需与传感器实际一致。
  • 时间窗口与张数:决定历史覆盖长度与对噪声/漂移的权衡。
  • 邻域大小与阈值:角域半径、深度容差 $\tau$、投票阈值 $\gamma$ 共同决定灵敏度。
  • 像素容量上限:平衡稳健性与实时性,避免像素内样本过多导致查询膨胀

局限与失效

  • 里程计依赖:姿态/速度误差会转化为虚假不一致;高速机动时需缩短时间窗、收紧阈值
  • 动态密集背景:当“静态背景证据”稀薄(如人群/车流充满视野)时,误检率上升;需依赖帧级聚类与时间一致性平滑
  • 远距与低信噪:远距回波抖动、多回波与雨雪尘雾可能触发误报;可通过提高 $\tau$、加强分位统计缓解