運動恢復結構(SFM)


運動恢復結構

通過三維場景的多張圖片,恢復出該場景的三維結構信息以及每張圖片對應的攝像機參數。

已知:n個3D點\(X_j\)在m張圖像中的對應點的像素坐標\(x_{ij}\)\((i = 1, …, m, j = 1, …, n)\),且\(x_{ij} = M_iX_j\) \((i = 1,...,m,j=1,...,n)\)

其中,\(M_i\)是第i張圖片對應的攝像機的投影矩陣

求解:

  • m個攝像機投影矩陣\(M_i\)\((i = 1, … , m)\) \(\longrightarrow\) 運動(motion)
  • n個三維點\(X_j(j=1,...,n)\)的坐標 \(\longrightarrow\) 結構(structure)

三種典型的運動恢復結構問題

  • 歐式結構恢復(攝像機內參數已知,外參數未知)
  • 仿射結構恢復(攝像機為仿射相機,內、外參數均未知)
  • 透視結構恢復(攝像機為透視相機,內、外參數均未知)

歐式結構恢復

已知:

  • n個三維點\(X_j(j = 1, ..., n)\)\(m\)張圖像中的對應點的像素坐標\(x_{ij}\)

  • m張圖像對應的攝像機內參數矩陣\(K_i(i=1,...,m)\)

    \(x_{ij} = M_iX_j = K_i[R_i\quad T_i]X_j \qquad i = 1,..., m; j = 1, ..., n\)

    其中\(m\)為圖像個數,\(n\)為3D點個數,\(M_i,K_i,[R_i\quad T_i]\)為第\(i\)張照片對應的攝像機的投影矩陣、內參數及外參數矩陣

求解

  • n個三維點\(X_j(j = 1,...,n)\)的坐標
  • m個攝像機外參數\(R_i\)以及\(T_i\)\((i=1,...,m)\)

問題:(2視圖)

\[x_{1j} = M_1X_j = K_1[I \quad 0]X_j\\ x_{2j} = M_2X_j = K_2[R \quad T]X_j \]

求解:

  1. 求解基礎矩陣F

    歸一化八點法

    點的對應關系:左圖和右圖進行sift特征提取,對每一個特征點進行描述,建立兩張圖的特征點的對應關系。用RANSAC的方法去估計正確的變換矩陣從而剔除錯誤點。

    1、SIFT 2、匹配 3、RANSAC

    如果正好8對點,則只有唯一解,多於8對點則使用最小二乘求解

  2. 利用F與攝像機內參數求解本質矩陣E

    \(E = K_2^TFK_1\)

  3. 分解本質矩陣獲得R與T

    \(E \longrightarrow R、T \longrightarrow M_2\)

  4. 三角化求解三維點\(X_j\)坐標

    \(X_j^* = \mathop{argmin}\limits_{X_j}(d(x_{1j},M_1X_j) + d(x_{2j},M_2X_j))\)

本質矩陣分解

\[E = [T_{\times}]R \]

找到一個策略把E因式分解成兩部分

重要說明:

定義兩個矩陣:

\[Z = \left[ \begin{matrix} 0 & 1 & 0\\ -1 & 0 & 0\\ 0 & 0 & 0 \end{matrix} \right] \qquad W = \left[ \begin{matrix} 0 & -1 & 0\\ 1 & 0 & 0\\ 0 & 0 & 1 \end{matrix} \right] \]

重要性質:

在相差一個正負號的情況下

\[Z = diag(1,1,0)W = diag(1,1,0)W^T \]

\([T_{\times}]\)可以寫成:\([T_{\times}] = kUZU^T\),其中\(U\)是單位正交陣,k是常數

不考慮符號、尺度,則

\[\begin{eqnarray} [T_{\times}] &=& UZU^T\\ &=& Udiag(1,1,0)WU^T\\ &=& Udiag(1,1,0)W^TU^T(可能)\\ &=& Udiag(1,1,0)W^TU^T(也可能) \end{eqnarray}\\ \]

所以

\[\begin{eqnarray} E &=& [T_{\times}]R = (Udiag(1,1,0)WU^T)R\\ &=& Udiag(1,1,0)(WU^TR) \end{eqnarray} \]

同時,對E進行奇異值分解

\[E = U diag(1,1,0)V^T \]

與上面的進行比較,發現可以把R表示出來

