最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

一文詳解ORB-SLAM3中的地圖管理

2021-01-16 16:17 作者:3D視覺工坊  | 我要投稿

作者:小L 來源:微信公眾號|3D視覺工坊

原文:一文詳解ORB-SLAM3中的地圖管理

想要理解ORB-SLAM3的地圖管理,僅看ORB-SLAM3的論文[3]是不夠的,因?yàn)楹芏嗉?xì)節(jié)出現(xiàn)在之前的ORB-SLAM1/2[1][2],以及ORB-Atlas[4]這幾篇論文中。從頭到尾搞清楚這些論文中采用的地圖管理方法,就能理解ORB-SLAM3中的內(nèi)容。本文介紹這幾篇論文中涉及地圖的部分,并不介紹特征跟蹤、關(guān)鍵幀創(chuàng)建等內(nèi)容。作者能力有限,在整理時(shí)難免出現(xiàn)疏漏,望讀者以原論文為準(zhǔn)。

一、ORB-SLAM1

首先介紹ORB-SLAM1中的一些基本概念。

1.基本概念

·共視圖 Covisibility Graph:

共視圖是一個(gè)加權(quán)無向圖,圖中每個(gè)節(jié)點(diǎn)是相機(jī)的位姿,如果兩個(gè)位姿的關(guān)鍵幀拍攝到的相同關(guān)鍵點(diǎn)的數(shù)量達(dá)到一定值(論文設(shè)定為至少15個(gè)),則認(rèn)為兩個(gè)關(guān)鍵幀具有共視關(guān)系。此時(shí)兩個(gè)節(jié)點(diǎn)之間便生成了一條邊,邊的權(quán)重與共視點(diǎn)的數(shù)量有關(guān)。

·生成樹 Spanning Tree:

Spanning Tree用最少的邊連接了所有的關(guān)鍵幀節(jié)點(diǎn)(即共視圖中所有的節(jié)點(diǎn))。當(dāng)一個(gè)關(guān)鍵幀被加入到共視圖當(dāng)中后,這個(gè)關(guān)鍵幀與共視圖中具有最多觀測點(diǎn)的關(guān)鍵幀之間建立一個(gè)邊,完成Spanning Tree的增長。

·Essential Graph:

根據(jù)共視關(guān)系得到的共視圖是一個(gè)連接關(guān)系非常稠密的圖,即節(jié)點(diǎn)之間有較多的邊,而這過于稠密而不利于實(shí)時(shí)的優(yōu)化。于是構(gòu)建了Essential Graph,在保證連接關(guān)系的前提下盡可能減少節(jié)點(diǎn)之間的邊。Essential Graph中的節(jié)點(diǎn)依舊是全部的關(guān)鍵幀對應(yīng)的位姿,連接的邊包含三種邊:Spanning Tree的邊、共視圖中共視關(guān)系強(qiáng)(共視點(diǎn)數(shù)量超過100)的邊、以及回環(huán)時(shí)形成的邊。

2.具體的使用

·利用局部地圖進(jìn)行跟蹤

相機(jī)跟蹤時(shí)利用了局部地圖。具體來說,先從所有關(guān)鍵幀中選擇與當(dāng)前幀有相同特征點(diǎn)的關(guān)鍵幀集合,之后提取中每一個(gè)關(guān)鍵幀的共視幀的集合,之后利用兩個(gè)集合的關(guān)鍵幀的信息進(jìn)行相機(jī)位姿的跟蹤

·回環(huán)檢測

回環(huán)檢測共包含四個(gè)部分:選擇候選幀、計(jì)算變換、回環(huán)融合與Essential Graph優(yōu)化。

1) 選擇候選幀

當(dāng)每次獲得一個(gè)關(guān)鍵幀時(shí),都會判斷是否與之前的關(guān)鍵幀發(fā)生了回環(huán)。采用bag of words方法進(jìn)行判斷是否是相同的觀測場景,論文采用了一個(gè)小技巧就是首先判斷了當(dāng)前關(guān)鍵幀與其共視幀的匹配得分,其他關(guān)鍵幀如果低于這個(gè)得分不會判定為回環(huán)。如果某個(gè)關(guān)鍵幀與當(dāng)前幀的匹配分?jǐn)?shù)達(dá)到了閾值,還需要判斷共視的3個(gè)關(guān)鍵幀是否也滿足回環(huán)的條件。只有都滿足時(shí)才會判定發(fā)生了回環(huán)。

