下一篇文章将进行ICP算法实战:
转载自ICP算法概述以及使用SVD进行算法推导_icp svd-优快云博客
(如有侵权,私信我删除)
1 ICP 算法
三维点云拼接技术在不同场合亦被称为重定位、配准或拼合技术,其实质是把不同的坐标系下测得的数据点云进行坐标变换,问题的关键是坐标变换参数𝑅(旋转矩阵)和𝒕(平移矢量)的求取。目前国内外的拼接技术一般分两步:粗拼接和精确拼接。
粗拼接大致将不同坐标系下点云对准到同一坐标系下,一般粗拼接很难满足精度要求,需在粗拼接的基础上使用迭代算法进行精确拼接,使点云之间的拼接误差达到最小。
主要分为四个过程:
1.对原始数据采样
2.确定初始对应点集
3.滤除错误对应点对
4.坐标变换求解
1.1概述:对待拼接的2片点云,首先根据准则确立两分别对应的点集P={p1,p2,...,pn}与Q = { q 1 , q 2 , . . . , q n } Q = \{q_1,q_2,...,q_n\}Q={q1,q2,...,qn},其中对应点对个数为n。
ICP算法计算简便直观,精度高。但算法运行速度及全局最优的收敛性依赖于给定的初始变换估计以及迭代过程中对应关系的确立!粗拼接技术可以提供较好的初始位置,因此迭代过程中点集的正确对应成为各种算法的关键,直接决定算法收敛速度以及拼接精度。
1.2ICP步骤:
1.2.1采样
均匀采样、随机采样和法矢采样,均匀采样与随机采样简便易行,但未考虑待拼接物体的形貌,会丢失物体的关键特征。法矢采样以待拼物体表面点的法矢分布为基础, 使每个法矢方向上都有差不多个数的点, 此方法可尽可能地保留点云的细微特征。不理解法矢采样的参照这里。
1.2.2确定初始对应点集
( 1 )点到点
通过直接搜索一片点云中的点在另一片点云中的最近点来确定对应点集。计算简便直观,但其所确立的对应点集中存在大量错误对应点对,算法迭代易陷入局部极值。
( 2 )点到投影
对于点云𝑃上一点𝑝 ,其对应点𝑞为𝑝过点云𝑄的视点方向Oq在点云𝑄上的投影。由于省去了搜索对应点的步骤,此方法可极大地缩短计算时间,但其缺点是无法达到较高的拼接精度。
( 3 )点到平面
点到面算法在三类方法中精度最高,这种方法将点点距离用点面距离代替,迭代次数少,且不易陷入局部极值。应用最为广泛的点到面算法为点到切平面算法。
1.2.3去除错误对应点对
在算法迭代初期,存在错误对应点对,严格说没有一对是正确的,所以需要确定评价标准来去除错误对应点对。
( 1 )基于曲面几何特征的约束方法
此类方法基于的原理是:在不同视角下,被测物体同一位置的曲面几何特征应该保持不变。此类约束中常用的几何特征有曲率、法矢等。使用此类约束方法确立的对应点对一般正确率较高,故可达到较高的精度,但此类方法要求被测物体有较明显的特征,且由于存在提取曲面特征的过程,一般计算较为耗时,特别是点云点数较多时。
代表算法有:
- ICCP(Iterative Closest Compatible Point) 此算法中使用候选对应点间的曲率和法矢的夹角判断点对的兼容性。
- ICPIF (Iterative Closest Points using Invariant Features) 此算法中使用被测物体的欧氏空间不变量(曲率、矩不变量、球谐函数不变量等) 确立对应点对。
- GP-ICPR( Geometric Primitive ICP with the RANSAC) 此算法中利用曲面上 1 点的曲率变化与对应点间的法矢的夹角确立对应点对。
- ICL( Iterative Closest Line)、ICT( Iterative Closest Triangle Patch)…
( 2 )基于刚性运动一致性的约束方法
此类方法直接利用了刚性运动应保持被测物体重叠区域对应点不变的原理。此类约束常用的一致性准则有对应点间的距离、对应点对间的相邻关系等。此类方法简便易行,计算效率较高,但确立的对应点集错误率较高。
代表算法有:
-
ICRP(Iterative Closest Reciprocal Point) 对于点云𝑃上 1 点𝒑,其在𝑄上的最近点为𝒒,找到𝒒在𝑃上的最近点𝒑′,若‖𝒑−𝒑′‖>𝜀(𝜀为给定的阈值),则点对(𝒑,𝒒)被去除。
-
PICP(Picky ICP) 此算法对使用最近点对点方法找到的对应点集中的点对(𝒑,𝒒) ,若‖𝒑−𝒒‖>𝜀𝜎,则点对(𝒑,𝒒)被去除。其中𝜎为所有对应点对间距离的均值,𝜀为给定的阈值。
-
…
1.2.4坐标变换的求解
ICP 算法对最终确立的对应点集,一般采用最小二乘法迭代求解 2 片点云间的最优坐标变换。对于旋转矩阵和平移矢量的求值,通常可采用以下 4 种方法:单位四元数法、奇异值分解法(SVD)、正交矩阵法和对偶四元数法。
SVD方法求解ICP问题:
公式较为复杂,见原文链接。