1 经典ICP
ICP的目的很简单,就是求解两堆点云之间的变换关系。怎么做呢?思路很自然,既然不知道R和t(针对刚体运动),那我们就假设为未知量呗,然后通过某些方法求解。下面我们来看看具体怎么求的~没办法,要把问题描述清楚,数学是少不了的了。假设有两堆点云,分别记为两个集合
X=x1,x2,...,xm
和
Y=y1,y2,...,ym
(m并不总是等于n)。然后呢,我们不失一般性的,假设两个点云之间的变换为R(旋转变换)和t(平移变换),这两个就是我们要求的东西啦~那我们将求解这个问题描述成最小化均方误差:
e(X,Y)=∑i=1m(Rxi+t−yi)2
经典的ICP方法对上面的优化问题的处理思路如下:
(1)初始化 R 和
确定初始的 R 和
(2)迭代
得到初始的估计后,接下来的步骤就顺理成章了:对于 X 中的每一个点用当前的
2 ICP变种
除了经典的ICP方法外,还有一些变种,如point-to-point的,point-to-plane的以及plane-to-plane的,那么这三种方法到底是啥呢?
其实很简单,就是上面的误差函数的定义不一样而已。在上面讲经典ICP的时候,求和的每一项不就是
X
中的每一个点到
point-to-plane的误差函数定义为: