1. 介绍

ICP(Iterative Closest Point):求一组平移和旋转使得两个点云之间重合度尽可能高。

2. 算法流程

找最近邻关联点,求解R,tR,tR,tR,tR,tR,tR,tR,tR,tR,tR,tR,t,如此反复直到重合程度足够高。

3. 数学描述

X={x1,x2,...,xNx}X=\left\{ {x_1,x_2,...,x_{Nx} }\right\}X={x1,x2,...,xNx}

Y={y1,y2,...,yNy}Y=\left\{ {y_1,y_2,...,y_{Ny} } \right\}Y={y1,y2,...,yNy}

由于是变换前后对应点云,则Nx=NyNx=NyNx=Ny

min⁡E(R,t)=min⁡∑i=1Nx∥yi−(Rxi+t)∥2\min E(R,t) = \min \sum\nolimits_{i = 1}^{Nx} {{{\left\| {{y_i} - \left( {R{x_i} + t} \right)} \right\|}^2}}minE(R,t)=mini=1Nxyi(Rxi+t)2

求解使其最小的R,tR,tR,t

4. 解法

4.1 SVD直接解法

min⁡E(R,t)=min⁡∑i=1Nx∥yi−(Rxi+t)∥2=min⁡∑i=1Nx∥yi−Rxi−t−μy+Rμx+μy−Rμx∥2 \begin{aligned} \min E(R,t) &= \min \sum\nolimits_{i = 1}^{Nx} {{{\left\| {{y_i} - \left( {R{x_i} + t} \right)} \right\|}^2}} \\ &= \min \sum\nolimits_{i = 1}^{Nx} {{{\left\| {{y_i} - R{x_i} - t - {\mu _y} + R{\mu _x} + {\mu _y} - R{\mu _x}} \right\|}^2}} \end{aligned} minE(R,t)=mini=1Nxyi(Rxi+t)2=mini=1NxyiRxitμy+Rμx+μyRμx2

其中

μx=∑i=1Nxxi,μy=∑i=1Nyyi \mu _x = \sum\nolimits{i = 1}^{Nx} {x_i} ,\mu _y = \sum\nolimits_{i = 1}^{Ny} {y_i} μx=i=1Nxxi,μy=i=1Nyyi

min⁡E(R,t)=min⁡∑i=1Nx∥yi−Rxi−t−μy+Rμx+μy−Rμx∥2=min⁡∑i=1Nx∥yi−μy−R(xi−μx)+μy−Rμx−t∥2=min⁡∑i=1Nx(∥yi−μy−R(xi−μx)∥2+∥μy−Rμx−t∥2+2[yi−μy−R(xi−μx)]T(μy−Rμx−t)) \begin{aligned} \min E(R,t) &=\min \sum\nolimits_{i = 1}^{Nx} {{{\left\| {{y_i} - R{x_i} - t - {\mu _y} + R{\mu _x} + {\mu _y} - R{\mu _x}} \right\|}^2}} \\ &=\min \sum\nolimits_{i = 1}^{Nx} {\left\| {y_i-\mu_y-R(x_i-\mu_x)+\mu_y-R\mu_x-t}\right\|}^2 \\ &=\min \sum\nolimits_{i = 1}^{Nx} ({\left\| {y_i-\mu_y-R(x_i-\mu_x)} \right\|}^2 +{\left\|{\mu_y-R\mu_x-t}\right\|}^2 \\ &+2[y_i-\mu_y-R(x_i-\mu_x)]^T(\mu_y-R\mu_x-t)) \end{aligned} minE(R,t)=mini=1NxyiRxitμy+Rμx+μyRμx2=mini=1NxyiμyR(xiμx)+μyRμxt2=mini=1Nx(yiμyR(xiμx)2+μyRμxt2+2[yiμyR(xiμx)]T(μyRμxt))

其中∑i=1Nxxi−Nxμx=0,∑i=1Nyyi−Nyμy=0\sum\nolimits_{i = 1}^{Nx}x_i-Nx\mu_x=0 ,\sum\nolimits_{i = 1}^{Ny}y_i-Ny\mu_y=0i=1NxxiNxμx=0,i=1NyyiNyμy=0