2) 計(jì)算變換

通過3D地圖點(diǎn)計(jì)算回環(huán)時(shí),當(dāng)前幀與回環(huán)幀之間的SE(3)變換。

3) 回環(huán)融合

回環(huán)融合時(shí),完成了以下工作:將重復(fù)的地圖點(diǎn)融合并更新共視圖;通過,糾正當(dāng)前關(guān)鍵幀與當(dāng)前幀相連關(guān)鍵幀的位姿,并進(jìn)行回環(huán)幀的地圖點(diǎn)與當(dāng)前幀地圖點(diǎn)的融合;更新融合后的共視圖

4) Essential Graph的優(yōu)化

通過優(yōu)化,將回環(huán)得到的誤差均勻分配到整個(gè)Essential Graph當(dāng)中,糾正建圖過程中積累的誤差。

二、 ORB-SLAM2

ORB-SLAM2與1相比,主要的改動有:BoW字典有所變化,以及在回環(huán)檢測Essential Graph優(yōu)化后,新增了一個(gè)全局的BA進(jìn)一步優(yōu)化??偟脕碚f,在地圖部分,和1相比就是多了一個(gè)全局優(yōu)化而已。具體可參考ORB-SLAM2的github下的issue(https://github.com/raulmur/ORB_SLAM2/issues/333)

三、ORB-Atlas

Atlas翻譯為“地圖集”,即管理著一系列的子地圖(sub-map),這些子地圖共用同一個(gè)DBoW數(shù)據(jù)庫,使得能夠?qū)崿F(xiàn)重定位回環(huán)等操作。

當(dāng)相機(jī)在正常跟蹤狀態(tài),所生成關(guān)鍵幀所在的地圖稱為“活動地圖(active map)”。如果跟蹤失敗,首先將進(jìn)行重定位操作尋找地圖集中對應(yīng)的關(guān)鍵幀,如果依舊失敗,則重新創(chuàng)建一個(gè)新的地圖。此時(shí)舊的地圖變成了“非活動地圖(non-active map)”,新的地圖作為活動地圖繼續(xù)進(jìn)行跟蹤與建圖過程。在跟蹤過程中,當(dāng)前相機(jī)必然是位于活動地圖當(dāng)中,可能存在零或多個(gè)子地圖。

每次插入關(guān)鍵幀時(shí),都與完整地圖的DboW數(shù)據(jù)庫進(jìn)行匹配。如果發(fā)現(xiàn)了相同的場景,且兩個(gè)關(guān)鍵幀同時(shí)位于活動地圖,則意味著發(fā)生了回環(huán),便按照回環(huán)的方式進(jìn)行融合處理;如果匹配上的關(guān)鍵幀位于非活動地圖,則需要將兩個(gè)子地圖進(jìn)行拼接,這便是ORB-Atlas的創(chuàng)新之處。

地圖無縫融合時(shí),當(dāng)前活躍的地圖吞并對應(yīng)的非活躍地圖。通過一系列步驟將非活躍地圖的信息補(bǔ)充到當(dāng)前活躍地圖。具體步驟如下:

1. 檢測:首先由重識別模塊檢測出當(dāng)前關(guān)鍵幀Ka與匹配上的待吞并關(guān)鍵幀Ks,并獲取兩個(gè)子地圖當(dāng)中與匹配上的兩個(gè)關(guān)鍵幀具有共視關(guān)系的關(guān)鍵點(diǎn)和關(guān)鍵幀。

2. 位姿計(jì)算:通過Horn+RANSAC方法初步計(jì)算兩個(gè)關(guān)鍵幀之間的變換關(guān)系,之后將待吞并地圖的地圖點(diǎn)通過這個(gè)變換投射到當(dāng)前關(guān)鍵幀Ka上,再利用引導(dǎo)匹配的方法獲得更豐富的匹配并進(jìn)行非線性優(yōu)化,獲得精確的變換。

3. 地圖點(diǎn)合并:將被吞并地圖的關(guān)鍵點(diǎn)變換到當(dāng)前關(guān)鍵幀位姿下,融合重復(fù)的地圖點(diǎn)。之后將兩個(gè)地圖的關(guān)鍵幀融合,重新生成spanning tree和共視圖。

