我有一點問題。我編寫了一個程序,使用相機和深度信息在每個幀中提取一組三維點。這些點位於攝像機座標系中,這意味着原點位於攝像機中心,x是水平距離,y垂直距離,z是距攝像機的距離(沿着光軸)。一切都以米爲單位。即點(2,-1,5)沿照相機的光軸向右兩米,下一米和五米。計算攝像機的運動出相應的3d點集
我在每個時間範圍內計算這些點,並且也知道對應關係,就像我知道t-1
中的哪個點屬於t
中的哪個3d點。
我現在的目標是計算我的世界座標系中每個時間範圍內攝像機的運動(z向上代表高度)。我想計算相對運動,但也是從一些開始位置開始的絕對運動,以便可視化攝像機的軌跡。
這是在相機中的點的一個實例的數據集的一幀與當前(左)和先前的3D位置(右)座標:
-0.174004 0.242901 3.672510 | -0.089167 0.246231 3.646694
-0.265066 -0.079420 3.668801 | -0.182261 -0.075341 3.634996
0.092708 0.459499 3.673029 | 0.179553 0.459284 3.636645
0.593070 0.056592 3.542869 | 0.675082 0.051625 3.509424
0.676054 0.517077 3.585216 | 0.763378 0.511976 3.555986
0.555625 -0.350790 3.496224 | 0.633524 -0.354710 3.465260
1.189281 0.953641 3.556284 | 1.274754 0.938846 3.504309
0.489797 -0.933973 3.435228 | 0.561585 -0.935864 3.404614
由於我會喜歡使用OpenCV,如果可能的話,我在OpenCV 2.3中找到了estimateAffine3D()
函數,它使用兩個3D點輸入向量並使用RANSAC計算它們之間的仿射變換。
作爲輸出,我得到一個3x4變換矩陣。
我已經試着通過設置RANSAC參數來使計算更準確,但很多時候trnasformation矩陣顯示的是相當大的平移運動。正如你在樣本數據中看到的那樣,運動通常很小。
所以我想問問,如果有人有什麼我可以嘗試的另一個想法? OpenCV是否爲此提供了其他解決方案?
此外,如果我有相機在每個時間範圍內的相對運動,我將如何將其轉換爲世界座標?另外我怎麼會得到從一個點(0,0,0)開始的絕對位置,所以我有每個時間幀的相機位置(和方向)?
如果有人能給我一些建議,那會很棒!
謝謝!
更新1:
@邁克爾Kupchick不錯的答案後,我試圖檢查的OpenCV的estimateAffine3D()函數有多好作品。所以,我創建了兩個小測試集的6點對,只是有一個翻譯,不旋轉,並看看在所產生的變換矩陣:
測試設置1:
1.5 2.1 6.7 | 0.5 1.1 5.7
6.7 4.5 12.4 | 5.7 3.5 11.4
3.5 3.2 1.2 | 2.5 2.2 0.2
-10.2 5.5 5.5 | -11.2 4.5 4.5
-7.2 -2.2 6.5 | -8.2 -3.2 5.5
-2.2 -7.3 19.2 | -3.2 -8.3 18.2
變換矩陣:
1 -1.0573e-16 -6.4096e-17 1
-1.3633e-16 1 2.59504e-16 1
3.20342e-09 1.14395e-09 1 1
測試設置2:
1.5 2.1 0 | 0.5 1.1 0
6.7 4.5 0 | 5.7 3.5 0
3.5 3.2 0 | 2.5 2.2 0
-10.2 5.5 0 | -11.2 4.5 0
-7.2 -2.2 0 | -8.2 -3.2 0
-2.2 -7.3 0 | -3.2 -8.3 0
變換矩陣:
1 4.4442e-17 0 1
-2.69695e-17 1 0 1
0 0 0 0
- >這讓我說一下右一見鍾情兩個轉變矩陣...
假設這是對的,我怎麼會重新計算的軌跡當我在每個時間步有這個變換矩陣?
任何人的任何提示或想法,爲什麼它是壞的?
難道你的結果轉換矩陣的第一行全是零?我的意思是旋轉矩陣的對角線應該全是1或者一些接近的值,你確定你正在正確地閱讀矩陣嗎? – 2012-03-01 11:23:21
哦,對了!我讀了轉換矩陣的權利,但我有一個輸入向量中的錯誤。所以我將轉換矩陣改爲現在的樣子,這對於旋轉和平移更有意義。這不是我正在尋找的那種格式嗎? ICP算法不會給我關於這個數據集的相同嗎? – 2012-03-01 12:23:52
最後一個矩陣仍然看起來很奇怪,從第二行第三列看看1,在第一個矩陣的結果看起來好的 – 2012-03-01 13:48:09