ICP算法(Iterative Closet Point)是三维网格注册的经典算法,常用于对物体不同角度拍摄的三维扫描像的对齐。ICP算法起始条件包括两个待注册的网格和两个网格相对关系(旋转、平移)的初始估计,算法迭代的选取两个网格的关联点对,计算点对的距离,通过最小化所有点对的距离和解优化问题求得两个网格的旋转、平移关系。由于ICP方法的广泛使用,研究人员对ICP方法也提出了多种改进。改进集中在:
- 取样:选择一个或两个网格上的部分点作为样本
- 匹配:建立样本点的关联关系
- 置权:给关联样本点对设置权重
- 删除:对不符合条件的关联点对做删除
- 误差度量:给关联点对设置误差度量
- 最优化:最优化误差度量
文章对上述几个方向的ICP变体,生成指定的数据进行测试比较。文章所用的数据包括:1.Wave;2.Fractal landscape;3.Incised plane。
用来比较的ICP基准算法是:
- 在两个网格上随机取样
- 匹配最近点对作为关联点对,且要求关联点对法向偏差不超过45度
- 所有关联点对设置平均权重
- 删除包含边缘点的关联点对,距离最大的一定比例的关联点对也做删除
- 点到面误差度量
- 经典的“取样-匹配-最优化”的迭代过程
取样方法
- Uniform Sampling
- Random Sampling
- Normal Space Sampling:选择样本点使得样本点法向散布最大
对于wave场景,由于不同点的法向分布很均匀,所以不同的取样方式收敛速度差别不大。而对于incised plane场景,由于不同点的法向差别很大,所以normal space sampling可以尽可能多的选择不同法向的关联点,具有最快的收敛速度,且注册误差最小。
点对匹配
- closet point:选择另一个网格上的最近点构建关联点对,可以使用kd-tree加速
- normal shooting:从源点出发沿着源点法向的光线与目标网格的交点,与源点构成关联点对
- project:以目标网格的相机光心作为起点,计算源点到目标网格的投影点,与源点构成关联点对
- project and walk:将源点投影到目标网格,在目标深度图上指向搜索得到关联点
对于fractal测试场景,由于closet point方法对与噪声敏感,所以收敛速度最慢,而收敛最快的方法是normal shooting方法。但是对于incised plane场景,只有closet point方法最终收敛到正确答案。有次可以得到结论closet point方法不是收敛最快的,但却是最鲁棒的匹配方法。
权值设置
- constant weight
- linear with distance:weight = 1 - (Dist(p1,p2)/Dist_max)
- Compatibility of normals:weight = n1.n2
- Uncertainty:基于相机噪声的权值设置
从结果来看,不同的设置权值方式对收敛速度的影响很小,并且是受数据集相关的。
删除准则
- 距离超过固定门限的关联点对删除
- 距离最大的n%关联点对删除
- 距离超过2.5倍标准差的关联点对删除
结论是,删除关联点对可能会提高注册的稳定性和精确度,但是对于注册的收敛速度影响不大。
误差度量
- point-to-point
- point-to-plane
从两个场景来看,point-to-plane的收敛速度都快于point-to-point。特别是incised plane,由于pont-to-point方法不允许平面的滑动,所以无法获得准确的旋转平移。
本文是3-D Digital Imaging and Modeling, 2001的一篇文章,Google学术的引用达到2920次。
文章以达到收敛所需的迭代次数为判别准则比较ICP多个角度的变体,基本覆盖了在实际ICP工程应用中可以调整的各种方案。
【吴】