ICP算法的原理与实现

一、背景与意义

  点云数据能够以较小的存储成本获得物体准确的拓扑结构和几何结构,因而获得越来越广泛的关注。在实际的采集过程中,因为被测物体尺寸过大,物体表面被遮挡或者三维扫描设备的扫描角度等因素,单次的扫描往往得不到物体完整的几何信息。因此,为了获得被测物体的完整几何信息,就需要将不同视角即不同参考坐标下的两组或者多组点云统一到统一坐标系下,进行点云的配准。在配准算法中,研究者使用最多的是ICP算法。下面将介绍ICP算法的基本原理以及步骤。

二、点云配准理论基础

(1)刚性变换矩阵

   点云配准的最终目的是通过一定的旋转和平移变换将不同坐标系下的两组或者多组点云数据统一到同一参考坐标系下。这个过程,可以通过一组映射来完成。假设映射变换为H,这H可以用以下的公式来表示。

 ICP算法的原理与实现_第1张图片

其中ICP算法的原理与实现_第2张图片代表旋转矩阵,代表平移向量,代表透视变换向量,S代表整体的比例因子。因为根据一系列图片得到的点云数据只存在旋转和平移变换,不存在形变,所以将V设为零向量,比例因子S=1。

映射变换H可以表示为:

其中,旋转矩阵R3X3和平移矩阵T3X1可以通过以下公式来表示:

ICP算法的原理与实现_第3张图片

其中αβγ分别表示点沿xyz轴的旋转角度,txtytz分别表示点沿

xyz轴的平移量。

(2)刚性变换矩阵的参数估计

将两个不同坐标系下的点 XX’进行坐标变换时,可以通过以下公式来实现转换:

ICP算法的原理与实现_第4张图片 ICP算法的原理与实现_第5张图片

   刚性变换矩阵中涉及到六个未知数α、β、γ、 tx、ty、tz。要唯一确定这六个未知参数,需要六个线性方程,即至少需要在待匹配点云重叠区域找到3组对应点对,且3组对应点对不能共线,才可以得到这几个未知数的值,进而完成刚性矩阵的参数估计。通常情况下,人们会选择尽可能多的对应点对,进一步提高刚性变换矩阵的参数估计精度。

(3)目标函数

   在待匹配的两组点云数据的重叠区域内,分别选取两个点集来表示源点集和目标点集,其中P={pi|pi∈R3i=1,2……n}为源点集,Q ={qj|qj∈R3j=1,2……m}为目标点集,mn分别代码两个点集的规模。设旋转矩阵为R,平移矩阵为t,用fRt)来表示源点集P在变换矩阵(Rt)下与目标点集Q之间的误差。则求解最优变换矩阵的问题就可以转化为求满足minfRt))的最优解(Rt)。

三、ICP算法的原理与步骤

ICP算法的基本原理是:分别在带匹配的目标点云P和源点云Q中,按照一定的约束条件,找到最邻近点(piqi),然后计算出最优匹配参数Rt,使得误差函数最小。误差函数为ERt)为: 

其中n为最邻近点对的个数,pi为目标点云 P 中的一点,qi 为源点云 Q 中与pi对应的最近点,R 为旋转矩阵,t为平移向量。

ICP算法步骤:

(1)在目标点云P中取点集pi∈P

(2)找出源点云Q中的对应点集qi∈Q,使得||qi-pi||=min

(3)计算旋转矩阵R和平移矩阵t,使得误差函数最小;

(4)对pi使用上一步求得的旋转矩阵R和平移矩阵t进行旋转和平移变换,的到新的    

   对应点集pi’={pi’=Rpi+t,pi∈P}

(5)计算pi’与对应点集qi的平均距离; 

(6)如果d小于某一给定的阈值或者大于预设的最大迭代次数,则停止迭代计算。    

         否则返回第2步,直到满足收敛条件为止。

ICP算法关键点:

1)原始点集的采集

   均匀采样、随机采样和法矢采样

2)确定对应点集

   点到点、点到投影、点到面

3)计算变化矩阵

   四元数法、SVD奇异值分解法










你可能感兴趣的:(c++,图像处理,图像处理,C++基础,opencv基础,ICP算法,点云匹配,三维重建)