Linear Least-Squares Optimization for Point-to-Plane ICP Surface Registration(论文笔记)(点对平面的ICP算法)

2 点对平面的ICP算法

       给定源表面和目标表面,ICP算法的每次迭代首先在源表面上的点与目标表面上的点之间组成一组对应点对。例如,对于源表面上的每个点,选择目标表面上最近的点作为其对应点。ICP迭代的输出是一个3D刚体变换M,它变换源点,使对应点之间的总误差在某一选定的误差度量下最小。

图1 两个表面之间的点对平面误差

       当使用点对平面的误差度量时,优化目标是在相应的目的点(见图1)每个源点和切平面之间距离的平方之和。更具体来说,如果s _ { i } =( s _ { i x } , s _ { i y } , s _ { i z } , 1 ) ^ { T }是一个源点,d _ { i } = ( d _ { i x } , d _ { i y } , d _ { i z } , 1 ) ^ { T }是对应的目标点,n _ { i } =( n _ { i x } , n _ { i y } , n _ { i z } , 0 ) ^ { T }是在d_{i}处的单位法向量,然后每个ICP迭代的目标是找到M_{opt}使得

M _ { o p t } = a r g \min \sum _ { i } ( ( M \cdot s _ { i } - d _ { i } ) \cdot n _ { i } ) ^ { 2 }  (1)

       其中M和M_{opt}4\times 4的3D刚体变换矩阵。

    一个3D刚体变换M包含一个旋转矩阵R ( \alpha , \beta , \gamma )和一个转换矩阵T ( t _ { x } , t _ { y } , t _ { z } ),即M = T ( t _ { x } , t _ { y } , t _ { z } ) \cdot R ( \alpha , \beta , \gamma )  (2)

       其中

T ( t _ { x }, t_{y} , t_{z} ) =\begin{pmatrix} 1 & 0 & 0 & t_{x}\\ 0 & 1 & 0 & t_{y} \\ 0 & 0 & 1 & t_{z}\\ 0 & 0 & 0 & 1 \end{pmatrix}  (3)

R ( \alpha , \beta , \gamma ) = R _ { z } ( \gamma ) \cdot R _ { y } ( \beta ) \cdot R _ { x } ( \alpha ) =\begin{pmatrix} r_{11} & r_{12} & r_{13} & 0\\ r_{21} & r_{22} & r_{23} & 0\\ r_{31} & r_{32} & r_{33} & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}  (4)

其中

r _ { 1 1 } = \cos \gamma \cos \beta

r _ { 1 2 } = - \sin \gamma \cos \alpha + \cos \gamma \sin \beta \sin \alpha

r _ { 1 3 } = \sin \gamma \sin \alpha + \cos \gamma \sin \beta \cos \alpha

r _ { 2 1 } = \sin \gamma \cos \beta

r _ { 2 2 } = \cos \gamma \cos \alpha + \sin \gamma \sin \beta \sin \alpha

r _ { 2 3 } = - \cos \gamma \sin \alpha + \sin \gamma \sin \beta \cos \alphar _ { 3 1 } = - \sin \beta

r _ { 3 2 } = \cos \beta \sin \alpha

r _ { 3 3 } = \cos \beta \cos \alpha

       R _ { x } ( \alpha ) , R _ { y } ( \beta ) , R _ { z } ( \gamma )分别是\alpha ,\beta ,\gamma弧度绕x,y,z轴的旋转。

       式1本质上是一个最小二乘优化的问题,求解它只需要确定\alpha , \beta , \gamma , t _ { x } , t _ { y } , t _ { z }这六个参数的值。然而,由于\alpha ,\beta ,\gamma是旋转矩阵R中非线性三角函数的参数,因此不能使用有效的线性最小二乘技术来求解。在下一节中,我们将介绍如何用线性最小二乘问题来近似这个非线性最小二乘问题。


3 线性估计

       当角度\theta \approx 0时,我们可以用近似值\sin \theta \approx \theta , \cos \theta \approx 1。因此,当\alpha ,\beta ,\gamma \approx 0时,

 R ( \alpha , \beta , \gamma ) \approx\begin{pmatrix} 1 & \alpha \beta -\gamma & \alpha \gamma +\beta & 0\\ \gamma & \alpha \beta \gamma +1 & \beta \gamma -\alpha & 0\\ -\beta & \alpha & 1 & 0\\ 0& 0 & 0 &1 \end{pmatrix}\approx\begin{pmatrix} 1 & -\gamma & \beta & 0\\ \gamma & 1 & -\alpha & 0\\ -\beta & \alpha & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix}= \hat{R}(\alpha ,\beta ,\gamma )  (5)

       然后,M被估计为

\widehat { M } = T ( t _ { x } , t _ { y } , t _ { z } ) \cdot \widehat { R } ( \alpha , \beta , \gamma ) =\begin{pmatrix} 1 & -\gamma & \beta & t_{x}\\ \gamma & 1 & -\alpha & t_{y}\\ -\beta & \alpha & 1 & t_{z}\\ 0 & 0 & 0 & 1 \end{pmatrix}  (6)

      现在我们可以重写式1为

