視覺SLAM關鍵方法總結

點“計算機視覺life”關注,置頂更快接收消息!


最近在做基於激光信息的機器人行人跟蹤發現如果單獨利用激光信息很難完成機器人對行人的識別、跟蹤等功能,因此考慮與視覺融合的方法,這樣便可以充分利用激光雷達提供的精確位置信息及視覺提供的豐富紋理、顏色等場景信息。以下是最近調研視覺SLAM中的實現方法的總結,包括三方面內容:姿態計算、閉環檢測、BA優化。

姿態計算

一、通過提取圖像的特徵描述子,如ORB、SURF和SIFT等特徵描述子,然後通過RANSAC算法進行圖像匹配去除匹配點中的外點,再通過將二維點對映射到三維之後,便可以利用PnP或ICP算法計算相機位姿。基於特徵提取的位姿計算算法對場景有一定的要求,在無紋理場景會出現位姿計算失敗的情形。

二、直接圖像匹配方法:直接圖像匹配並不對圖片進行特徵提取,核心思想是在旋轉座標系下,基於相機一致性的假設,在相機的剛體變換已知的情況下,利用相機變換矩陣將目標圖片投影到當前圖片上,其像素之間的差異應該最小,將姿態計算轉換爲加權最小二乘問題。直接圖像匹配算法的計算效率很高,不依賴GPU,具有很高的理論和商用價值。

閉環檢測

閉環檢測算法指的是通過檢測算法檢測出之前訪問過的場景。如圖1所示,當機器人在移動過程中,特別是在探索大面積的場景時,由於模型的不確定性以及設備的噪聲,不確定性會逐漸增長。通過引入閉環檢測技術,識別出歷史訪問過的場景以增加位姿之間的約束,可以很好的減少這種不確定性。

閉環檢測前後對比(a)	累計誤差導致的構圖錯誤,(b)閉環約束後的地圖

閉環檢測方法有:
一、最簡單的閉環檢測算法是將新檢測出來的關鍵幀和過去所有的關鍵幀一一進行比較,雖然這種方法能比較好的檢測出當前場景是否在之前出現過,但是在大規模場景下,機器人往往有成千上萬個關鍵幀,這種方法檢測效率及其底下,不能再實際場景中使用。

二、通過將圖像中的特徵和整個地圖中的路標對應起來,然後建立一個所有路標的數據庫,通過使用路標分類器來加快場景識別速度。比如講所有路標構建成一棵KD-Tree,當新添加一幀關鍵幀時,將關鍵幀在KD-Tree中進行檢索,從中檢索之前出現過的場景。

三、基於視覺詞袋的閉環檢測方法,這種方法通過將特徵描述子抽象成詞彙,通過TF-IDF方法識別出現過的場景。如圖2所示,是閉環檢測中基於詞袋模型流程圖。使用視覺詞袋的方法效率很高,可用在大規模地圖的創建上。
基於詞袋模型的閉環檢測

BA優化

一、問題闡述:同時對三維點位置和相機參數進行非線性優化。

BA原理

二、LM法的原理與優勢:
原理:是一種“信賴域”的方法,當收斂速度較快時,增大信賴域使算法趨向於高斯牛頓法;當收斂速度較慢時,減小信賴域使算法趨向於最速下降法。
優勢:速度快;可以在距離初始值較遠處得到最優解。

SLAM優化算法對比

算法 缺點 優點
KF/EKF 假設噪聲爲高斯分佈,在高維狀態空間時計算效率較低,不適合大規模場景的地圖構建 原理簡單,小場景下收斂性好。
PF 會不可避免出現粒子退化現象,每個粒子需包含整張地圖信息導致不適合大場景地圖構建 將運動方程表示爲一組粒子,通過蒙特卡羅方法求解,能夠處理非線性非高斯噪聲。
EM 計算量大,不能用於大規模場景 有效解決了數據關聯問題
圖優化 對閉環檢測算法的要求嚴格 出現多種圖優化框架,能夠有效解決濾波器算法的缺陷,能用於大規模場景的地圖創建

推薦閱讀

如何從零開始系統化學習視覺SLAM?
從零開始一起學習SLAM | 爲什麼要學SLAM?
從零開始一起學習SLAM | 學習SLAM到底需要學什麼?
從零開始一起學習SLAM | SLAM有什麼用?
從零開始一起學習SLAM | C++新特性要不要學?
從零開始一起學習SLAM | 爲什麼要用齊次座標?
從零開始一起學習SLAM | 三維空間剛體的旋轉
從零開始一起學習SLAM | 爲啥需要李羣與李代數?
從零開始一起學習SLAM | 相機成像模型
從零開始一起學習SLAM | 不推公式,如何真正理解對極約束?
從零開始一起學習SLAM | 神奇的單應矩陣
從零開始一起學習SLAM | 你好,點雲
從零開始一起學習SLAM | 給點雲加個濾網
從零開始一起學習SLAM | 點雲平滑法線估計
從零開始一起學習SLAM | 點雲到網格的進化
從零開始一起學習SLAM | 理解圖優化,一步步帶你看懂g2o代碼
從零開始一起學習SLAM | 掌握g2o頂點編程套路
從零開始一起學習SLAM | 掌握g2o邊的代碼套路
零基礎小白,如何入門計算機視覺?
SLAM領域牛人、牛實驗室、牛研究成果梳理
我用MATLAB擼了一個2D LiDAR SLAM
可視化理解四元數,願你不再掉頭髮
最近一年語義SLAM有哪些代表性工作?
視覺SLAM技術綜述
彙總 | VIO、激光SLAM相關論文分類集錦
研究SLAM,對編程的要求有多高?
2018年SLAM、三維視覺方向求職經驗分享
深度學習遇到SLAM | 如何評價基於深度學習的DeepVO,VINet,VidLoc?
視覺SLAM關鍵方法總結

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