ICP算法重读

今天面试的时候被问到了ICP的内容,想想之前自己做了那么多的工作,竟然忘记了,所以决定来重读一下。打算是以Q&A的形式来进行回顾,这样才能清楚的知道到底是哪儿不明白。

Q1:
ICP用的最多的是点云的匹配,一般都是PCL中的ICP算法直接进行实现了,那具体ICP的基本过程到底是怎么样的呢?
A1:
ICP算法包括以下步骤:
1) 根据点集P1中的点坐标,在曲面S上搜索相应最近点点集P2;这个搜索完全就是基于距离的搜索。后期在 此基础上进行kd-tree加速。
2) 计算两个点集的重心位置坐标,并进行点集中心化生成新的两个点集;
3) 由新的两个点集计算矩阵W=ni=1qiqTiW=∑i=1nqiqi′T,并对这个矩阵进行分解为W=UVTW=U∑VT,R=UVTR=U∗VT.
4) 得到旋转矩阵和平移矩阵Rt,就可以计算点集P2进行刚体变换之后的新点集P3,由计算P2到P3的距离平方和,以连续两次距离平方和之差绝对值,作为是否收敛的依据。若小于阈值,就收敛,停止迭代。
5)重复a-e,直到收敛或达到既定的迭代次数。

Q2:
基本步骤里面,去中心化的目的是什么呢?
A2:
个人理解,因为在旋转的时候是根据质心旋转的,先去除质心是为了先计算出R,然后才能求出t,两步分开求解。(不知道这个理解对不对)
在一个群里面抛出这个问题之后,引起了一点争论:
观点一:去中心让函数更凸,更容易收敛。(我个人不是很明白这个意思)
因为:一个去中心化,不过是做了一个平移。何以做到让原本“绝大多数”的“凹的”东西更凸?
观点二:好像就是认同我的这个观点了。

Q3:
那么找到匹配点,去中心化之后,怎么计算两个点之间的旋转R和平移t呢?
A3:
假设找到
P={p1,p2,...,pn}P={p1,p2,...,pn}的匹配点P={p1,p2,...,pn}P′={p1′,p2′,...,pn′}那么两者之间的关系就会用如下方程式表示:

ei=pi(Rpi+t)ei=pi−(Rpi′+t)

然后根据所有的匹配点构造最小二乘问题,求使得误差平方和达到极小的R,tR,t.
minR,tJ=12i=1n||(pi(Rpi+t))||22minR,tJ=12∑i=1n||(pi−(Rpi′+t))||22

求解这个问题,分为三步:
  1. 计算两组点的质心位置p,pp,p′,公式如下:
    p=1ni=1n(pi)p=1n∑i=1n(pi)

    p=1ni=1n(pi)p′=1n∑i=1n(pi′)

    那么误差函数可以写成:
    12i=1n||(pi(Rpi+t))||2=12i=1n||(piRpitp+Rp+pRp))||212∑i=1n||(pi−(Rpi′+t))||2=12∑i=1n||(pi−Rpi′−t−p+Rp′+p−Rp′))||2

    最终化解之后得到如下目标函数:
    minR,tJ=12i=1n||pipR(pip))||2+||pRpt||minR,tJ=12∑i=1n||pi−p−R(pi′−p′))||2+||p−Rp′−t||

    上诉公式中的两部分,前面部分只与RR有关,后面部分和两个都相关,那么整体优化的话是不是可以转为先优化前面部分,然后再优化后面部分。
  2. 根据第一步求出的改为先优化前面部分,即如下:
    R=argminR12i=1n||qiRqi||2
  3. 再根据第二步求出的RR,来算出t.
    t=pRpt∗=p−Rp′

Q4:
那么在Q3中的第二步,如何求解R呢?
A4:
解法一:
化解Q3中的第二步,得到如下公式:

12i=1n||qiRqi||2=12i=1nqTiqi+qTiRTRqi2qTiRqi12∑i=1n||qi−Rqi′||2=12∑i=1nqiTqi+qi′TRTRqi′−2qiTRqi′

其中的第一项和R无关,第二项由于RRT=IRRT=I,所以最后只剩下最后一项ni=1qTiRqi∑i=1n−qiTRqi′,根据矩阵运算的关系可知:
i=1nqTiRqi=i=1ntr(RqiqTi)=tr(Ri=1nqiqTi)∑i=1n−qiTRqi′=∑i=1n−tr(Rqi′qiT)=−tr(R∑i=1nqi′qiT)

接下来就是SVD求解R的过程了,先令上式中除R的部分未W=ni=1qiqTiW=∑i=1nqi′qiT,WW是一个3*3的矩阵,对W进行SVD分解,得到如下公式
W=UVTW=U∑VT
,其中的是奇异值组成的对角矩阵,对角线元素从大到小排列,而UUV为对角矩阵,当WW满秩的时候,
R=UVT
,于是便可以解出R了,然后再根据R求解t.

解法二:
使用非线性优化的方法。以迭代的方式去找最优解。
目标函数写成:

minε=12i=1n||(piexp(ε)pi)minε=12∑i=1n||(pi−exp(ε)pi′)

这就转为了四元数表示的旋转和平移了。求解四元素的旋转与平移就可以使用求导操作,然后转为李代数的扰动模型来求,这样会更简化一些。

Q5:
ICP的优缺点是什么呢?
A5:

  • 在较好的初值情况下,可以得到很好的算法收敛性。但是这也是一个缺点,就是初始值不好的话,结果也会受影响。
  • 在找匹配点的时候,认为距离最近的点就是对应点,这点比较果断。CPD会在每个距离之前加上权值,所以相比ICP有一定的优化效果。
  • ICP对于形状相似,但是角度偏差比较大的情况,匹配效果比较差。因为是基于最近点找的。CPD的话是全局的考虑,如果是局部和全局进行匹配的话,CPD不一定能取得比ICP更好的结果。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值