4. 銜接區(qū)域的局部BA優(yōu)化:融合后與Ka具有共視關(guān)系的關(guān)鍵幀參與局部BA優(yōu)化,為避免gauge freedom,固定之前活躍地圖中的關(guān)鍵幀而移動其他的關(guān)鍵幀。優(yōu)化完成后再次進(jìn)行地圖點(diǎn)的合并與spanning tree/共視圖的更新。

5. 完整地圖的位姿圖優(yōu)化:對整個(gè)合并后的地圖進(jìn)行位姿圖優(yōu)化。

小結(jié)

Atlas的方法使得在跟蹤丟失時(shí)能夠重新創(chuàng)建一個(gè)地圖,并在回到原有位置時(shí)利用原地圖的信息,使得SLAM更加魯棒。Atlas的方法也用在了ORB-SLAM3中

四、ORB-SLAM3

ORB-SLAM3中的地圖,大致上采用了ORB-SLAM1/2和ORB-Atlas的方法完成了重定位、回環(huán)和地圖融合。

1. 重定位

ORB-SLAM3在重定位的策略上做了一些改進(jìn)。為了保證重定位不出錯(cuò),重定位常常設(shè)置了嚴(yán)苛的條件,保證高精準(zhǔn)率而識別率較低。舊的方法(ORB-SLAM1/2)中當(dāng)3個(gè)關(guān)鍵幀完全匹配上后才判定為重定位成功。然而作者發(fā)現(xiàn),三個(gè)關(guān)鍵幀經(jīng)過了很長的時(shí)間。主要改進(jìn)是,當(dāng)當(dāng)前關(guān)鍵幀與數(shù)據(jù)庫的關(guān)鍵幀匹配上后,檢測與當(dāng)前關(guān)鍵幀具有共視關(guān)系的關(guān)鍵幀是否也能夠匹配,如果可以則判定為重定位成功;否則才繼續(xù)使用接下來的關(guān)鍵幀進(jìn)行判定。

2. 視覺地圖融合

視覺地圖融合方式與ORB-Atlas的大致相同,對融合的區(qū)域起了一個(gè)新的名字叫做“銜接窗口(welding window)”。同時(shí)指明在銜接后進(jìn)行完整位姿圖融合時(shí),銜接窗口的關(guān)鍵幀固定以保證不會出現(xiàn)gauge freedom。

3. 閉環(huán)

閉環(huán)檢測部分與ORB-Atlas的基本相同。

參考文獻(xiàn)

[1]. ORB-SLAM: a Versatile and Accurate Monocular SLAM System

[2]. ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras

[3]. ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

[4] ORBSLAM-Atlas: a robust and accurate multi-map system

論文打包:在公眾號「3D視覺工坊」,后臺回復(fù)「地圖管理」,即可直接獲得。

3D視覺工坊-ORB-SLAM3源碼學(xué)習(xí)交流群

已建立3D視覺工坊-ORB-SLAM3微信交流群!想要進(jìn)ORB-SLAM3源碼學(xué)習(xí)交流群的同學(xué),可以直接加微信號:CV_LAB 。加的時(shí)候備注一下:ORB-SLAM+學(xué)校+昵稱,即可。然后就可以拉你進(jìn)群了。

強(qiáng)烈推薦大家關(guān)注3D視覺工坊知乎和3D視覺工坊微信公眾號,可以快速了解到最新優(yōu)質(zhì)的3D視覺論文。

一文詳解ORB-SLAM3中的地圖管理的評論 (共 條)

分享到微博請遵守國家法律
巴林右旗| 邢台县| 甘谷县| 青冈县| 成武县| 玉溪市| 华池县| 台山市| 山西省| 仙桃市| 丰镇市| 淄博市| 临西县| 鸡泽县| 嵊州市| 丽江市| 肥西县| 孟村| 麻城市| 广州市| 佳木斯市| 大渡口区| 阳谷县| 广德县| 衢州市| 马关县| 长子县| 疏勒县| 河曲县| 涟水县| 云梦县| 枣庄市| 修水县| 武定县| 石河子市| 开平市| 太白县| 濮阳县| 延边| 卫辉市| 平果县|