pcl的ICP算法

ICP算法本质上是基于最小二乘法的最优配准方法。该算法重复进行选择对应关系点对,计算最优刚体变换这一过程,直到满足正确配准的收敛精度要求。ICP是一个广泛使用的配准算法,主要目的就是找到旋转和平移参数,将两个不同坐标系下的点云,以其中一个点云坐标系为全局坐标系,另一个点云经过旋转和平移后两组点云重合部分完全重叠。

算法的输入:参考点云和目标点云,停止迭代的标准。

算法的输出:旋转和平移矩阵,即转换矩阵。

基本过程

1.对于目标点云中的每个点,匹配参考点云(或选定集合)中的最近点。

2.求得使上述对应点对计算均方根(root mean square,RMS)最小的刚体变换,求得平移参数和旋转参数。

3.使用获得的转换矩阵来转换目标点云。

4.迭代(重新关联点),直到满足终止迭代的条件(迭代次数或误差小于阈值)。这里的误差最小,可以是相邻两次均方根差的绝对值小于某一限差。

可能存在的问题

  1. 算法收敛于局部最小误差。
  2. 噪声或异常数据可能导致算法无法收敛或错误。
  3. 在进行ICP算法第一步要确定一个迭代初值,选取的初值将对最后配准结果产生重要的影响,如果初值选择不合适,算法可能就会限入局部最优,使得迭代不能收敛到正确的配准结果。

刚性(rigid)变换矩阵

旋转矩阵是欧式空间中执行旋转变换的矩阵,ICP算法在做点云配准时,变换矩阵包含了平移和旋转,因此,这里有必要研究一下坐标系的平移和旋转过程。三维变换与二维变换相似,采用齐次坐标技术来描述空间的各点坐标及其变换,描述空间三维变换的变换矩阵是4×4的形式。由此,一系列变换可以用单个矩阵来表示。

以坐标系的三个坐标轴X,Y,ZX,Y,Z分别作为旋转轴,则点实际上只在垂直坐标轴的平面上作二维旋转。此时用二维旋转公式就可以直接推出三维旋转变换矩阵。规定在右手坐标系中,物体旋转的正方向是右手螺旋方向,即从该轴正半轴向原点看是逆时针方向。

两角和差公式:

pcl的ICP算法_第1张图片

pcl的ICP算法_第2张图片

下面直接给出右手系中绕三轴的基本旋转矩阵,选装角度分别位θ,α,βθ,α,β:

pcl的ICP算法_第3张图片

这里的旋转矩阵旋转过程,先绕 XX轴旋转θθ角,然后绕 YY轴旋转αα角,最后绕 ZZ轴旋转ββ角。

基本原理

假设用Qi,i=1,2,3,⋯Qi,i=1,2,3,⋯表示第一个点集,Pi,i=1,2,3,⋯Pi,i=1,2,3,⋯表示第二个点集。两个点集的对齐配准转换为使下列目标函数最小。

其中,旋转矩阵RR和平移矩阵TT,就是找到的待配准点云数据与参考点云数据之间的旋转参数和平移参数,使得两点集数据之间满足某种度量准则下的最优匹配。

ICP配准过程:

1. 计算PP中的每一个点在QQ点集中的对应最近点

2. 求得使上述对应点对平均距离最小的刚体变换,求得平移参数和旋转参数

3. 对PP使用上一步求得的平移和旋转参数,得到新的变换点集P′P′

4. 如果新的变换点集与参考点集满足上面目标函数要求,即两点集的平均距离小于某一给定阈值,则停止迭代计算,否则新的变换点集P′P′作为新的继续迭代,直到达到目标函数的要求。

根据ICP算法的特点在PCL中的使用流程

两个数据集的计算步骤:

1. 识别最能代表两个数据集中的场景的兴趣点(interest points)(即关键点 keypoints)

2. 在每个关键点处,计算特征描述符;

3. 从特征描述符集合以及它们在两个数据集中的x,y,zx,y,z位置,基于特征和位置之间的相似性来估计对应关系;

4. 假设数据被认为包含噪声的,并不是所有的对应关系都是有效的,所以舍弃对配准过程产生负面影响的那些负影响对应关系;

5. 从剩下的一组好的对应关系中,估计一个变换行为。

你可能感兴趣的:(深度点云提取和计算,算法,人工智能,linux,iot,物联网)