ORB-SLAM中單應矩陣(Homography)的計算-normalized DLT

ORB-SLAM中單應矩陣(Homography)的計算-normalized DLT

中分析了單應矩陣(Homography)的推導過程,本文看下在實際過程中如何實際計算.

DLT(Direct Linear Transform)算法

DLT是一個 用於解決包含尺度問題的最小二乘問題的算法。假設兩幅圖像中的兩個對應特徵點(x,y,1)以及(u,v,1),用單應變換計算兩者之間的關係。

ORB-SLAM中單應矩陣(Homography)的計算-normalized DLT

公式1

H是個3×3的矩陣,有8個自由度,所以待求未知參數有8個。

ORB-SLAM中單應矩陣(Homography)的計算-normalized DLT

DLT算法推導過程如下:把公式(1)展開:

ORB-SLAM中單應矩陣(Homography)的計算-normalized DLT

上式可以整理為:

Ah = 0

其中:

ORB-SLAM中單應矩陣(Homography)的計算-normalized DLT

由未知變量的個數可知,求解出H至少需要4對匹配點。通常情況下為了得到更穩定的結果,會用到多於4對的特徵匹配。所以,這個方程會變成超定的,可以將最小二乘解作為最後的解。對A進行SVD分解就可以得到單應矩陣。

ORB-SLAM2中的實現

ORB-SLAM中單應矩陣(Homography)的計算-normalized DLT

  1. p1點 變成p2點 p2 = H21 * p1

  2. u2 h1 h2 h3 u1
  3. v2 = h4 h5 h6 * v1
  4. 1 h7 h8 h9 1
  5. 或是使用叉乘得到0.
  6. x = H y , 向量 x和Hy 進行叉乘為0,即:
  7. | 0 -1 v2| |h1 h2 h3| |u1| |0|
  8. | 1 0 -u2| * |h4 h5 h6| * |v1| = |0|
  9. |-v2 u2 0| |h7 h8 h9| |1 | |0|
  10. u2 = (h1*u1 + h2*v1 + h3) /( h7*u1 + h8*v1 + h9)
  11. v2 = (h4*u1 + h5*v1 + h6) /( h7*u1 + h8*v1 + h9)
  12. -(h4*u1 + h5*v1 + h6) + ( h7*u1*v2 + h8*v1*v2 + h9*v2)=0 式子為0 左側加 - 號不變
  13. -(h1*u1 + h2*v1 + h3) + ( h7*u1*u2 + h8*v1*u2 + h9*u2)=0
  14. 0 0 0 -u1 -v1 -1 u1*v2 v1*v2 v2
  15. u1 v1 1 0 0 0 -u1*u2 - v1*u2 -u2 ×(h1 h2 h3 h4 h5 h6 h7 h8 h9)轉置 = 0
  16. 8對點 約束 A
  17. A × h = 0 求h 奇異值分解 A 得到 單元矩陣 H
ORB-SLAM中單應矩陣(Homography)的計算-normalized DLT


分享到:


相關文章: