日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

视觉SLAM算法框架解析(3) SVO

發(fā)布時間:2023/12/13 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 视觉SLAM算法框架解析(3) SVO 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。

  SVO(Semi-direct Visual Odometry)[1]顧名思義是一套視覺里程計(VO)算法。相比于ORB-SLAM,它省去了回環(huán)檢測和重定位的功能,不追求建立、維護一個全局地圖,更看重tracking的效果,追求高計算速度、低CPU占用率,所以SVO非常適合在計算資源有限的移動設(shè)備上使用。SVO對PTAM的改進主要在兩個方面:1)高效的特征匹配;2)魯棒的深度濾波器。SVO比PTAM、ORB-SLAM計算速度快很多的最主要原因是SVO不需要每一幀都提取特征點。在tracking線程,當前幀的特征點是從上一幀用光流法傳遞到過來的,只有在mapping線程插入新關(guān)鍵幀時才需要提取特征點。另一個原因是SVO使用了深度濾波器,PTAM和ORB-SLAM只用兩幀圖像三角化出地圖點,只要地圖點沒有被判定為外點,就固定不變了(除非BA階段調(diào)整),而SVO的深度濾波器會根據(jù)多幀圖片不斷收斂地圖點的不確定度,從而得到更可靠的地圖點。因為地圖點更可靠,所以SVO只需要維護更少的地圖點(PTAM一般維護約160到220個特征點,SVO在fast模式下維護約120個地圖點),從而加快了計算速度。

  在tracking線程,SVO綜合了直接法和特征點法的優(yōu)點設(shè)計了全新的三步策略。第一步(Sparse Model-based Image Alignment),用Lucas-Kanade光流法粗算當前幀的位置姿態(tài)。具體方法是:把前一幀對應的地圖點投影到當前幀(初始位置姿態(tài)為單位陣),比較前一幀特征點和當前幀投影點附近區(qū)域(patch)像素灰度值的差別,通過最小化photometric error求解當前幀的位置姿態(tài)。由于這一步是粗算,為了加快計算速度,patch選取了4*4的大小,并且沒有做仿射變換(affine warp)。為了加速,從金字塔的最頂層(默認是第五層)逐層計算(默認計算到第3層)。第二步(Feature Alignment),求出特征點在當前幀的精確像素坐標。對于每個特征點單獨考慮,找到和當前幀視角最接近的共視關(guān)鍵幀(這個關(guān)鍵幀和當前幀的視角差別越小,patch的形變越小,越可以更精準地匹配),然后再次用Lucas-Kanade光流法最小化photometric error。相比于第一步的粗測,這一步選取了8*8的patch,并且做仿射變換,可以得到亞像素級別的精度。第三步(Pose & Structure Refinement),通過前兩步找到精確的匹配點之后,可以通過最小化重投影誤差進一步優(yōu)化相機姿態(tài)以及地圖點位置(這一步就和patch無關(guān)了,地圖點和投影點都是點,cost function是點到點的距離),這一步又分成三小步:1)Motion-only BA,地圖點不變,只優(yōu)化當前幀位置姿態(tài)。2)Strcture-only BA,當前幀不動,只優(yōu)化地圖點位置。3)Local BA,附近關(guān)鍵幀和可見的地圖點都被優(yōu)化了,這一小步在fast模式下是不做的。

  SVO之所以叫半直接法(Semi-direct)就是因為前兩步估計策略像直接法(LSD-SLAM、DSO為代表)一樣最小化photometric error,而第三步則和特征點法(PTAM、ORB-SLAM為代表)一樣最小化重投影誤差。如果省略第一步,直接從第二步開始計算會更耗時,因為為了匹配遠距離的特征點需要把patch設(shè)置得很大,而且會需要剔除外點。而如果省略第二步和第三步則會產(chǎn)生嚴重的累積漂移,因為第一步只是考慮前后幀,而第三步把當前幀和關(guān)鍵幀、地圖點對齊了。

  在mapping線程,SVO首先判定當前幀是否是關(guān)鍵幀(追蹤成功的特征點數(shù)量是否少于一個閾值就插入新關(guān)鍵幀),如果是,則提取特征點、初始化深度濾波器;如果不是,則更新深度濾波器看它是否收斂,如果收斂,則生成新的地圖點輔助tracking線程計算。SVO提取特征點的方式和ORB-SLAM類似,也是先構(gòu)造金字塔,再劃分網(wǎng)格提取最顯著的FAST特征(如果提取不到足夠顯著的FAST角點,SVO2.0[2]會找梯度值最大的像素作為edgelet特征點,它和普通FAST角點在計算中的唯一差別是:在tracking線程的第二步feature alignment階段,edgelet只沿梯度方向優(yōu)化)。每個特征點有一個單獨的深度濾波器,深度值被設(shè)定為高斯分布與均勻分布的加權(quán)和(作者論證了這種假設(shè)比單一高斯分布要好,更詳細的解讀可以參考REMODE),高斯分布描述內(nèi)點的分布,均勻分布描述外點的分布。深度值濾波器在初始化時,不確定度是很大的(如果是stereo或者RGBD相機可以直接給出接近真值的初值,深度濾波器會收斂的更快),之后每計算出新一幀的位置姿態(tài),都可以根據(jù)幾何約束沿著極線找特征點匹配,然后根據(jù)三角測量的原理得到不確定度更小的后驗深度值。當不確定度小于一個閾值,這個地圖點就會被建立。地圖點立即就會被用來估計運動。

參考文獻:

[1]Forster C, Pizzoli M, Scaramuzza D. SVO: Fast semi-direct monocular visual odometry[C]// IEEE International Conference on Robotics and Automation. IEEE, 2014:15-22.

[2]Forster C, Zhang Z, Gassner M, et al. SVO: Semidirect Visual Odometry for Monocular and Multicamera Systems[J]. IEEE Transactions on Robotics, 2017, 33(2):249-265.

總結(jié)

以上是生活随笔為你收集整理的视觉SLAM算法框架解析(3) SVO的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。