視覺SLAM(五)特征點提取與匹配


特征點法視覺里程計

特征點提取與匹配

經典 SLAM 模型中以位姿 路標( Landmark )來描述 SLAM 過程
• 路標是三維空間中固定不變的點,能夠在特定位姿下觀測到
• 數量充足,以實現良好的定位
• 較好的區分性,以實現數據關聯
在視覺 SLAM 中,可利用圖像特征點作為 SLAM 中的路標

特征點是圖像中具有代表性的部分;
具有可重復性,可區別性,高效,本地的特點
特征點的信息
• 位置、大小、方向、評分等 關鍵點
• 特征點周圍的圖像信息 描述子( Descriptor)

特征描述應該在光照、視角發生少量變化時仍能保持一致
例子:SIFT/SURF/ORB(見 OpenCV features2d 模塊)

典型的特征點

ORB 特征

關鍵點: Oriented FAST
描述: BRIEF

FAST

• 連續 N 個點的灰度有明顯差異

Oriented FAST

• 在 FAST 基礎上計算旋轉

描述子

BRIEF

• BRIEF 128 :在特征點附近的 128 次像素比較
• ORB :旋轉之后的 BRIEF 描述

BRIEF 是一種二進制描述,需要用漢明距離度量

特征匹配

目的: 通過描述子的差異判斷哪些特征為同一個點
暴力匹配:比較圖 1 中每個特征和圖 2 特征的距離
加速:快速最近鄰方法(FLANN)

2D-2D 對極幾何

特征匹配之后,得到了特征點之間的對應關系
• 如果只有兩個單目圖像,得到 2D 2D 間的關系——對極幾何
• 如果匹配的是幀和地圖,得到 3D 2D 間的關系——PnP
• 如果匹配的是 RGB D 圖,得到 3D 3D 間的關系——ICP

三角化與深度估計




求E使用八點法來求


從E計算R,t則使用奇異值分解

\[E=U\Sigma V^T \]

一共會生成四個可能的解,但只有一個深度為正。

\[t_1^{\vee}=UR_Z(\pi/2)\Sigma U^T,R_1=UR^T_Z(\pi/2)V^T\\ t_2^{\vee}=UR_Z(-\frac{\pi}{2})\Sigma U^T,R_2=UR^T_Z(-\frac{\pi}{2})V^T \]

SVD 過程中:取\(E = U diag (\frac{\delta_1+\delta_2}{2},\frac{\delta_1+\delta_2}{2},0)V^T\) 因為 E 的內在性質要求它的奇異值為\(\delta,\delta,0\);
• 最少可使用五個點計算 R,t ,稱為五點法, 但需要利用 E 的非線性性質,原理較復雜

八點法的討論

八點法可用於單目 SLAM 的初始化(初始化需要相機運動)

  • 尺度不確定性:歸一化 t 或特征點的平均深度(相機運動)
  • 純旋轉問題: t=0 時無法求解
  • 點對數多於八對時:則使用最小二乘法進行求解
  • 有外點時:使用RANSAC進行過濾。

從單應矩陣恢復R,t

  • 八點法在特征點共面時會共面
  • 設特征點位於某平面上:\(n^TR+d=0\)\(-\frac{n^TP}{d}=1\).

小結

2D——2D 情況下,只知道圖像坐標之間的對應關系
• 當特征點在平面上時(例如俯視或仰視),使用 H 恢復 R,t
• 否則,使用 E 或 F 恢復 R,t
• t 沒有尺度

求得 R,t 后:
• 利用三角化計算特征點的 3D 位置(即深度)
• 實際中用於單目 SLAM 的初始化部分

3D-2D PnP


目的:已經 3D 點的空間位置和相機上的投影點,求相機的旋轉和平移(外參)
解法:代數的解法/優化的解法

1. 代數解法

a. DLT(direct Linear Trace)

設空間點\(P=(X,Y,Z,1)^T\),投影點為:\(x=(u,v,1)\) 歸一化坐標,則投影關系:\(sx=[R|t]p\)
展開:

• 將它看成一個關於 t 的線性方程,求解 t
• 注意最下一行為\(s=[t_9,t_{10},t_{11},t_{12}][X,Y,Z,1]^T\)
• 用它消掉前兩行中的 s ,則一個特征點提供兩個方程:

\[t_1=(t_1,t_2,t_3,t_4)^T,\\ t_2=(t_5,t_6,t_7,t_8)^T,\\ t_3=(t_9,t_{10},t_{11},t_{12})^T \]

\[t^T_1P-t^T_3Pu_1=0\\ t_2^TP-t^T_3Pv_1=0 \]

為求解 12 個未知數,Y一般需要 12/2=6 對點。(超定時求最小二乘解)

• DLT 將 R,t 看成獨立的未知量,所以在求出結果后,需要將 t 組成的矩陣投影回 SO(3) 3)(通常用 QR 分解實現)
• 此外,也可代入內參矩陣 K ,但 SLAM 中一般假設 K 已知,所以這里沒有代入。
為求解 12 個未知數,需要 12/2=6 對點。(超定時求最小二乘解)

b. P3P:利用三對點求相機內參

c. EPnP /UPnP/...

2. 優化解法: Bundle Adjustment

線性化和雅可比



對3D點求導:

4. 3D-3D ICP

ICP 也可以從非線性優化角度求解,但:
• 已知匹配時, ICP 問題存在唯一解或無窮多解的情況。在唯一解的情況下,只要能找到極小值解,那么這個 極小值就是全局最優值 。
• 所以正常情況下, SVD 結果和優化一樣,且優化很快收斂。

注:
• 在激光情況下,匹配點未知,將指定最近點為匹配點。此時問題非凸,極小值不一定為最小值。
• 利用非線性優化可以將 ICP 與 PnP 結合在一起求解。

小結

本章介紹了與特征點相關的視覺里程計部分算法,包括:

  • 特征點是如何提取並匹配的;
  • 如何通過2D-2D的特征點估計相機運動;
  • 三角化原理;
  • 3D-2D的PnP問題,線性解法與BA解法;
  • 3D-3D的ICP問題,線性解法與BA解法。

5. 三角化與深度估計



免責聲明!

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



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