搜索
您的当前位置:首页正文

ICP算法和优化问题详细公式推导

来源:步旅网

1. 介绍

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

2. 算法流程

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

3. 数学描述

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

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

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

min ⁡ E ( R , t ) = min ⁡ ∑ i = 1 N x ∥ y i − ( R x i + 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 , t R,t R,t

4. 解法

4.1 SVD直接解法

min ⁡ E ( R , t ) = min ⁡ ∑ i = 1 N x ∥ y i − ( R x i + t ) ∥ 2 = min ⁡ ∑ i = 1 N x ∥ y i − R x i − 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 = 1 N x x i , μ y = ∑ i = 1 N y y i \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 = 1 N x ∥ y i − R x i − t − μ y + R μ x + μ y − R μ x ∥ 2 = min ⁡ ∑ i = 1 N x ∥ y i − μ y − R ( x i − μ x ) + μ y − R μ x − t ∥ 2 = min ⁡ ∑ i = 1 N x ( ∥ y i − μ y − R ( x i − μ x ) ∥ 2 + ∥ μ y − R μ x − t ∥ 2 + 2 [ y i − μ y − R ( x i − μ 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 = 1 N x x i − N x μ x = 0 , ∑ i = 1 N y y i − N y μ 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=1NxxiNxμx=0,i=1NyyiNyμy=0

min ⁡ E ( R , t ) = min ⁡ ∑ i = 1 N x ( ∥ y i − μ y − R ( x i − μ 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

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

min ⁡ ∑ i = 1 N x ∥ y i − μ y − R ( x i − μ x ) ∥ 2 = min ⁡ ∑ i = 1 N x ∥ y i ′ − R x i ′ ∥ 2 = min ⁡ ∑ i = 1 N x ( y i ′ − R x i ′ ) T ( y i ′ − R x i ′ ) = min ⁡ ∑ i = 1 N x ∥ y i ′ ∥ 2 + x i ′ T R T R x i ′ − x i ′ T R T y i ′ − y i ′ T R x i ′ = min ⁡ ∑ i = 1 N x ∥ y i ′ ∥ 2 + x i ′ T R T R x i ′ − 2 x i ′ T R T y i ′ \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 = 1 N x − x i ′ T R T y i ′ \min \sum\nolimits_{i = 1}^{Nx}{-x_i'^TR^Ty_i'} mini=1NxxiTRTyi

等同于求解: max ⁡ ∑ i = 1 N x x i ′ T R T y i ′ \max \sum\nolimits_{i = 1}^{Nx}{x_i'^TR^Ty_i'} maxi=1NxxiTRTyi

max ⁡ ∑ i = 1 N x x i ′ T R T y i ′ = max ⁡ T r a c e ( ∑ i = 1 N x R x i ′ y i ′ T ) = max ⁡ T r a c e ( R H ) \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)

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

则对矩阵 H H H进行SVD分解:

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

R = V U T R=VU^T R=VUT,则由定理得到此时的 R R R使得原式最大

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

4.2 迭代求解

将ICP构建成一个优化问题

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

其中 T T T为位姿变换矩阵

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

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

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

问题描述:

对于一个目标函数 F ( X ) = ∥ f ( X ) ∥ 2 F(X)= {\left\| f(X) \right\|}^2 F(X)=f(X)2,其中 F : R n → R m , X ∈ R n F:\mathbb{R}^n \to \mathbb{R}^m ,X \in \mathbb{R}^n F:RnRm,XRn ,需要求解 X X X使得目标函数 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 ) + J F Δ X + 1 2 Δ X T H F Δ 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)

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


雅可比矩阵定义:

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

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


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

∂ F ( X + Δ X ) ∂ Δ X = J F + H F Δ 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 ) + J f Δ 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 ) + J f Δ X ) T ( f ( X ) + J f Δ X ) = ∥ f ( X ) ∥ 2 + Δ X T J f T J f Δ X + Δ X T J f T f ( X ) + f ( X ) T J f Δ X = ∥ f ( X ) ∥ 2 + Δ X T J f T J f Δ X + 2 f ( X ) T J f Δ 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求导等于 0 0 0得到:

∂ F ( X + Δ X ) ∂ Δ X = 2 J f T J f Δ X + 2 f ( X ) T J f = 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

可以求得

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

因篇幅问题不能全部显示,请点此查看更多更全内容

Top