\[V^T = WU^TR \longrightarrow R = UW^TV^T\quad or\quad R = UWV^T \]

注意:E的這個因式分解只保證了矩陣\(UWV^T\)\(UW^TV^T\)是正交的。其為旋轉矩陣還需確保行列式的值為正:

\[R = (detUWV^T)UWV^T \quad or \quad (detUW^TV^T)UW^TV^T \]

這樣R就為正,即為真正的旋轉矩陣

而怎么求解T呢?

由前面的\([T_{\times}] = UZU^T\)可以得到\(T \times T = [T_{\times}]T = UZU^TT = 0\),從而\(T = \pm u_3\)(U的第三列)

這里其實是相當於\(AT = 0\),即\(T\)\(A\)最小特征值對應的特征向量,而\(A\)本質上是SVD分解得到的\(UZU^T\),所以T就是\(U^T\)的最小特征值的特征向量,即為U的第三列

  • 選擇一個點三角化,正確的一組解能保證該點在兩個攝像機的z坐標均為正
  • 對多個點進行三角化,選擇在兩個攝像機系下z坐標均為正的個數最多的那組R、T。(更魯棒)

做一個總結:

歐式結構恢復出的解沒有尺度概念,需要其他先驗信息!

  • 僅靠圖像去重建的三維場景與真實場景相差一個相似變換(旋轉、平移、縮放)
  • 恢復的場景與真實場景之間僅存在相似變換的重構稱為度量重構

仿射結構恢復

問題:已知n個三維點\(X_j\)在m張圖像中的對應點的像素坐標\(x_{ij}\)\((i = 1, …, m, j = 1, …, n)\),且\(x_{ij} = A_iX_j+b_i\) \((i = 1,...,m,j=1,...,n)\)

​ 其中,\(A_i,b_i\)組成了第i張圖片對應的仿射攝像機的投影矩陣$M_i = \left[\begin{matrix}A_i & b_i \ 0 & 1\end{matrix}\right] $

求解:

  • n個三維點\(X_j(j = 1,...,n)的坐標\)
  • m個仿射攝像機的投影矩陣\(A_i\)\(b_i(i=1,...,m)\)

方法:

  • 代數方法
  • 因式分解法
    • 數據中心化
    • 因式分解

中心化:減去圖像點的質心

i表示第i個攝像機,\(x_{ij}\)表示第i個攝像機的第j個點

\[\hat{x}_{i,j} = x_{ij} - \overline{x}_i\qquad\overline{x}_i = \frac{1}{n}\sum\limits_{k=1}^n x_{ik} \qquad x_{ij} = A_iX_j + b_i \]

於是

\[\begin{eqnarray} \hat{x}_{ij} = x_{ij} - \frac{1}{n}\sum\limits_{k=1}^nx_{ik} &=& A_iX_j + b_i - \frac{1}{n}\sum\limits_{k=1}^nA_iX_k - \frac{1}{n}\sum\limits_{k=1}^nb_i\\ &=&A_i(x_j-\frac{1}{n}\sum\limits_{k=1}^nX_k) = A_i(X_j-\overline{X} = A_i\hat{X}_j) \end{eqnarray} \]

如果3D點的質心 = 世界坐標系的中心,則\(\hat{x}_{ij} = A_i\hat{X}_j = A_iX_j\)

因式分解

把取均值后的\(m \times n\)個測量值寫成矩陣的形式:

\(\left[\begin{matrix}x_{11} & x_{12} & \dots & x_{1n}\end{matrix}\right]^T\)是第一個相機下的點,每個\(x_{ij}\)是一個\(2 \times 1\)的向量,為\([u\quad v]^T\),所以\(\hat{x}_{11} = [\overline{u}\quad \overline{v}]^T\)

怎么分解D呢?

通過計算D的奇異值分解

由於\(rank(D) = 3\),理想情況下這里只有三個非零的奇異值\(\sigma_1,\sigma_2,\sigma_3\)

總結:

問題:這樣分解可以嗎?\(\longrightarrow\)可以。因此,解不是唯一的

仿射結構恢復歧義:

  • 分解不唯一。通過以下變換可以得到相同的D:

    \[M^* = MH\\ S^* = H^{-1}S \]

    其中\(H\)是任意可逆的\(3\times 3\)矩陣

  • 必須利用其他約束條件來解決歧義

問題:給定m個相機,n個三維點,可以有多少個等式\((2mn)\),多少個未知量\((3n+8m - 8)\)?