\widehat { M } _ { o p t } = a r g \min ( ( \widehat { M } \cdot s _ { i } - d _ { i } ) \cdot n _ { i } ) ^ { 2 }  (7)

      式7中的每一个( \widehat { M } \cdot s _ { i } - d _ { i } ) \cdot n_{i}都能被写作一个6个参数\alpha , \beta , \gamma , t _ { x } , t _ { y } , t _ { z }的线性表示。

( \widehat { M } \cdot s _ { i } - d _ { i } ) \cdot n _ { i } =\left ( \hat{M}\cdot \begin{pmatrix} s_{ix}\\ s_{iy}\\ s_{iz}\\ 1 \end{pmatrix} -\begin{pmatrix} d_{ix}\\ d_{iy}\\ d_{iz}\\ 1 \end{pmatrix}\right)\cdot \begin{pmatrix} n_{ix}\\ n_{iy}\\ n_{iz}\\ 0 \end{pmatrix}= ( n _ { i z } s _ { i y } - n _ { i y } s _ { i z } ) \alpha + ( n _ { i x } s _ { i z } - n _ { i z } s _ { i x } ) \beta + ( n _ { i y } s _ { i x } - n _ { i x } s _ { i y } ) \gamma + n _ { i x } t _ { x }= \left [ ( n _ { i z } s _ { i y } - n _ { i y } s _ { i z } ) \alpha + ( n _ { i x } s _ { i z } - n _ { i z } s _ { i x } ) \beta + ( n _ { i y } s _ { i x } - n _ { i x } s _ { i y } ) \gamma + n _ { i x } t _ { x } + n _ { i y } t _ { y } + n _ { i z } t _ { z } \right ]- \left [n _ { i x } d _ { i x } + n _ { i y } d _ { i y } + n _ { i z } d _ { i z } - n _ { i x } s _ { i x } - n _ { i y } s _ { i y } - n _ { i z } s _ { i z } \right ]

      给定N对对应点对,我们可以将所有的( \widehat { M } \cdot s _ { i } - d _ { i } ) \cdot n_{i}排列为一个矩阵表达Ax-b

      注意到

\min \sum _ { i } ( ( \widehat { M } \cdot s _ { i } - d _ { i } ) \cdot n _ { i } ) ^ { 2 } = \min { x } \left| { A x - b } \right| ^ { 2 }  (11)

      因此,我们可以首先解出

x _ { o p t } = a r g \min _ { x } | A x - b ^ { 2 } |  (12)

      这是一个标准的线性最小二乘问题,可以使用SVD(奇异值分解)来解决。设A = U \sum V ^ { T }是A的SVD。A的伪逆定义为矩阵A ^ { + } = V \sum ^ { + } U ^ { T },其中\sum ^ { + }是取的\sum非零元素的逆(零元素保持不变)。则最小二乘问题的解为

x _ { o p t } = A ^ { + } b  (13)

      假设解为x _ { o p t } = ( \alpha _ { o p t } , \beta _ { o p t } , \gamma _ { o p t } , t _ { x o p t } , t _ { y o p t } , t _ { z o p t } ),注意到由于\widehat { R } ( \alpha _ { o p t } , \beta _ { o p t } , \gamma _ { o p t } )可能不是一个有效的旋转矩阵,我们不应该使用结果T ( t _ { x o p t } , t _ { y o p t } , t _ { z o p t } ) \cdot \widehat { R } ( \alpha _ { o p t } , \beta _ { o p t } , \gamma _ { o p t } )。相反,我们应该使用T ( t _ { x o p t } , t _ { y o p t } , t _ { z o p t } ) \cdot R ( \alpha _ { o p t } , \beta _ { o p t } , \gamma _ { o p t } ),即使它不等于式7中定义的\widehat { M } _ { o p t }

Levenberg-Marquardt-Fletcher算法是一种用于非线性最小二乘问题的迭代优化算法。该算法通过在每次迭代中结合高斯牛顿法和梯度下降法的优,来求解非线性最小二乘问题。 该算法的基本思想是通过不断调整模型参数来提高目标函数的拟合度。在每一轮迭代中,算法根据当前参数估计计算目标函数的梯度矩阵和雅可比矩阵,然后使用这些矩阵来更新参数估计。更新参数的过程是通过调整一个称为 "衰减因子" 的参数,来平衡高斯牛顿法和梯度下降法对参数的调整力度。 具体地说,算法从初始参数值开始,计算目标函数的误差平方和和梯度矩阵。然后,根据衰减因子的大小来判断是使用高斯牛顿法还是梯度下降法。如果衰减因子较大,则使用梯度下降法进行参数调整;如果衰减因子较小,则使用高斯牛顿法进行参数调整。通过不断迭代调整参数,算法逐渐收敛到最优解。 Levenberg-Marquardt-Fletcher算法具有全局收敛性、快速收敛速度和较好的数值稳定性等优。它在解决非线性最小二乘问题中广泛应用,比如曲线拟合、参数估计等领域。但是,该算法对初始参数的选择敏感,需要借助先验知识或试验来确定初始参数。 总之,Levenberg-Marquardt-Fletcher算法是一种强大的迭代优化算法,可以用于解决非线性最小二乘问题,通过不断调整模型参数来提高目标函数的拟合度和精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值