简介
本文介绍正交迭代算法的求解思路和MATLAB代码实现。正交迭代算法(orthogonal iteration algorithm),简称OI算法,用来求解相对位置和相对姿态参数。
注意,本文只介绍OI算法的求解流程以及相关MATLAB代码实现。
具体的推导思路见参考文献:C.P. Lu, G. Hager, E. Mjolsness. Fast and globally convergent pose estimation from video images[J]. IEEE Trans, Pattern Analysis and Machine Intelligence 2000, 22(5):610-622.
。
OI算法
公式推导
OI算法最重要的公式有几个,首先是误差函数:
E ( R , T ) = ∑ i = 1 m ∥ e L i ∥ 2 = ∑ i = 1 m ∑ j = 1 2 ∥ ( I − V i ) ( R P i j + T ) ∥ 2 E\left( {R,T} \right) = \sum\limits_{i = 1}^m { { {\left\| { { {\bf{e}}_L}_{_i}} \right\|}^2}} = \sum\limits_{i = 1}^m {\sum\limits_{j = 1}^2 { { {\left\| {\left( {I - {V_i}} \right)\left( {RP_i^j + T} \right)} \right\|}^2}} } E(R,T)=i=1∑m∥eLi∥2=i=1∑mj=1∑2 (I−Vi)(RPij+T) 2
其中 I I I表示单位矩阵, V i V_i Vi表示沿实现方向的投影矩阵, R R R表示旋转矩阵, P P P表示特征点在目标坐标系下的位置, Q Q Q表示特征点在相机坐标系下的位置。
其次是求解当前帧的最优位置参数 T T T:
T ( k ) ( R ( k ) ) = 1 n ( I − 1 n ∑ i = 1 n V