由於求不出真實解,與真實解總相差一個H矩陣\((3 \times 3)\),這個矩陣有8個自由度,所以真正有解的是\(3n + 8m - 8\),要把8減去

即需要約束 \(2 m n \ge 3n + 8m - 8\)

透視結構恢復

問題:已知n個三維點\(X_j(j = 1,...,n)\)在m張圖像中的對應點的像素坐標\(x_{ij}\),且\(x_{ij} = M_iX_j,(i = 1,...,m;j = 1,...,n)\)

​ 其中,\(M_i\)為第\(i\)張圖片對應的攝像機的投影矩陣

求解:

  • n個三維點\(X_j(j=1,...,n)\)的坐標
  • m個攝像機投影矩陣\(M_i(i = 1,...,m)\)

以兩視圖為例:

\[x_{ij} = M_iX_j \qquad\qquad M_i = K_i[R_i\quad T_i] \]

式子乘一個\(H\)\(H^{-1}\)

\[x_{ij} = M_iX_j = (M_iH^{-1})(HX_j) = M^*X^* \]

因此\(M、X\)\(M^*、X^*\)都是\(x_{ij}=M_iX_j\)的解(透視結構也有歧義性)

恢復方法:

在相差一個\(4\times 4\)的可逆變換的情況下恢復攝像機運動與場景結構

  • 代數方法(通過基礎矩陣)
  • 因式分解法(通過SVD)
  • 捆綁調整

代數方法

  1. 求解基礎矩陣F

    歸一化八點法

  2. 利用F估計攝像機矩陣

    \(F \longrightarrow M_1,M_2\)

  3. 三角化計算三維點坐標

    \(x_j^* = \mathop{argmin}\limits_{X_j}(d(x_{1j},M_1X_j) + d(x_{2j},M_2X_j))\)

利用F估計攝像機矩陣:

由於透視歧義的存在,我們總是可以找到一個可逆矩陣H,使得:

\[M_1H^{-1} = [I|0] \qquad \qquad M_2H^{-1} = [A|b] \]

已知:\(x'Fx = 0 \qquad \qquad F = [b_{\times}]A\)

  1. 計算b :

    • 考慮乘積\(F^T b\) \(F^{T}·b = ([b_{\times}]A)^T·b = A^T[b_{\times}]^T·b = -A^T[b_{\times}]·b = 0\) \(F^T b = 0\)

    • b為\(F^T\)矩陣最小奇異值的右奇異向量,且\(||b|| = 1\)

  2. 計算A:

    • 定義:\(A' = -[b_{\times}]F\)

    • 驗證\([b_{\times}]A' = F\)

      \[[b_{\times}]A' = -[b_{\times}][b_{\times}]F = - (bb^T-|b|^2I)F = -bb^TF + |b|^2F = 0 + 1·F = F \]

    • 因此,\(A = A' = -[b_{\times}]F\)

攝像機矩陣

\[\widetilde{M}_1 = [I \quad 0] \qquad\qquad \widetilde{M}_2 = [-[b_{\times}]F \quad b] \]

那么,這里的b是什么呢?在極幾何約束中,有\(F^Te = 0\)這條性質,所以b是一個極點!

N視圖情況:

分別對每一個圖像對\(I_k\)\(I_h\)計算運動與結構

\[I_k,I_h \longrightarrow \widetilde{M}_k,\widetilde{M}_h,\widetilde{X}_{[k,h]} \]

問題:

但是通過兩兩的方法(從第三個轉到第二個再轉到第一個)會有累計誤差!

捆綁調整(BA)

代數法與分解法的局限性:

  • 因式分解法假定所有的點都是可見的,所有下述場合不可用:

    • 存在遮擋
    • 建立對應點關系失敗
  • 代數法應用於2視圖重建

    • 容易出現誤差累計

恢復結構和運動的非線性方法

最小化重投影誤差:\(E(M,X) = \frac{1}{mn} \sum\limits_{i=1}^m \sum\limits_{j=1}^nD(X_{ij}, M_iX_j)^2\)

非線性最小化問題:

牛頓法 與 L-M方法 求解

優勢:

  • 同時處理大量視圖
  • 處理丟失的數據

局限性:

  • 大量參數的最小化問題
  • 需要良好的初始條件

實際操作:

  • 常用於SFM的最后一步,分解或代數方法可作為優化問題的初始解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM