Hello,大家好!我是MPIG2018级研究生陈守钊。今天我给大家讲解的是迭代最近点算法(ICP,Iterative Closest Point迭代最近点),ICP是一种点集对点集配准方法。在计算机应用领域,三维点集配准是一个非常重要的中间步骤,它在表面重建、三维物体识别、相机定位等问题中有着极其重要的应用。
我们先预览一下本章讲解的主要内容:
(1)ICP算法原理
(2)ICP算法具体步骤
(3)代码示例演示
一. ICP算法原理
ICP算法的实质是基于最小二乘法的最优匹配算法,它重复进行“确定对应关系点集—计算最优刚体变换”的过程,直到某个表示正确匹配的收敛准则得到满足。ICP 算法的母的是找到目标点集与参考点之间的旋转R和平移T变换,使得两匹配数据中间满足某种程度度量准则下的最优匹配。
二. ICP算法具体步骤
(2.1) 算法整体流程:
(2.2 )为了更好理解ICP算法的执行过程,我们将ICP算法分为配准元素的选择、配准策略的确定和误差函数的求解等三个方面进行讨论。
1. 配准元素的选择:
利用各种各样的方法来选择配准元素,其主要目的是为了减小点集元素的数目,即对匹配点集进行采样。涉及到采样,可知有多种采样方法被尝试使用。本实验代码示例采用的是随机采样方法,每一次的迭代过程中都要进行随机采样获取不同的采样点进行计算。
2. 配准策略的确定:
寻找对应点对,就必须寻找场景数据点和模型数据点的特征差异,这需要对特征进行度量。在利用特征度量获得对应点以后,还需要利用特征度量建立迭代优化的目标函数,为误差函数的求解奠定基础,ICP算法被提出来时,采用的是欧氏距离作为特征度量。本实验代码代码示例采用的也是欧式距离。
3. 误差函数的求解
误差函数的求解,也就是目标函数的最小化,是ICP算法的最后一个阶段。在求得目标函数后应该采用什么样的方法来求解目标函数,使其值能最快最准的的收敛到最小,也是一个比较重要的问题。传统的ICP算法的目标函数是通过点对点的距离建立的,其求解方法有基于奇异值分解的方法、四元数方法、正交矩阵法和双四元数方法。本实验示例采用奇异值分解法。
上述SVD求解旋转矩阵R,与平移向量T是有严格的数学推导过程的,由于我们只是应用,在这里我并没有做详细的介绍,有疑问的话可以在文章末尾进行留言。
三. 代码示例演示
代码运行结果:
由于没有设置实验误差,最后的匹配结果是完全重合的,两种颜色的点对应两个不同的点集,红色叉叉代表原点。
想要更加详细了解本讲更多细节的内容吗?那就一起来观看下面的Presentation的具体讲解吧:
领取专属 10元无门槛券
私享最新 技术干货