2 点对平面的ICP算法
给定源表面和目标表面,ICP算法的每次迭代首先在源表面上的点与目标表面上的点之间组成一组对应点对。例如,对于源表面上的每个点,选择目标表面上最近的点作为其对应点。ICP迭代的输出是一个3D刚体变换M,它变换源点,使对应点之间的总误差在某一选定的误差度量下最小。
图1 两个表面之间的点对平面误差
当使用点对平面的误差度量时,优化目标是在相应的目的点(见图1)每个源点和切平面之间距离的平方之和。更具体来说,如果是一个源点,是对应的目标点,是在处的单位法向量,然后每个ICP迭代的目标是找到使得
(1)
其中M和是的3D刚体变换矩阵。
一个3D刚体变换M包含一个旋转矩阵和一个转换矩阵,即 (2)
其中
(3)
(4)
其中
分别是弧度绕x,y,z轴的旋转。
式1本质上是一个最小二乘优化的问题,求解它只需要确定这六个参数的值。然而,由于是旋转矩阵R中非线性三角函数的参数,因此不能使用有效的线性最小二乘技术来求解。在下一节中,我们将介绍如何用线性最小二乘问题来近似这个非线性最小二乘问题。
3 线性估计
当角度时,我们可以用近似值。因此,当时,
(5)
然后,M被估计为
(6)
现在我们可以重写式1为
(7)
式7中的每一个都能被写作一个6个参数的线性表示。
给定N对对应点对,我们可以将所有的排列为一个矩阵表达
注意到
(11)
因此,我们可以首先解出
(12)
这是一个标准的线性最小二乘问题,可以使用SVD(奇异值分解)来解决。设是A的SVD。A的伪逆定义为矩阵,其中是取的非零元素的逆(零元素保持不变)。则最小二乘问题的解为
(13)
假设解为,注意到由于可能不是一个有效的旋转矩阵,我们不应该使用结果。相反,我们应该使用,即使它不等于式7中定义的。