论文年代比较久远,但是内容很不错。论文从速度和效果上,对比了ICP配准过程的6个步骤中每个步骤的一些方法。最后给出了一个效果不错,并且速度比价快的框架,也称fastICP。
ICP的6个步骤为:
- 从待配准的两个点云(也可以只用其中的一个点云)中选择一些顶点。
- 为这些顶点寻找出对应顶点
- 对对应点对进行加权
- 丢弃一些不合格的对应点对
- 误差函数选择
- 最小化误差函数
作者使用了三个场景作为实验的例子:
接下来我们看看每个步骤中的一些方法及性能对比。
顶点选择
- 使用所有的顶点
- 均匀采样
- 随机采样
- 利用rgb图片,选择亮度梯度值大的点
- 以上的方法,可以只在两个待配准点云中的其中一个选取,也可以在两个中选取。
作者还提出了一个新的选择方案,叫normal-space。原理是从已经被选中的点中选取法向量分布尽可能大的那些点。主要是用来解决类似3个例子中incised plane这种特征较少的情况。因为像随机采样这种方法,在那些特征明显的地方选取的点会比较少,这使得配准效果不好。
论文对比了不同方法的效果:
左边的两个图是对比不同采样方法的,可以看出除了incised plane这个例子,所有的采样方法性能都差不多。右边的两个图片是,在一个点云和在两个点云上采样的效果。如果使用normal shooting进行对应点匹配时,在两个点云上选择点,效果会比较好。
对应点寻找
- 直接在另外一个点云中寻找最近点,可以使用kd树或者最近点缓存技术进行加速
- normal shooting,从待寻找对应点的顶点的法向量方向发射一条射线到另外一个点云曲面上,然后取相交的点作为对应点。
- 从目标点云的相机视角,将待配准点云变换到目标点云上,然后寻找对应点
- 将带配准点云变换到目标点云上,然后利用点到点距离or点到射线距离或者rgb图片信息寻找对应点。(有待验证与3的差别。)
看看不同方法在fractal例子上的性能:
可以看出normal shooting的性能最好,然后是投影的方法。直接寻找最近点的方法最差,只是因为直接寻找最近点会被离群点或者噪声点所影响,而基于投影的方法则能很好的避免。下图是这两种方法寻找的对应点,a是直接寻找最近点,b是基于投影的方法:
在incised plane上只有直接寻找最近点的方法收敛了,其他都没有:
在速度方面上,基于投影的方法最快:
对应点加权
- 常数权重
- 计算对应点对之间的距离,根据距离加权:
- 根据法向量:
根据论文的实验,加权的方式对结果没有多大的影响。
不合格对应点对丢弃
- 给定一个距离阈值,根据这个阈值丢弃对应点对
- 根据一些误差指标,比如point-to-point距离,丢弃n%的点。
- 将那些point-to-point距离大于2.5倍所有距离的标准差的点丢弃。
- 如果某一对应点对与其他对应点对不一致的话将其丢弃。不一致定义为,如果, 大于某一阈值( ),则对应点对p1、p2与对应点对q1、q2不一致。论文中对每个点对选择10个对应点对进行比较,如果不一致对数大于5对,则丢弃。
- 将处于物体边界的顶点丢弃
论文推荐尽可能的使用最后一个策略,因为能消除下图这种情况的影响:
图a,是没有使用去除边界对应点。
下图是其他方法的比较:
可以发现,离群点去除,并不能加速收敛,但是论文作者觉得能够增加正确率和稳定性。
最小化误差函数
一般就point-to-point和point-to-plane以及其相应的优化方法,这里先不多说了。作者的实验结果是point-to-plane效果比较好。
作者给出的框架
- 随机选择顶点
- 使用投影的方法进行对应点寻找
- 常数对应点对加权
- 使用基于距离的离群点去除
- point-to-plane ICP算法