cv姿态评估:Levenberg-Marquardt优化-阻尼最小二乘(DLS)

'''
自己整理备忘,也供后人参考。
[email protected]

本节记录了cv姿态评估的常见思路,建立模型的方法与Levenberg-Marquardt优化原理。
在下一节中,我们将讨论如何在工程上将旋转向量、欧拉角与四元数之间进行转换。
'''

基础知识:

仿射变换是计算机视觉领域应用十分广泛的特殊变换。是指在几何中,一个向量进行一次线性变换并接上一个平移,变换为另一个向量。对于一个三维直角坐标系,基于每个坐标轴的旋转具有的规则旋转空间的集合,可以表示任何三维向量。在有限维的情况,每个仿射变换可以由一个矩阵A和一个向量b给出,对应于一个矩阵和一个向量的乘法,而仿射变换的复合对应于普通的矩阵乘法,只要加入一个额外的行到矩阵的底下,这一行全部是0除了最右边是一个1,而列向量的底下要加上一个1。

一个对向量平移向量b,与旋转放大缩小 A的仿射映射为

在齐次坐标上,等价于

在分形的研究里,收缩平移仿射映射可以制造制具有自相似性的分形。一个在两个仿射空间之间的仿射变换,是在向量上呈现线性之坐标点的变换(即为空间中点与点之间的向量)。以符号表示的话,  使得 ,决定任一对点的线性变换:

或者

 

在二维坐标系上绕原点进行的二维旋转:

如图所示,当点v绕原点转动θ至v',假设v点的坐标是(x,y),那么可以推导得到v'(x',y'),过程如下:

参数如图,我们发现:

x=rcosϕ

y=rsinϕ

x′=rcos(θ+ϕ)

y′=rsin(θ+ϕ)

通过三角函数展开得:

x′=rcosθcosϕ−rsinθsinϕ

y′=rsinθcosϕ+rcosθsinϕ

代入x,y表达式可得:

x′=xcosθ−ysinθ

y′=xsinθ+ycosθ

使用矩阵表示:

绕任意轴的三维旋转

绕任意轴的三维旋转可以将旋转分解为一系列基本的二维旋转,如图所示:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Levenberg-Marquardt算法是一种非线性最小二乘算法,用于最小化非线性函数与观测数据之间的差异。该算法用于曲线拟合、参数估计和优化等问题。 该算法通过迭代的方式不断调整参数的值,使得非线性函数与观测数据之间的方差最小化。其基本思想是结合了高斯-牛顿法和梯度下降法的优点,在每一步迭代中通过计算特定的正则化矩阵来调整参数的值。 具体而言,Levenberg-Marquardt算法在每一步迭代中计算出一个更新的参数值,通过将目标函数的Hessian矩阵与一个正则化矩阵进行求和,然后求解一个线性方程组来获得新的参数值。正则化矩阵的大小是一个可调整的参数,用于控制算法在高斯-牛顿法和梯度下降法之间的平衡。 Levenberg-Marquardt算法具有较快的收敛速度和良好的参数估计性能,可以应对多种不同的非线性函数和观测数据。此外,该算法对于初始参数值的选择也比较鲁棒,不容易陷入局部最优。 总结来说,Levenberg-Marquardt算法是一种高效的非线性最小二乘算法,可以用于解决曲线拟合和参数估计等问题。它通过结合高斯-牛顿法和梯度下降法的优点,在每一步迭代中利用正则化矩阵调整参数值,以最小化非线性函数与观测数据之间的差异。 ### 回答2: Levenberg-Marquardt算法是一种用于求解非线性最小二乘问题的优化算法。它结合了高斯-牛顿法和梯度下降法的优点,能够更加稳定和快速地找到最优解。 该算法的基本思想是通过迭代调整模型参数来逐步逼近最小二乘问题的最优解。在每一步迭代中,算法通过计算目标函数的一阶导数(梯度)和二阶导数(雅可比矩阵的转置乘以雅可比矩阵)来确定参数的更新方向。根据参数更新的幅度和目标函数的变化情况,算法会自动调整步长,以保证迭代过程的稳定性和收敛性。 Levenberg-Marquardt算法与高斯-牛顿法的区别在于,它引入了一个调整因子,即Levenberg-Marquardt因子,用于平衡梯度下降和高斯-牛顿的比例。如果梯度下降方向过大,可能会导致迭代过程发散,而如果高斯-牛顿方向过大,可能会导致更新步长过大。通过调整因子的大小,Levenberg-Marquardt算法可以在梯度下降和高斯-牛顿之间取得平衡,从而更好地控制迭代过程。 在实际应用中,Levenberg-Marquardt算法被广泛应用于数据拟合、曲线拟合、参数估计等问题。由于其收敛速度较快且稳定性较好,被认为是求解非线性最小二乘问题的一种有效方法。 ### 回答3: Levenberg-Marquardt算法是一种用于求解非线性最小二乘问题的优化算法。它是将高斯-牛顿法和最速下降法结合起来的一种方法。 在非线性最小二乘问题中,我们要求解一个形式为F(x) = 0的方程组,其中F(x)是一个向量函数,x是待求解的参数向量。Levenberg-Marquardt算法的目标是找到使得F(x)最小的x。该算法通过反复迭代来逐步逼近最优解。 Levenberg-Marquardt算法的关键思想是结合了高斯-牛顿法和最速下降法的优点。在每一次迭代中,算法会首先计算Jacobian矩阵J,然后通过将J的转置矩阵与J相乘得到Hessian矩阵H。接下来,算法会计算一个补充项 λI,其中λ是一个正数,I是单位矩阵。然后,算法就以高斯-牛顿法的方式求解线性方程组(H + λI)∆x = -JF(x),其中∆x是参数的增量。 如果λ较小,算法的性能更接近高斯-牛顿法;如果λ较大,算法的性能更接近最速下降法。因此,λ的取值将直接影响算法的收敛速度。 Levenberg-Marquardt算法具有较快的收敛速度和良好的稳定性。然而,由于需要在每次迭代中计算Jacobian矩阵和Hessian矩阵,算法在处理大规模问题时可能会面临计算和存储的挑战。此外,算法的初值对于最终结果也具有较大的影响。 总之,Levenberg-Marquardt算法是一种有效的非线性最小二乘优化算法,可以用于求解具有一定复杂度的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值