NDT,全称 Normal Distributions Transform(正态分布变换),是一种广泛使用的点云配准算法,它的核心思想与ICP截然不同:NDT不直接计算点与点之间的对应关系,而是通过概率模型来描述和匹配点云的表面结构。
核心思想 NDT算法的基本流程可以概括为:
将目标点云 Q 所在的空间划分为大小固定的网格单元格,对于每个单元格,检查其中包含的点数,如果点数太少(如小于3个),则忽略该单元格,视为无效单元格,对于有效的单元格,计算其内部所有点的均值 q 和协方差矩阵 Σ。

这定义了一个描述该单元格点分布的正态分布 N(q, Σ)。
对于给定的一个变换参数 T(包含旋转和平移),将源点云 P 变换后得到

对于 P’ 中的一个点 x_i’,它落在某个单元格中,该单元格的分布为 N(q, Σ)。该点的概率得分为:

(注:为了简化,省略了正态分布前面的常数项,因为它不影响优化结果)
最终的评分函数是所有点得分的总和:

目标是找到变换 T 使得评分函数 s(T) 最大化,这是一个标准的非线性优化问题。通常采用牛顿法进行迭代优化,需要计算评分函数对变换参数 T 的梯度和海森矩阵 。 在每一步迭代中,根据当前梯度方向和海森矩阵提供的信息,计算一个变换参数的更新量 ΔT 更新变换:

重复迭代,直到收敛(如更新量 ΔT 小于阈值)。
优点:
缺点:
a. 自动驾驶与高精地图定位
b. 大规模室外环境SLAM
c. 点云地图构建
特性 | ICP (Iterative Closest Point) | NDT (Normal Distributions Transform) |
|---|---|---|
核心原理 | 点到点或点到面的几何距离最小化 | 点相对于概率分布的似然得分最大化 |
对应关系 | 显式地为每个点寻找最近邻点作为对应点 | 隐式地通过概率模型建立关联,无对应点概念 |
计算瓶颈 | 最近邻搜索(NN Search),非常耗时 | 网格化和分布计算(一次性的),优化过程很快 |
抗噪能力 | 较差,离群点和噪声会严重干扰最近邻匹配 | 较强,概率模型对局部噪声不敏感 |
初始值敏感性 | 非常敏感,容易陷入局部最优 | 相对不敏感,收敛域通常更宽 |
适用场景 | 重叠度高、初始位姿好、需要高精度的场景(如机械臂、精密测量) | 大规模场景、自动驾驶定位、计算资源受限的场景 |
计算效率 | 效率取决于点数量和最邻近搜索算法(KD-Tree等),通常较慢 | 效率取决于网格数量和优化步数,通常更快,更稳定 |
超参数 | 距离阈值、最大迭代次数等 | 网格大小,对性能影响很大 |
输出精度 | 在理想条件下(良好初值、高重叠),精度可以非常高 | 精度受网格大小限制,理论上限低于ICP,但实际应用中足够 |