配准定义
给定两个来自不同坐标系的三维数据点集,找到两个点集空间的变换关系,使得两个点集能统一到同一坐标系统中,即配准过程。
ICP配准
ICP本质上是基于最小二乘法的最优配准方法,精度高,不需要提取特征点;但是需要在icp使用之前两点云已经完成粗配准,否则容易陷入局部最优。该算法重复进行选择对应关系点对,计算最优刚体变换这一过程,直到满足正确配准的收敛精度要求。ICP是一个广泛使用的配准算法,主要目的就是找到旋转和平移参数,将两个不同坐标系下的点云,以其中一个点云坐标系为全局坐标系,另一个点云经过旋转和平移后两组点云重合部分完全重叠。算法只适用于刚体配准;算法不适用于部分重叠点云的配准。
算法的输入:参考点云和目标点云,停止迭代的标准。
算法的输出:旋转和平移矩阵,即转换矩阵。
ICP算法原理
得到R,T矩阵以后,用其对待配准空间进行空间变换得到新的点集,并代入目标函数;
若如果新的变换点集与参考点集满足两点集的平均距离小于某一给定阈值,则停止迭代计算,否则新的变换点集作为新的{P_i }继续迭代,直到达到目标函数的要求。
ICP算法总结
(1)计算{P}中的每一个点在{Q}点集中的对应近点;
(2)求得使上述对应点对平均距离最小的刚体变换,求得平移参数和旋转参数;
(3)对{P}使用上一步求得的平移和旋转矩阵进行空间变换,得到新的变换点集{P’};
(4)如果新的变换点集与参考点集满足两点集的平均距离小于某一给定阈值,或者迭代次数达到设定的最大值,则停止迭代计算,否则新的变换点集作为新的{P}继续迭代,直到达到目标函数的要求。
ICP算法问题
(1)算法收敛于局部最小误差。
(2)噪声或异常数据可能导致算法无法收敛或错误。
(3)在进行ICP算法第一步要确定一个迭代初值,选取的初值将对最后配准结果产生重要的影响,如果初值选择不合适,算法可能就会限入局部最优,使得迭代不能收敛到正确的配准结果。
ICP常用参数
icp.setMaximumIterations(1000); //最大迭代次数
icp.setEuclideanFitnessEpsilon(0.5);//前后两次迭代误差的差值
icp.setTransformationEpsilon(1e-10); //上次转换与当前转换的差值;
icp.setMaxCorrespondenceDistance(0.7); //忽略在此距离之外的点,对配准影响较大