min⁡E(R,t)=min⁡∑i=1Nx(∥yi−μy−R(xi−μx)∥2+∥μy−Rμx−t∥2) \min E(R,t) =\min \sum\nolimits_{i = 1}^{Nx} ({\left\| {y_i-\mu_y-R(x_i-\mu_x)} \right\|}^2 +{\left\|{\mu_y-R\mu_x-t}\right\|}^2) minE(R,t)=mini=1Nx(yiμyR(xiμx)2+μyRμxt2

这样第一项中只含有变量RRR,第二项含有R,tR,tR,t,求整体的最小值可以使第一项的值最小,将得到的RRR,带入第二项中,再使第二项为零求出ttt的值。

min⁡∑i=1Nx∥yi−μy−R(xi−μx)∥2=min⁡∑i=1Nx∥yi′−Rxi′∥2=min⁡∑i=1Nx(yi′−Rxi′)T(yi′−Rxi′)=min⁡∑i=1Nx∥yi′∥2+xi′TRTRxi′−xi′TRTyi′−yi′TRxi′=min⁡∑i=1Nx∥yi′∥2+xi′TRTRxi′−2xi′TRTyi′ \begin{aligned} \min \sum\nolimits_{i = 1}^{Nx} &{\left\| {y_i-\mu_y-R(x_i-\mu_x)} \right\|}^2=\min \sum\nolimits_{i = 1}^{Nx} {\left\| {y_i'-Rx_i'} \right\|}^2 \\ &=\min \sum\nolimits_{i = 1}^{Nx} {(y_i'-Rx_i')^T(y_i'-Rx_i')} \\ &=\min \sum\nolimits_{i = 1}^{Nx} {\left\| y_i' \right\|}^2+x_i'^TR^TRx_i'-x_i'^TR^Ty_i'-y_i'^TRx_i' \\ &=\min \sum\nolimits_{i = 1}^{Nx} {\left\| y_i' \right\|}^2+x_i'^TR^TRx_i'-2x_i'^TR^Ty_i' \end{aligned} mini=1NxyiμyR(xiμx)2=mini=1NxyiRxi2=mini=1Nx(yiRxi)T(yiRxi)=mini=1Nxyi2+xiTRTRxixiTRTyiyiTRxi=mini=1Nxyi2+xiTRTRxi2xiTRTyi

求解原函数最小值等同于求解:min⁡∑i=1Nx−xi′TRTyi′\min \sum\nolimits_{i = 1}^{Nx}{-x_i'^TR^Ty_i'}mini=1NxxiTRTyi

等同于求解:max⁡∑i=1Nxxi′TRTyi′\max \sum\nolimits_{i = 1}^{Nx}{x_i'^TR^Ty_i'}maxi=1NxxiTRTyi

max⁡∑i=1Nxxi′TRTyi′=max⁡Trace(∑i=1NxRxi′yi′T)=max⁡Trace(RH) \max \sum\nolimits_{i = 1}^{Nx}{x_i'^TR^Ty_i'}=\max Trace\left( {\sum\nolimits_{i = 1}^{Nx}{Rx_i'y_i'^T}} \right)=\max Trace(RH) maxi=1NxxiTRTyi=maxTrace(i=1NxRxiyiT)=maxTrace(RH)

由定理可知对于正定矩阵AATAA^TAAT和任意正交矩阵BBB,有:Tr(AAT)≥Tr(BAAT)Tr(AA^T) \ge Tr(BAA^T)Tr(AAT)Tr(BAAT)

则对矩阵HHH进行SVD分解:

H=UΣVT H=U\Sigma V^T H=UΣVT

R=VUTR=VU^TR=VUT,则由定理得到此时的RRR使得原式最大

再对应求解:t=μy−Rμxt=\mu_y-R\mu_xt=μyRμx

4.2 迭代求解

将ICP构建成一个优化问题

F(x)=∑i=1n∥xi−Tyi∥22 F(x)=\sum\nolimits_{i = 1}^{n}{\left\| x_i-Ty_i \right\|}_2^2 F(x)=i=1nxiTyi22

其中TTT为位姿变换矩阵

T=[Rt01] T = {\begin{bmatrix} R&{\rm{t}}\\ 0&1 \end{bmatrix}} T=[R0t1]

求解优化问题需要构建残差约束并计算雅可比矩阵,这里的残差为xi−Tyix_i-Ty_ixiTyi(可以理解为为变换后的点云与目标待配准点云之间的差异),计算雅可比矩阵可以使用李代数的方法对目标函数求导。

5.(非线性优化问题详细公式推导)

问题描述:

对于一个目标函数F(X)=∥f(X)∥2F(X)= {\left\| f(X) \right\|}^2F(X)=f(X)2,其中F:Rn→Rm,X∈RnF:\mathbb{R}^n \to \mathbb{R}^m ,X \in \mathbb{R}^nF:RnRm,XRn ,需要求解XXX使得目标函数F(X)F(X)F(X) 取值最小。如果f(X)f(X)f(X)为线性函数,则可以简化为最小二乘问题,可以求得最优解,但f(X)f(X)f(X)为非线性函数则无法直接求解,需要迭代求解。

F(X+ΔX)=∥f(X+ΔX)∥2 F(X+\Delta X)= {\left\| f(X+\Delta X) \right\|}^2 F(X+ΔX)=f(X+ΔX)2

迭代求ΔX\Delta XΔX使得F(X+ΔX)F(X+\Delta X)F(X+ΔX)减小,直到其足够小并接近最小值时停止。

那么ΔX\Delta XΔX的取值该如何确定?

1. 高斯法

F(X+ΔX)F(X+\Delta X)F(X+ΔX)进行Taylor Expansion得到:

F(X+ΔX)=F(X)+JFΔX+12ΔXTHFΔX+O(ΔX) F(X+\Delta X)=F(X)+J_F\Delta X+\frac{1}{2}\Delta X^TH_F\Delta X+O(\Delta X) F(X+ΔX)=F(X)+JFΔX+21ΔXTHFΔX+O(ΔX)

只取到二阶项,其中JJJFFF的雅可比矩阵,HHH为海塞矩阵,O(ΔX)O(\Delta X)O(ΔX)为忽略的高阶项。


雅可比矩阵定义:

有矩阵函数F(X)F(X)F(X),其中F:Rn→Rm,X∈RnF:\mathbb{R}^n \to \mathbb{R}^m ,X \in \mathbb{R}^nF:RnRm,XRn

JF=∂F(X)∂XT J_F=\frac{\partial F(X)}{\partial X^T} JF=XTF(X)


使等式对ΔX\Delta XΔX求导为000得到:

∂F(X+ΔX)∂ΔX=JF+HFΔX=0 \frac{\partial F(X+\Delta X)}{\partial \Delta X}=J_F+H_F\Delta X=0 ΔXF(X+ΔX)=JF+HFΔX=0

由此得到ΔX\Delta XΔX的取值。

2. 高斯-牛顿法

F(X+ΔX)=∥f(X+ΔX)∥2 F(X+\Delta X)= {\left\| f(X+\Delta X) \right\|}^2 F(X+ΔX)=f(X+ΔX)2

f(X+ΔX)f(X+\Delta X)f(X+ΔX)进行Taylor Expansion得到:

f(X+ΔX)=f(X)+JfΔX+O(ΔX) f(X+\Delta X)=f(X)+J_f\Delta X+O(\Delta X) f(X+ΔX)=f(X)+JfΔX+O(ΔX)

只取到一阶项。

F(X+ΔX)=∥f(X+ΔX)∥2=(f(X)+JfΔX)T(f(X)+JfΔX)=∥f(X)∥2+ΔXTJfTJfΔX+ΔXTJfTf(X)+f(X)TJfΔX=∥f(X)∥2+ΔXTJfTJfΔX+2f(X)TJfΔX \begin{aligned} F(X+\Delta X) &= {\left\| f(X+\Delta X) \right\|}^2 \\ &= (f(X)+J_f\Delta X)^T(f(X)+J_f\Delta X) \\ &={\left\| f(X) \right\|}^2+\Delta X^TJ_f^TJ_f\Delta X+\Delta X^TJ_f^Tf(X)+f(X)^TJ_f\Delta X \\ &={\left\| f(X) \right\|}^2+\Delta X^TJ_f^TJ_f\Delta X+2f(X)^TJ_f\Delta X \end{aligned} F(X+ΔX)=f(X+ΔX)2=(f(X)+JfΔX)T(f(X)+JfΔX)=f(X)2+ΔXTJfTJfΔX+ΔXTJfTf(X)+f(X)TJfΔX=f(X)2+ΔXTJfTJfΔX+2f(X)TJfΔX

使等式对ΔX\Delta XΔX求导等于000得到:

∂F(X+ΔX)∂ΔX=2JfTJfΔX+2f(X)TJf=0 \frac{\partial F(X+\Delta X)}{\partial \Delta X}=2J_f^TJ_f\Delta X+2f(X)^TJ_f=0 ΔXF(X+ΔX)=2JfTJfΔX+2f(X)TJf=0

可以求得

JfTJfΔX=−f(X)TJf J_f^TJ_f\Delta X=-f(X)^TJ_f JfTJfΔX=f(X)TJf

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