回答

0

首先將您的旋轉矩陣轉換爲旋轉向量。現在你有每個攝像頭2個3D矢量,稱它們爲A1,A2,B1,B2。你有他們的所有4相對於一些原點O您所需要的規則是

A relative to B = (A relative to O)- (B relative to O) 

將該規則應用於你的2個向量,你將自己的姿態相對要彼此。

有關從旋轉矩陣轉換爲歐拉角的文檔可以在here以及許多其他地方找到。如果您使用openCV,則可以使用RodriguesHere是我找到的一些matlab/octave代碼。

+0

非常感謝您的回答!你能解釋一下如何將旋轉矩陣轉換成2個3D矢量嗎?我想你是指旋轉矩陣的軸角表示。我有3x3旋轉矩陣R1,第一個攝像機的3D平移矢量T1和第二個攝像機的R2,T2。 – Karmar

+0

您將旋轉矩陣轉換爲1 3d矢量,平移矢量是另一個3d矢量,是的,我的意思是軸角表示。 – Hammer

+0

謝謝。還有一個問題。你可以給C上的鏈接或源代碼進行旋轉矩陣 - >軸角度轉換嗎? – Karmar

4

這是一個更簡單的解決方案,因爲您已經擁有3x3的旋轉矩陣R1和R2以及3x1的平移向量t1和t2。

這些表達從世界座標系到每個攝像機的運動,即矩陣,如果p是以世界座標系表示的點,那麼用相機1幀表示的相同點就是p1 = R1 * p + t1。

從攝像機1到攝像機2的運動僅僅是(a)從攝像機1到世界框的運動,和(b)從世界框到攝像機2的運動的組成。可以很容易地計算出這個組成如下:

  1. 形成4x4旋轉平移矩陣Qw1 = [R1 t1]和Qw2 = [R2 t2],其中第4行等於[0 0 0 1]。這些矩陣完全表示從世界座標框到相機1和2的旋轉平移。
  2. 從攝像機1到世界框架的運動簡直是Q1w = inv(Qw1)。這裏,inv()是代數逆矩陣,即對於每個非奇異矩陣X使得inv(X)* X = X * inv(X)= IdentityMatrix的那個矩陣。
  3. 從攝像機1到攝像機2的旋轉翻譯那麼Q12 = Q1w * Qw2,反之亦然,從相機2到1的一個是Q21 = Q2w * Qw1 = inv(Qw2)* Qw1。

一旦你有了Q12,你可以從它的上部3x3子矩陣和右邊3x1子列分別提取旋轉和平移部分,如果你願意的話。

+0

感謝您的反饋和詳細的解釋! – Karmar