ICP算法和优化问题详细公式推导
ICP(Iterative Closest Point):求一组平移和旋转使得两个点云之间重合度尽可能高。
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
minE(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)=min∑i=1Nx∥yi−(Rxi+t)∥2
求解使其最小的R,tR,tR,t
4. 解法
4.1 SVD直接解法
minE(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)=min∑i=1Nx∥yi−(Rxi+t)∥2=min∑i=1Nx∥yi−Rxi−t−μy+Rμx+μy−Rμx∥2
其中
μ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
则
minE(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)=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))
其中∑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=0∑i=1Nxxi−Nxμx=0,∑i=1Nyyi−Nyμy=0
minE(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)=min∑i=1Nx(∥yi−μy−R(xi−μx)∥2+∥μy−Rμx−t∥2)
这样第一项中只含有变量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} 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′
求解原函数最小值等同于求解:min∑i=1Nx−xi′TRTyi′\min \sum\nolimits_{i = 1}^{Nx}{-x_i'^TR^Ty_i'}min∑i=1Nx−xi′TRTyi′
等同于求解:max∑i=1Nxxi′TRTyi′\max \sum\nolimits_{i = 1}^{Nx}{x_i'^TR^Ty_i'}max∑i=1Nxxi′TRTyi′
max∑i=1Nxxi′TRTyi′=maxTrace(∑i=1NxRxi′yi′T)=maxTrace(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) max∑i=1Nxxi′TRTyi′=maxTrace(∑i=1NxRxi′yi′T)=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=μy−Rμ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=1n∥xi−Tyi∥22
其中TTT为位姿变换矩阵
T=[Rt01] T = {\begin{bmatrix} R&{\rm{t}}\\ 0&1 \end{bmatrix}} T=[R0t1]
求解优化问题需要构建残差约束并计算雅可比矩阵,这里的残差为xi−Tyix_i-Ty_ixi−Tyi(可以理解为为变换后的点云与目标待配准点云之间的差异),计算雅可比矩阵可以使用李代数的方法对目标函数求导。
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:Rn→Rm,X∈Rn ,需要求解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)
只取到二阶项,其中JJJ为FFF的雅可比矩阵,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:Rn→Rm,X∈Rn
JF=∂F(X)∂XT J_F=\frac{\partial F(X)}{\partial X^T} JF=∂XT∂F(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 ∂ΔX∂F(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 ∂ΔX∂F(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
更多推荐



所有评论(0)