2016-03-22 42 views
1

我正在嘗試使用來自不同視圖的2D圖像進行3D模型重建。我正在從Matlab的這個示例代碼中獲得所需的結果: Structure From Motion From Two Views使用2D圖像進行3D重建時的旋轉和平移

以下是從相機拍攝的測試圖像:

手動拍攝第一和第二圖像的圖像與1釐米的翻譯: manually taken images of 1st and 2nd image with translation of 1cm

覆蓋與第一和第二圖像的匹配的特徵: overlay with matched features of first and second image

第一張和第二張圖像的手動拍攝圖像,平移2cm: manually taken images of 1st and 2nd image with translation of 2cm

覆蓋與第一和第二圖像的匹配的特徵: overlay with matched features of first and second image

這些是平移矢量和旋轉矩陣的I獲得每種情況下:

1釐米翻譯: 平移向量:[0.0245537412606279 -0.855696925927505 -0.516894461905255] 旋轉矩陣:

[0.999958322438693 0.00879926762261436 0.00243439415451741; 
-0.00887800587357739 0.999365801035702 0.0344844418829408; 
-0.00212941243132160 -0.0345046172211024 0.999402269855899] 

2釐米翻譯: 平移向量:[-0.215835469166982 -0.228607603749042 -0.949291111175908] 旋轉矩陣:

[0.999989695803078 -0.00104036790630347 -0.00441881457943975; 
0.00149220346018613 0.994626852476622 0.103514238930121; 
0.00428737874479779 -0.103519766069424 0.994618156086259] 

在文檔中,它表示它是兩個圖像之間的相對旋轉和平移。

但我無法理解這些數字的含義以及上述數值的單位是多少。

任何人都可以至少讓我知道我們獲得翻譯和旋轉的單位是什麼,或者如何提取旋轉和平移,它們分別與cm/mm和弧度/度這樣的真實世界值相媲美?

回答

1

您可以將旋轉矩陣轉換爲axis-angle-representation,您可以在其中獲得弧度角。這可以使用vrrotmat2vec函數完成,也可以通過在this之後自己實現翻譯器來完成,前提是您無權訪問包。角度將以弧度表示。

當涉及到翻譯,但你不會得到它在一個單位,在現實世界中是有道理的,因爲你不知道規模。不幸的是,這是一般運動結構的問題。不可能知道你是否將圖像放在距離某物很遠或很遠的地方。

當使用運動結構構建3D模型時,幸運的是這並不是問題,因爲您仍然可以正確地獲得相對距離。因此,您將能夠捕捉場景(通過遵循本教程的其餘部分),但您無法說出是否有東西是2釐米或2公里高,除非您在圖片中有某些東西,您知道真實的人生大小。

希望它能幫助:)

+0

其實本教程的最後一步解釋如何衡量事物在度量距離現場,如果你知道一個對象 – rasan076

+0

的大小其實我已經告訴我的地面實況數據以毫米爲單位的x,y,z軸平移(通過使用相機移動計算)。有什麼方法可以將我的翻譯與毫米級的基礎真值進行比較嗎?因爲我想找到提取值的準確性。 –