ORB_SLAM2的迴環檢測是怎麼做的?

算法原理解析

LoopClosing線程是對當前新到來的關鍵幀進行閉環檢測,看看之前的關鍵幀中哪個和當前關鍵幀形成閉環;另一個是糾正閉環,就是在檢測到閉環的時候要將當前關鍵幀和閉環關鍵幀的位姿拉到一起進行融合

一、閉環檢測DetectLoop
1.從關鍵幀列表中獲取列表頭的關鍵幀,也就是獲取最新插入到LoopClosing線程的關鍵幀,並判斷當前關鍵幀是否距離上次關鍵幀閉環檢測的幀之間大於10幀,大於10幀才進行後邊的閉環檢測,否則將新的關鍵幀插入到關鍵幀數據庫中。

2.獲取當前關鍵幀和與其共視的所有關鍵幀詞袋向量比較的最小分值minScore;

3.在關鍵幀數據庫中查找和當前關鍵幀存在閉環的候選關鍵幀(DetectLoopCandidates)。步驟如下:
1)獲取當前關鍵幀在共視圖中和他連接的關鍵幀,並遍歷查找這些關鍵幀當中的詞向量都在哪些關鍵幀中出現過,查到的共享詞向量的關鍵幀存放在lKFsSharingWords當中;
2)遍歷lKFsSharingWords,統計候選幀中與pKF具有共同單詞最多的單詞數maxCommonWords;
3)再次遍歷lKFsSharingWords,得到和當前關鍵幀共享單詞數大於0.8×maxCommonWords,並且和當前關鍵幀的BoW得分大於minScore的關鍵幀,存入lScoreAndMatch當中;
4)遍歷lScoreAndMatch當中的關鍵幀,對其中每個關鍵幀計算和其共視關係最好的10個關鍵幀中的最高得分的關鍵幀和他們的累計分值bestAccScore,存入lAccScoreAndMatch當中;
5)遍歷lAccScoreAndMatch,對其中每個關鍵幀判斷其得分大於0.75×bestA

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章