視覺里程計VO-特征點法


視覺里程計的主要問題是如何根據圖像來估計相機運動,VO的實現方法,按照是否需要提取特征,分為特征點法的前端以及不提取特征的直接法前端。基於特征點法的前端,長久以來被認為是視覺里程計的主流方法,它運行穩定,對光照、動態物體不敏感,是目前較為成熟的解決方案。

計算機視覺鄰域的研究者們,設計了許多比角點更加穩定的局部圖像特征,比如SIFT,SURF,ORB等。特征點由關鍵點(Key-point)和描述子(Descriper)兩部分組成。SIFT(Scale Invariant Feature Transform 尺度不變特征變換)計算量大,普通 PC 的 CPU還無法實時地計算 SIFT 特征,進行定位與建圖。所以在 SLAM 中我們甚少使用這種“奢侈”的圖像特征。ORB(Oriented FAST and Rotated BRIEF)特征則是目前看來非常具有代表性的實時圖像特征。它改進了 FAST 檢測子 不具有方向性的問題,並采用速度極快的二進制描述子BRIEF,使整個圖像特征提取的環節大大加速。

根據匹配點對,估計相機運動

1. 當相機為單目時,我們只知道 2D 的像素坐標,因而問題是根據兩組 2D 點估計運動。該問題用對極幾何來解決。
2. 當相機為雙目、RGB-D 時,或者我們通過某種方法得到了距離信息,那問題就是根據兩組 3D 點估計運動。該問題通常用 ICP 來解決。
3. 如果我們有 3D 點和它們在相機的投影位置,也能估計相機的運動。該問題通過 PnP求解。

 2D-2D對級幾何

 

 本質矩陣E由於滿足對級約束,所以E滿足尺度等價性,矩陣E具有5個自由度,表明我們可以最少使用5對點來計算E矩陣,但是E的內在非線性性質使得求解線性方程時比較麻煩。可使用經典的8點法在線性框架下求解。

 

 

 

 求得E后,根據奇異值分解,恢復相機的R,t

單應矩陣H

單應矩陣描述了兩個平面之間的映射關系,如果場景中的特征點都位於同一平面上,則可以通過單應性來進行運動估計。

 openCV相關函數:

findFundamentalMat()  計算基礎矩陣

findEssentialMat()  計算本質矩陣

findHomography()  計算單應矩陣

recoverPose()  從本質矩陣中恢復旋轉和平移

triangulatePoints()  通過三角化計算空間點位置

3D:2D PnP

PnP(Perspective-n-Point)描述了當我們知道了n個3D空間點以及它們的投影位置時,如何估計相機所在的位姿。PnP不需要使用對極約束,可以在很少的匹配點中獲得較好的運動估計,是一種重要的姿態估計方法。

PnP求解有很多求解方法,如僅用三對點估計的P3P,直接線性變換DLT,非線性優化Bundle Adjustment。SLAM中通常的做法是先使用P3P/EPnP等方法估計相機位姿,然后構建最小二乘優化問題對估計值進行調整(Bundle Adjustment)

Bundle Adjustment

Bundle Adjustment是一個最小化重投影誤差的問題,同時對位姿和空間點進行優化。

 

  openCV相關函數:

solvePnP()  Finds an object pose from 3D-2D point correspondences. This function returns the rotation and the translation vectors that transform a 3D point expressed in the object coordinate frame to the camera coordinate frame.

3D-3D ICP

可采用SVD方法以及非線性優化方法

 


免責聲明!

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



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