1. 程式人生 > >MVG學習筆記(3) --從多個視角重建

MVG學習筆記(3) --從多個視角重建

從多個視角重建

  我們現在轉向本次博文的議題- 從幾幅影象重建場景。 最簡單的情況是兩個影象,我們將首先考慮。 作為一種數學抽象,我們將討論侷限於僅由點組成的“場景”。

  對於重建的許多演算法,通常輸入是一組點對應關係。

  因此,在兩檢視的情況下,我們在兩個影象中考慮一組對應關係xixi{\rm x}_i \leftrightarrow {\rm x}^\prime_i。 假設存在一些相機矩陣,P\rm PP{\rm P^\prime} 以及一組3D點Xi{\rm X}_i,由這些影象上產生對應關係,滿足於PXi=xi{\rm PX}_i={\rm x}_i

PXi=xi{\rm P^\prime X}_i={\rm x}^\prime_i

  因此,點Xi{\rm X}_i投射到兩個給定的資料點。 但是,攝像機(由投影矩陣P\rm PP{\rm P^\prime} 表示)和點Xi{\rm X}_i都不是已知的。 我們的任務是確定它們。

我們的已知條件是對應影象中的匹配點對,我們的目標是計算所謂的camera matrix和3D空間中的實際點雲!

  從一開始就很清楚,不可能唯一地確定點的位置。 這是一個普遍的模糊性,無論我們給出了多少影象,即使我們不僅僅有點對應資料。

  例如,給定幾個立方體的影象,不可能分辨它的絕對位置(它位於Addis Ababa的夜總會,還是大英博物館),它的方向(面朝北)或其大小。

  通過這個例子我們想說的是,重建最多可能達到世界的相似變換。 然而,事實證明,除非已知關於兩個相機的校準,否則重建中的模糊性由更一般的變換類 -射影變換表示。

  產生這種模糊性是因為可能將射影變換(由4×4矩陣H表示)應用於每個點Xi{\rm X}_i,並且在每個相機矩陣Pj{\rm P}_j的右側,而不改變射影影象點,因此:

PjXi=(PjH1)(HXi){\rm P}_j{\rm X}_i = ({\rm P}_j{\rm H}^{-1})({\rm HX}_i)

  沒有令人信服的理由選擇一組點和相機矩陣而不是另一組。 H的選擇基本上是任意的,我們說重建具有射影模糊性,或者是射影重建

  然而,好訊息是這是可能發生的最壞情況。 可以從兩個檢視重建一組點,直到不可避免的投影模糊。為了能夠這樣說,我們需要做一些條件限制; 必須有足夠多的點,至少七個,並且它們不能位於各種明確定義的關鍵配置(critical configurations)中

  從兩個檢視重建點集的基本工具是基礎矩陣(fundamental matrix),它表示如果它們是相同3D點的影象,則影象點x\rm xx\rm x^\prime所要遵循的約束。

  這種約束源於兩個檢視的相機中心,影象點和空間點的共面性。

  給定基本矩陣F\rm F,一對匹配點xixi{\rm x}_i \leftrightarrow {\rm x}^\prime_i, 必須滿足

xiFxi=0{\rm x}^\prime_i{\rm F}{\rm x}_i=0

  其中F\rm F是秩為2的3×3矩陣。這些方程在矩陣F\rm F的元素(entries)中是線性的,這意味著如果F\rm F是未知的,則可以從一組點對應計算它。

  一對相機矩陣P\rm PP{\rm P^\prime} 唯一地確定基本矩陣F\rm F,相反,基本矩陣確定一對相機矩陣,直到3D射影模糊度。 因此,基本矩陣封裝了這對相機的完整投影幾何,並且通過3D的射影變換而不變。

重建步驟

用於重建場景的基礎矩陣方法非常簡單,包括以下步驟:

  1. 給定兩個檢視中的幾個點對應關係xixi{\rm x}_i \leftrightarrow {\rm x}^\prime_i,基於共面方程xiFxi=0{\rm x}^\prime_i{\rm F}{\rm x}_i=0在F的元素中形成線性方程。
  2. 找到F\rm F作為一組線性方程的解
  3. 根據某些給出的簡單公式(後期博文若有需求則更新)計算F\rm F中的一對相機矩陣。
  4. 鑑於兩個相機(P\rm PP{\rm P^\prime})和相應的影象點對xixi{\rm x}_i \leftrightarrow {\rm x}^\prime_i,找到射影到給定影象點的3D點Xi{\rm X}_i。 以這種方式求解X\rm X被稱為三角測量

  這裡給出的演算法只是一個大綱,以後會詳細討論了它的每個部分。 該演算法不應直接從該簡要描述中實現。