2013-12-08 43 views
-1

我必須從二維圖像進行三維重建。我的老師告訴我,第一步是通過拍攝棋盤上的照片來獲取相機矩陣。我已經有了這些照片,我正在使用OpenCV來獲取相機矩陣。該矩陣具有以下形式:具有相機矩陣的密集三維重建

Camera Matrix

我現在應該怎麼辦?我的老師告訴我,我必須從圖像中獲得一些功能,然後與它們匹配... 但是,我該如何使用這個矩陣?我讀過關於運動結構的文章,但是我沒有發現使用這個矩陣的任何內容。一旦我從圖像中找到匹配,過程是什麼?

+0

*詢問代碼的問題必須證明對所解決問題的最小理解。包括嘗試的解決方案,爲什麼他們不工作,以及預期的結果* – Manu343726

+0

老實說,如果您不知道內置攝像頭校準矩陣是什麼或者做了什麼,那麼您可以在學習之前進行很多*學習。解決這個問題。 –

+0

@Manu343726,由於OP不需要代碼,所以這裏的引用無關緊要。 –

回答

8

如果從運動的路線走下去的結構,你正在嘗試做的是遠離瑣碎,所以一定要確保你和你的老師明白。

該矩陣被稱爲照相機校準矩陣(或者在攝影而言,內部定向)。一般來說運動算法的結構要求每個攝像頭都有這個結構,從那裏,你必須確定每個攝像頭幀的外部方向。外觀包括空間中的X,Y,Z位置以及相機指向方向的描述(通常以歐拉角描述)。這可以使用匹配功能來完成。一旦你有了外觀,你就可以使用這些信息和特徵來對匹配特徵進行三角測量。

所以回顧一下一般SFM過程:

  1. 校準相機(你已經完成這件事)。
  2. 跨場景收集圖像。
  3. 查找和匹配每個圖像之間的功能(查看OpenCV的feature2d模塊)。
  4. 使用匹配特徵以估計相機姿勢的每個幀
  5. 使用相機姿勢的和匹配的特徵進行三角測量3D結構的每個匹配點

在大多數SFM過程的最後一步使用Bundle Adjustment優化結構(和相機姿勢)。這通常是非常複雜的編碼,因此值得查看已有的實現,例如Lourakis' SBA

如果你想看看流行的現有SFM實現退房Bundler諾亞Snavley寫的。此外,對於密集的3d重建,請看PMVS。最後,要獲得全面的工作流程,請查看VisualSfM

如果你正在尋找的是更像一個立體相機基於三維重建,有很多tutorials網上有關使用OpenCV進行這一點。

+0

非常感謝。我剛剛跟我的老師談過,他解釋說我必須嘗試使用​​立體相機方法,但使用簡單的相機,並使用這種方法嘗試進行密集重建。沒有使用立體相機會有什麼複雜嗎? – user3080294

+0

立體相機爲您提供了顯着的優勢,因爲您知道兩個相機相對於彼此的配置。當您嘗試使用多個視圖中的單個相機時,您現在必須解決每個視圖的位置,這成爲一個更加困難的問題。 –

+0

+1:很好的答案! –