旋转的非线性优化

Piz*_*Fan 5 3d graphics computer-vision

前几天我和一位工程师聊天,我们都对与捆绑调整有关的问题感到难过.对于复习,这里有一个解释问题的好链接:

http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/ZISSERMAN/bundle/bundle.html

该问题需要优化超过3n + 11m的参数.摄像机优化包括5个固有摄像机参数,3个DOF用于位置(x,y,z),3个DOF用于旋转(俯仰,偏航和滚动).

现在,当您真正实现此算法时,旋转矩阵包含9个数字的优化.Euler的Axis定理说这9个数字是相关的,总体上只有3个自由度.

假设您使用规范化的四元数表示旋转.然后你有3个数字的优化.同样的DOF.

一种表示方式在计算上更有效,而且比另一种更好吗?使用旋转四元数优于旋转矩阵,您是否可以使用更少的变量进行优化?

Ash*_*Ash 5

你永远不会超过9个数字!当然这会效率低下.您只需要3个参数的一个有效表示是R使用组合SO(3)的李代数参数化旋转矩阵.如果您不熟悉李代数,这里有一个教程,以直观(但有时过于简化)的方式解释所有内容.解释它在短短的句子,在该表示中,每个旋转矩阵R写为expmat(a*G_1+b*G_2+c*G_3)其中expmat是矩阵指数,并且G_i是的李代数的"发电机" SO(3) ,即,在切空间到SO(3 )在身份.因此,要估计旋转矩阵,您只需要学习三个参数a,b,c.这大致相当于在三个旋转周围分解旋转矩阵x,y,z并估计这些旋转的三个角度.