ORB_SLAM2概述
生活随笔
收集整理的這篇文章主要介紹了
ORB_SLAM2概述
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
追蹤線程
- 灰度化處理。
- 構建當前幀(提取每幅圖像的特征點,并分配到網格中,這會極大的方便某一領域內的特征點的查找與匹配)。
- 單目相機初始化操作:通過特征點匹配,使用RANSAC+DLC計算H矩陣,并根據對稱轉移誤差計算H的評分。使用RANSAC+八點法計算E 矩陣,并根據極線約束估計F評分。選擇H/E后通過SVD分解獲得最優的R/t。隨后進行三角化測距,全局BA優化,優化初始地圖的相機位姿和路標點坐標。
- 估計相機位姿并進行優化(位姿圖優化)。追蹤相機位姿的方法(主要的不同在于獲得當前幀位姿的方式)包括:(1)恒速運動模型:根據前兩幀的位姿變換估計當前幀的位姿,在領域內搜索特征點,隨后進行位姿優化。(2)參考關鍵幀模型:以上一幀的位姿為當前位姿,搜索當前幀的參考關鍵幀(共視點最多的關鍵幀),使用詞袋加速算法進行特征點匹配,隨后優化位姿。(3)重定位模型:使用詞袋加速算法獲得當前幀的候選關鍵幀,使用EPNP估計當前幀位姿,進行BA優化。
- 追蹤局部地圖:將局部地圖中的路標點投影到當前幀中,在當前幀中搜索與之匹配的特征點(每個路標點會有一個描述子),隨后優化局部地圖中的關鍵幀的位姿。
- 判斷關鍵幀。
?
局部建圖線程
- 插入關鍵幀:將關鍵幀插入到局部地圖中。在這個過程中會進行一下操作:(1)計算當前關鍵幀的詞袋,并更新關鍵幀數據庫。(2)更新共視圖(更新當前幀和與其有共視關系的關鍵幀間的權重)。
- 剔除錯誤的路標點:(1)路標點和關鍵幀中的特征點匹配,如果匹配成功的關鍵幀過少,則認為這個路標點是錯誤的。(2)路標點被3個以下的關鍵幀觀測到。
- 建立新的路標點:尋找與當前幀共視程度最高的候選關鍵幀,使用詞袋加速算法+極限約束尋找特征點匹配。使用三角化測距形成新的路標點。在這個過程中,可能存在特征點1本來與路標點1存在聯系,三角化之后,特征點1與路標點2建立了聯系。這個時候需要進行路標點的融合。
- 局部BA優化:優化局部地圖中的關鍵幀位姿和路標點坐標。這里的關鍵幀指的是與當前幀的共視程度超過一定閾值的關鍵幀。對于小于閾值的共視關鍵幀,這提供約束,不會對其位姿進行優化。
- 刪除冗余關鍵幀:如果一個關鍵幀的90%以上的路標點可以被3個以上的關鍵幀觀測到,就會被刪除。
?
回環檢測
在局部建圖線程中,處理完一個關鍵幀后會將其拋入回環檢測線程中。
- 檢測候選回環關鍵幀:與當前幀的共視路標點超過15個,且詞袋相似度大于一個閾值的關鍵幀視為候選回環關鍵幀。
- 計算Sim3變換:由于單目相機存在尺度漂移現象,因此需要計算當前關鍵幀相對于回環關鍵幀以及世界坐標系的Sim3變換。
- 回環融合:根據當前幀相對于世界坐標的Sim3變換,優化當前幀的共視關鍵幀的位姿(這樣就會減少誤差傳遞過程,使得位姿估計準確)。
- 本質圖優化:對本質圖中的關鍵幀的位姿進行優化。
- 在回環檢測之后還會有一個全局BA優化線程,對所有關鍵幀的位姿以及路標點的坐標進行優化。
?
視覺字典
事先訓練好的,在執行程序的時候會進行加載。
主要采用聚類算法+四叉樹形式存儲。為特征點描述子的集合。屬于同一類特征的特征點的描述子組成一個單詞。
可以根據詞典進行特征點的加速匹配(就是只對屬于同一個單詞的特征點進行匹配)。
?
關鍵幀數據庫
數據格式為哈希表,其主要作用為:尋找格式為:
單詞(1):關鍵幀1、關鍵幀2、關鍵幀3…
單詞(2):關鍵幀2、關鍵幀3、關鍵幀5…
在回環檢測、重定位時,會根據關鍵幀數據庫查找當前幀的候選關鍵幀。
總結
以上是生活随笔為你收集整理的ORB_SLAM2概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信个性签名竖着
- 下一篇: 笑字开头的成语有哪些?