ICP综述


一、ICP 求解过程

       ICP 有好多变种,ICP求解步骤可以分为以下部分:

       1、选点

       在模型或者场景中选取匹配点

       2、匹配

       将选取的一组点匹配另一组点

       3、分配权重

       给匹配的点对分配权重

       4、去除错误匹配

       根据单个匹配点对或者根据总体匹配情况去除错误匹配点

       5、给定误差标准

       可以是匹配点对的误差二模或者一模等形式

       6、最小化匹配误差

       通过最小化匹配误差求解位姿转换矩阵

       下面分别从六个方面介绍ICP的求解过程。

二、选点

选点有以下方式

1、利用全部点进行迭代匹配

2、对所有点进行均匀采样

3、对所有点进行随机采样

4、利用可见光图像采样梯度值大的点

5、对所有点按照法向量分布采样,使得采样点法向量分布均匀

6、对于所有上述采样算法,可以只从模型采样,或者只从场景采样,或者双向采样

7、按照对点云配准的贡献进行采样,算法见论文《Geometrically StableSampling for the ICP Algorithm》,见附录 C。

利用方法 1 – 4 采样缺点,对于下图所示的配准会产生误差,下图配准靠十字形凹槽进行配准。


三、匹配

1、closest point 在一组点云中找另一组点云的最近点,可以用 k-d tree等算法加速最近点搜索


2、normal shooting 一组点云中的一个点,沿着点的法向量的光线和另一组点云的交点最为匹配点


3、project将场景点,从模型点的视角下,投影到模型点云


4、project and walk 如 3 方法,在投影到目标点云后,再在目标点云处搜索,搜索可以根据两点之间的距离,点到光线的距离,或者灰度值的相近程度等

5、可以上述的所有算法,前提是在两个点能在给定的衡量标准下可以匹配上,衡量标准比如颜色、两个点之间法向量的角度等,利用最速下降法搜素

优缺点:



       closestpoint对于 (b) 场景不收敛,对于噪声比较敏感

  对比closest point 和 project

       对于场景 (c) 上述算法只有最近点算法是收敛的

     利用 project 或者 project walk 算法收敛速度块好多(甚至一个数量级)

四、分配权重

   1、权重是常量

  2、对于距离远的点降低其权重


   3、根据点法向量的相近程度分配权重


   4、根据曲率分配权重


   5、根据点颜色的相近程度分配权重

  6、根据测量点的不确定性分配权重(由点云测量传感器决定)

       优缺点:

       实验表明上述算法的效果相当。

五、去除错误匹配

       1、将匹配点距离超过一定值的去除


       2、将匹配点中,以一定衡量标准衡量的(通常点到点距离) n% 最坏的匹配点对去掉

       3、将匹配点中,点到点距离大于一定乘机值的去掉(例如 2.5 倍的标准差)

       4、去掉和周围点对不一样的匹配


       5、去掉在mesh边界的点

       作者推荐去除mesh边界上的点,使用起来计算代价低,对于,当两组点云不是完全重合匹配时,可以避免好多无匹配。


       实验表明去掉 10% 最坏的匹配、2.5倍的标准差去除,对于算法的收敛性没有改善,反而两组匹配点相隔较远时,收敛速度较慢。

       6、Picky ICP 对于一个模型点被几个场景中点作为匹配点

       如果,一个模型中的点,被几个场景中的点,选择作为匹配点,则按照模型点和场景点匹配的距离,选择距离最小的场景点作为模型点的匹配点。算法在两组点云只是部分重合时很有效,会使得收敛速度变慢,同时对于原始ICP算法收敛性的证明也不再适用于 Picky ICP。

       7、对于一个模型中的点在场景中有几个匹配点的问题,还可以参考论文《Robust ICP Registrationusing Biunique Correspondence》的解决方法。

六、给定误差标准

       1、匹配点距离的平方和


       对于匹配点距离的平方和有闭式解,求解时,不需要迭代,算法有 SVD 等算法,求解步骤见附录 A。匹配点的误差平方和最为目标函数,求解的方法还有Quaternions、Orthonoraml matrices和Dual quaternions。

       2、上面点到点距离平方和再加上点的颜色的差别

       3、点到包含另一个点平面的距离的平方和

       如图:

       点到平面距离表达式:

       没有闭式解,可以用非线性最小化算法例如 LM 算法求解,或者将问题线性化求解,令 sin a = a,cosa = 1,将求解问题线性化适合两帧之间变化小的时候求解,利用线性化求解,求解步骤见附录 B。

       4、其它衡量标准,例如 L1 模

七、加速算法

       如下图:

       表示位姿求解的结果

       令

       当两次变化的角度满足以下关系时,对于最后三次位姿的移动可以有很好的近似。

       令为位姿求解后带入能量函数的残差, 为近似的弧线的长度,则利用和可以对上述的曲线做近似为:

       对于直线近似在和 X 轴交点处,可以给出线性的更新,对于二次曲线在最小值处,给出二次的更新,如下;

       

附录A

       参考《Evaluation of surface registrationalgorithms for PET motion correction》2010

    利用 SVD分解求解点到点距离平方和最小

待求解的能量函数

       对于匹配点距离的平方和有闭式解,求解时,不需要迭代,算法有 SVD 等算法。

    利用SVD分解求解算法:

     p 和 q 最为匹配点对

    计算匹配点对的中心坐标

       点到中心点的偏差

      找变换 T 使得下面目标函数最小化

      将上式带入可得

     因为要最小化误差,需要将两组点云数据的中心点移到一起,满足下式

     目标函数简化为

     定义

    目标函数最小化转换为下式最小化

    由柯西不等式得

    由 R 是单位正交矩阵

    对于 N 奇异值分解

    当 R 为

    RN trace 变为

  即 R 取上式时目标函数达到最小。

 

 

 

 

附录B

参考文献《Linear Least-Squares Optimization for Point-to-Plane ICP SurfaceRegistration》

点到平面距离平方和表达式为:


其中 M 是欧式变换

       其中


       其中


       由上式可以看出,目标函数是三个旋转角  和三个位移量  的二次函数,只能用迭代求解的方法(例如LM)。

       线性近似

       当旋转角  近似为 0 度,可以让、,由近似可以得到以下表达式:

       变换矩阵 M 变为:

       目标函数:

       对于 N 对匹配点,将目标函数变为:

       变量


       其中


       目标函数变为



       位姿最优解



注意:

          1、虽然近似的时候,角度不能太大,实际应用的时候,近似的角度甚至可以得到30度(角度的大小和两组点云的几何形状,和两组点云重叠的范围有关)。


 

附录C

       按照点对配准的贡献进行采样,如图,采样如下

算法如下:

利用点到平面距离作为目标函数最小化,表达式如下:







       


  • 8
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值