王 偉,湯琴琴,汪先偉
(1.南京信息工程大學(xué) 自動(dòng)化學(xué)院,南京 210000;2.無錫學(xué)院 軌道交通學(xué)院,江蘇 無錫 214000)
視覺SLAM(simultaneous localization and mapping)是指通過視覺傳感器對(duì)環(huán)境進(jìn)行感知,同時(shí)實(shí)現(xiàn)機(jī)器人或無人駕駛汽車在未知環(huán)境下的自主定位和建圖[1]。在解決機(jī)器人和自動(dòng)駕駛等領(lǐng)域的應(yīng)用問題中,視覺SLAM成為最受重視和廣泛應(yīng)用的技術(shù)之一[2-4]。通過研究SLAM技術(shù),可以為實(shí)現(xiàn)更加智能的、精準(zhǔn)的機(jī)器人定位導(dǎo)航提供支持[5],同時(shí)也可為構(gòu)建數(shù)字地圖和城市規(guī)劃等領(lǐng)域提供數(shù)據(jù)支撐。
目前,ORB(oriented FAST and rotated BRIEF)算法作為一種關(guān)鍵點(diǎn)檢測與描述子生成算法[6],在SLAM領(lǐng)域被廣泛使用。然而,ORB特征點(diǎn)的數(shù)量在一定程度上受限于圖像紋理信息,即圖像分辨率較低、場景光照黑暗或者曝光等極端條件、結(jié)構(gòu)信息較少導(dǎo)致圖像平整度較高等因素使得環(huán)境的紋理信息不被突出時(shí),難以提取足額數(shù)量的ORB特征點(diǎn)。因此,如何提高ORB特征點(diǎn)的數(shù)量和質(zhì)量以提升SLAM定位精度成為當(dāng)前SLAM領(lǐng)域需要解決的核心問題之一[7]。國內(nèi)外學(xué)者們以往主要通過設(shè)立特征點(diǎn)檢測閾值、圖像預(yù)處理、圖像處理與閾值結(jié)合等方式來解決在低紋理場景下ORB特征點(diǎn)數(shù)量不足的問題,使得ORB算法更加魯棒。
為通過設(shè)置閾值增強(qiáng)ORB算法在低紋理環(huán)境下的魯棒性以便提取更多的特征點(diǎn),Murartal等人[8]在ORB_SLAM2中設(shè)置了固定閾值,即當(dāng)最大固定灰度閾值搜索不到特征點(diǎn)時(shí),系統(tǒng)自動(dòng)啟用最小固定灰度閾值進(jìn)行ORB特征點(diǎn)檢測。Wu等人[9]采用動(dòng)態(tài)閾值的思想,去除最高亮度和最低亮度的像素后計(jì)算平均亮度,通過自適應(yīng)閾值選擇準(zhǔn)則為每個(gè)點(diǎn)都設(shè)置專屬閾值,解決ORB對(duì)光變化的敏感性問題。焦嵩鳴等[10]則針對(duì)固定閾值提出了一種全局和局部的自適應(yīng)閾值結(jié)合的思路,針對(duì)整體與局部的亮度變化兩種情況各自采取全局或半全局自適應(yīng)閾值策略,并結(jié)合于局部自適應(yīng)閾值,以此增加特征點(diǎn)提取的數(shù)量。另外,支持向量機(jī)(SVM,support vector machine)[11]和卷積神經(jīng)網(wǎng)絡(luò)(CNN,convolutional neural networks)[12]也被提出用以預(yù)測自適應(yīng)閾值,基于機(jī)器學(xué)習(xí)的自適應(yīng)閾值方法需要大量訓(xùn)練數(shù)據(jù)和計(jì)算資源的數(shù)量,以及對(duì)數(shù)據(jù)分布和功能有很高的要求,應(yīng)用于現(xiàn)實(shí)有很大的局限性。這類方法的缺點(diǎn):1)如果采用固定的全局或局部閾值,無法兼顧整個(gè)圖像的各個(gè)部分,難以達(dá)到理想的效果;2)兩次閾值可能會(huì)造成圖像某些區(qū)域塊的ORB特征點(diǎn)被重復(fù)提取,有些區(qū)域被遺忘檢測,不僅使特征點(diǎn)冗余,又影響大規(guī)模特征匹配的準(zhǔn)確性;3)閾值的方法依賴圖像本身的灰度動(dòng)態(tài)范圍,在低紋理環(huán)境下,灰度動(dòng)態(tài)范圍往往較低,此類方法容易失效,適應(yīng)性差,而且閾值受環(huán)境噪聲的干擾,閾值的取值并不準(zhǔn)確。
所以,學(xué)者們繼而研究對(duì)圖像進(jìn)行預(yù)處理,增強(qiáng)圖像的邊緣、角落等細(xì)節(jié)以改變低紋理場景下的灰度范圍。Cheng等人[13]通過對(duì)圖像進(jìn)行低光增強(qiáng)處理,增強(qiáng)了系統(tǒng)在低光環(huán)境的魯棒性。陸佳嘉等人[14]使用二維高斯對(duì)圖像金字塔進(jìn)行降噪,并對(duì)像素進(jìn)行劃分,提高部分區(qū)域提取到特征點(diǎn)的概率。李憲華等人[15]通過自適應(yīng)閾值伽馬變換,對(duì)低照度、低紋理的圖像塊進(jìn)行增強(qiáng),提高在這些低光環(huán)境下提取到的特征點(diǎn)的數(shù)量。Dai等人[16]提出一種圖像增強(qiáng)與截?cái)嘧赃m應(yīng)閾值相結(jié)合的方法改進(jìn)ORB 特征提取算法,將原始圖像轉(zhuǎn)換為灰度后通過應(yīng)用高斯濾波、截?cái)嘧赃m應(yīng)伽馬亮度調(diào)節(jié)和非銳化掩蔽增強(qiáng)圖像,將圖像分成若干子區(qū)域,并利用改進(jìn)的大津法獲得相應(yīng)閾值,以此解決了在光照過多或不足等低紋理環(huán)境中無法提取足夠特征點(diǎn)的問題?,F(xiàn)有方法:1)低紋理場景變化是復(fù)雜的,包括分辨率的高低變化、場景結(jié)構(gòu)信息的差異導(dǎo)致平整度的不同,難以保證ORB算法在這些因素下的適應(yīng)性與穩(wěn)定性;2)結(jié)合額外的閾值后算法不準(zhǔn)確性增加。
此外,關(guān)鍵幀選擇在視覺SLAM算法中也扮演重要角色,關(guān)鍵幀選擇策略的質(zhì)量直接影響著算法的定位精度和運(yùn)行效率[17-19]。傳統(tǒng)的關(guān)鍵幀選擇策略通常只考慮了時(shí)間因素,根據(jù)距離閾值、角度閾值或關(guān)鍵幀密度等指標(biāo)進(jìn)行篩選[20],將一些劣質(zhì)的關(guān)鍵幀納入隊(duì)列,難以針對(duì)不同類型場景進(jìn)行調(diào)整導(dǎo)致定位精度下降、模型計(jì)算量大。
為解決上述問題,本文利用多尺度分析與局部灰度的特征檢測為一般ORB特征點(diǎn)添加尺度與旋轉(zhuǎn)的描述,利用基于高斯模糊的圖像信息增強(qiáng)方法加強(qiáng)ORB算法在低紋理環(huán)境下的穩(wěn)定性,象限分割圖像以使特征點(diǎn)均勻分布,并在只考慮時(shí)間因素的傳統(tǒng)關(guān)鍵幀選擇機(jī)制中兼容了特征點(diǎn)數(shù)量因素,降低定位誤差。
基于特征點(diǎn)的視覺SLAM的定位過程如圖1所示。
圖1 視覺SLAM定位方法
1)相機(jī)調(diào)整參數(shù)之后利用ORB特征提取器檢測圖像特征點(diǎn),在當(dāng)前幀與上一幀之間通過隨機(jī)采樣一致性算法(RANSAC)[21]尋找匹配的特征點(diǎn)。
2)通過特征點(diǎn)坐標(biāo)差異計(jì)算相機(jī)運(yùn)動(dòng)。
3)但是為了提升系統(tǒng)響應(yīng)速度,降低系統(tǒng)定位誤差,通過選擇合適的關(guān)鍵幀,使系統(tǒng)只保留最必要的信息進(jìn)行位姿估計(jì)。
4)基于詞袋模型構(gòu)成系統(tǒng)的閉環(huán),用于減少定位過程中的累計(jì)誤差。閉環(huán)檢測[22]比較當(dāng)前幀與之前幀,找到或代表同一區(qū)域的特征,計(jì)算相似度,并在相似度高于一定閾值時(shí)確立閉環(huán)。
5)根據(jù)運(yùn)動(dòng)估計(jì)獲得的相對(duì)位置信息,進(jìn)行后端的全局優(yōu)化,使誤差最小化。
本文將特征點(diǎn)看作視覺SLAM系統(tǒng)正式進(jìn)行定位的輸入數(shù)據(jù),對(duì)圖像中的特征點(diǎn)加以描述,并克服傳統(tǒng)ORB算法在低紋理的環(huán)境下的不穩(wěn)定性,過濾劣質(zhì)關(guān)鍵幀,降低視覺SLAM的定位誤差。
特征點(diǎn)對(duì)視覺SLAM定位的重要性是顯著的。在視覺SLAM中,特征點(diǎn)是用于進(jìn)行相鄰幀間匹配的關(guān)鍵點(diǎn),它們被用來計(jì)算相機(jī)的運(yùn)動(dòng)和場景的深度信息。特征點(diǎn)數(shù)量越充足時(shí),視覺SLAM算法在定位中就有越多可用的信息。在視覺SLAM定位中,需要依靠匹配當(dāng)前幀與先前幀之間的特征點(diǎn)來獲取相機(jī)的運(yùn)動(dòng)估計(jì)。在低紋理、低分辨的環(huán)境中,傳統(tǒng)ORB算法容易失效導(dǎo)致特征點(diǎn)數(shù)量不足,如果特征點(diǎn)數(shù)量太少,匹配誤差就會(huì)增加,從而導(dǎo)致相機(jī)姿態(tài)估計(jì)不準(zhǔn)確或者無法成功匹配,進(jìn)而導(dǎo)致整個(gè)SLAM系統(tǒng)定位失效。
傳統(tǒng)ORB特征點(diǎn)提取方法使用FAST角點(diǎn)檢測器尋找圖像中明顯的突變點(diǎn),并將這些點(diǎn)組成候選關(guān)鍵點(diǎn),原理如圖2所示,比較圓心點(diǎn)O且半徑等于3的圓上16個(gè)連續(xù)像素點(diǎn)與O的灰度差來提取FAST點(diǎn)。若圓周上連續(xù)著M個(gè)(M一般取12)像素點(diǎn)的灰度值與O的差已超規(guī)定閾值T,則判定被選中的圓心O作為特征點(diǎn)。詳細(xì)過程如下:
圖2 FAST角點(diǎn)提取示意圖
1)在圖像上選取一點(diǎn)O,灰度值假設(shè)為Io,以O(shè)為圓心且3為半徑作圓,共有16個(gè)點(diǎn)。
2)設(shè)定灰度閾值T,比如T=IO× 0.2。
3)若圓上有連續(xù)12個(gè)點(diǎn)的灰度值大于T+IO或小于T+IO,判斷O為關(guān)鍵點(diǎn)。
接著計(jì)算每個(gè)關(guān)鍵點(diǎn)的描述子,描述子是用來描述關(guān)鍵點(diǎn)周圍區(qū)域的一系列二進(jìn)制特征的向量,在ORB算法當(dāng)中,使用BRIEF算法生成每個(gè)關(guān)鍵點(diǎn)的描述子,即在公式(1)中:P(x)、P(y)分別為點(diǎn)x、y處的灰度值大小。
(1)
其具體思想是在特征點(diǎn)P周圍以特定模式選取N對(duì)點(diǎn),比較灰度值的大小(比如x,y)。若x比y大,則取1,反之就取0。
故BRIEF描述子可以表示為:
(2)
實(shí)際上,圖像中的物體可能會(huì)以不同尺度或角度出現(xiàn),故提出一種多尺度分析方法,在不同尺度下檢測物體的特征,即通過對(duì)原始圖像進(jìn)行重復(fù)縮減或擴(kuò)大操作,生成不同分辨率的圖像,每縮放一次,圖像的分辨率就會(huì)下降,并在這些不同尺度下進(jìn)行特征提取,使得ORB特征點(diǎn)具備尺度不變性。如圖3所示,本文將原始圖像作為待縮圖,長為W0,寬為H0,以1.2為尺度系數(shù)進(jìn)行縮放,第n次得到的圖像長為Wn,寬為Hn,面積為Sn。
圖3 多尺度縮放示意圖
圖4 圖像信息增強(qiáng)前后灰度直方圖對(duì)比
Wn與W0的關(guān)系為:
(3)
Hn與H0的關(guān)系為:
(4)
故Sn可表示為:
(5)
由于本文以1.2為尺度系數(shù),所以每縮放一次后的圖像面積是上一次的69.44%。
ORB算法添加了通過平移模擬旋轉(zhuǎn)的過程來應(yīng)對(duì)BRIEF描述子對(duì)旋轉(zhuǎn)不太敏感的問題,本文引入基于局部灰度分布的特征點(diǎn)檢測方法以提高ORB算法對(duì)旋轉(zhuǎn)的穩(wěn)定性,即以特征點(diǎn)為原點(diǎn)構(gòu)建局部坐標(biāo)系,在構(gòu)建好的坐標(biāo)系中,通過對(duì)鄰域內(nèi)每個(gè)像素的灰度加權(quán)平均,計(jì)算出鄰域內(nèi)灰度值的中心位置,最后用特征點(diǎn)指向灰度質(zhì)心的特征向量代表此特征點(diǎn)的方向。具體步驟如下:
1)定義某圖像塊A的矩定義為:
(6)
其中:I(i,j)表示在位置(i,j)處的像素灰度值,M與N分別表示圖像塊A的寬度與高度,p、q表示矩陣階數(shù),Cx與Cy分別表示圖像塊A灰度質(zhì)心坐標(biāo),即圖像塊中所有像素的坐標(biāo)的加權(quán)平均值。
2)圖像塊A灰度質(zhì)心C的坐標(biāo)公式為:
(7)
3)由于p,q={0,1},所以C的坐標(biāo)可以進(jìn)一步表示為:
(8)
4)將圖像塊A幾何中心O與質(zhì)心相連得到方向向量,將特征點(diǎn)方向定義為:
(9)
在描述子的基礎(chǔ)上,經(jīng)過多尺度縮放和灰度質(zhì)心方向描述,ORB特征點(diǎn)更加穩(wěn)健,同時(shí)增強(qiáng)算法的性能和穩(wěn)定性。從角點(diǎn)提取過程可以看出,ORB的提取依賴角點(diǎn)周圍像素的差異程度,高紋理的圖像像素之間的變化明顯大于低紋理的圖像,故而更容易提取到特征點(diǎn)。因此,基于擴(kuò)大圖像灰度動(dòng)態(tài)范圍的思想,在角點(diǎn)檢測前提出一種基于高斯模糊的圖像信息增強(qiáng)方法,提升圖像灰度動(dòng)態(tài)范圍,突出圖像的紋理信息,從而增加可提取的ORB特征點(diǎn)數(shù)量。
圖像信息增強(qiáng)方法首先對(duì)原圖像進(jìn)行3個(gè)高斯模糊,得到3個(gè)不同尺度的模糊圖像。因?yàn)楦咚鼓:龝?huì)平滑掉圖像中的細(xì)節(jié)信息,所以在每個(gè)模糊圖像與原圖之間做差,獲得這些細(xì)節(jié)信息,并通過一定的組合公式將其融合到原圖像中,進(jìn)而增強(qiáng)原圖像的信息表達(dá)能力,形成更高動(dòng)態(tài)范圍的灰度圖像。具體步驟如下:
1)定義待處理圖像為I*(x,y),選擇標(biāo)準(zhǔn)差分別為σ1、σ2、σ3的高斯核函數(shù)G1(x,y)、G2(x,y)、G3(x,y),函數(shù)表達(dá)式如(10)所示,其中σ1=1.0,σ2=2.0,σ2=4.0表示模糊程度,x和y表示在高斯核函數(shù)的中心點(diǎn)的偏移量。
(10)
2)利用3個(gè)不同尺度的高斯核函數(shù)分別平滑處理I*(x,y),得到處理后的圖像稱為B1(x,y)、B2(x,y)、B3(x,y),公式如下:
(11)
3)如公式(12)所示,將所得的B1(x,y)、B2(x,y)、B3(x,y)分別與原圖I*(x,y)做差,獲得3個(gè)不同層次的細(xì)節(jié)信息,記作D1(x,y)、D2(x,y)、D3(x,y)。
(12)
4)選擇w1,w2,w3三個(gè)加權(quán)系數(shù),通過組合函數(shù)得到信息增強(qiáng)后的圖像D*(x,y)。組合函數(shù)的公式如下:
D*(x,y)=(1-w1×sgn(D1(x,y)))×D1(x,y)+w2×D2(x,y)+w3×D3(x,y)
(13)
多次實(shí)驗(yàn)對(duì)比后得到w1=w2=0.25,w3=0.5時(shí)效果最佳。
ORB算法對(duì)角點(diǎn)的響應(yīng)較為敏感,所以O(shè)RB算法提取的特征點(diǎn)往往集中在圖像角點(diǎn)等邊緣區(qū)域。此外,由于采用了在不同尺度空間下檢測和描述特征點(diǎn),使得特征點(diǎn)分布較為集中,因?yàn)樵诓煌叨认孪噜徬袼氐男畔⑹歉叨认嚓P(guān)的,因此在不同尺度下提取到的特征點(diǎn)往往存在冗余。本文通過對(duì)圖像進(jìn)行象限劃分結(jié)合非極大值抑制的方法過濾部分冗余的特征點(diǎn),使特征點(diǎn)分布均勻化,減小計(jì)算量,提高匹配效率,進(jìn)而提升視覺SLAM的定位精度。
如圖5所示,將圖像劃分為4個(gè)面積相等的矩形象限,并作為4個(gè)原始象限N1、N2、N3和N4,統(tǒng)計(jì)每個(gè)象限中的特征點(diǎn)的總數(shù)。對(duì)于每一個(gè)象限,若包含的特征點(diǎn)數(shù)量大于1,則作進(jìn)一步細(xì)分,即將該象限分成4個(gè)子象限,繼續(xù)對(duì)子象限進(jìn)行特征點(diǎn)數(shù)量的統(tǒng)計(jì)與劃分,直到每個(gè)象限中只包含1或0個(gè)特征點(diǎn),停止劃分。對(duì)于已經(jīng)劃分出來的象限進(jìn)行后處理,將每個(gè)象限中的所有特征點(diǎn)按照響應(yīng)強(qiáng)度進(jìn)行排序,并保留最強(qiáng)的一個(gè)特征點(diǎn),其余的特征點(diǎn)將被舍棄。在實(shí)際應(yīng)用中,由于特征點(diǎn)可能會(huì)堆積在一起,導(dǎo)致檢測結(jié)果出現(xiàn)重疊,因此需要設(shè)定一個(gè)參數(shù)k,限制象限的最大劃分次數(shù)。當(dāng)劃分次數(shù)已達(dá)k時(shí),對(duì)于仍然包含多個(gè)特征點(diǎn)的象限,只保留其中響應(yīng)強(qiáng)度最高的一個(gè)特征點(diǎn)。
圖5 象限劃分原理圖
總之,通過多尺度分析方法及局部灰度特征檢測的方法使得FAST角點(diǎn)具備尺度和旋轉(zhuǎn)的描述,利用基于高斯模糊的信息增強(qiáng)預(yù)處理視覺傳感器抓取的圖像,解決ORB算法提取特征點(diǎn)數(shù)量存在不足的缺陷,并對(duì)圖像進(jìn)行象限分割融合非極大值抑制將冗余特征點(diǎn)剔除,使特征點(diǎn)分布均勻化。具體的改進(jìn)后ORB特征點(diǎn)提取流程如圖6所示。
圖6 改進(jìn)的ORB特征點(diǎn)提取過程
視覺SLAM系統(tǒng)將前后兩幀圖像里提取到的特征點(diǎn)進(jìn)行匹配,得到它們在兩幅圖像中的對(duì)應(yīng)關(guān)系,通過對(duì)這些點(diǎn)進(jìn)行幾何變換,估計(jì)前一幀到當(dāng)前幀之間的相對(duì)運(yùn)動(dòng),包括平移與旋轉(zhuǎn)。如圖7所示,O1和O2是兩個(gè)視覺相機(jī)中心,后一幀KF2的特征點(diǎn)P2是前一幀KF1的特征點(diǎn)P1通過匹配得到的對(duì)應(yīng)點(diǎn),O1P1與O2P2交于點(diǎn)P,并構(gòu)成一個(gè)極平面,O1O2為基線,線與KF1、KF2交于點(diǎn)e1、e2,極平面與KF1、KF2交于極線l1、l2。
圖7 相對(duì)運(yùn)動(dòng)估計(jì)示意圖
假設(shè)KF1幀與KF2幀對(duì)應(yīng)的旋轉(zhuǎn)和平移向量分別是R、t,點(diǎn)P、P1和P2三者之間的關(guān)系如式(14)所示:
(14)
取Z=1歸一化平面,聯(lián)解(14)中的兩個(gè)式子,可以得到式(15):
(15)
其中,記E=t^R,E為本質(zhì)矩陣(Essential Matrix),記F=K-TEK-1,F(xiàn)為基礎(chǔ)矩陣(Fundamental Matrix),E和F之間相差了相機(jī)內(nèi)參K。
將式(15)寫成本質(zhì)矩陣E的形式,可以進(jìn)一步改寫為式(16)。E為一個(gè)三行三列的矩陣,(u1,v1,1)和(u2,v2,1)分別是P1和P2歸一化平面上的投影。
(16)
通過八點(diǎn)法,可以求解本質(zhì)矩陣E,通過本質(zhì)矩陣進(jìn)行奇異值分解求解旋轉(zhuǎn)矩陣R和平移向量t。即通過P1和P2的匹配關(guān)系計(jì)算本質(zhì)矩陣,奇異值分解得到旋轉(zhuǎn)矩陣和平移向量,這些矩陣和向量描述了相機(jī)之間的運(yùn)動(dòng)。
利用相對(duì)運(yùn)動(dòng)信息更新位姿估計(jì),生成最終的軌跡。但如果所有的幀都用來做匹配和運(yùn)動(dòng)估計(jì),會(huì)導(dǎo)致計(jì)算量巨大。同時(shí),由于兩幀之間或存在很多相似之處,使用所有幀進(jìn)行匹配可能造成冗余信息,降低SLAM系統(tǒng)的定位精度。故需要選擇能夠提高獨(dú)特信息的幀作為關(guān)鍵幀,減少系統(tǒng)計(jì)算量和提升系統(tǒng)的效率。關(guān)鍵幀要選取能夠代表整個(gè)場景的幀,以保證位置更加精確,選取描述信息能力強(qiáng)的幀以提高定位精度,同時(shí)時(shí)間間隔要適當(dāng)。一般的關(guān)鍵幀選擇機(jī)制沒有著重考慮圖像中的冗余信息,即便提取出的特征不同,但由于圖像內(nèi)容相似,所選幀之間信息重疊,導(dǎo)致匹配優(yōu)化時(shí)間過長。為了剔除冗余的劣質(zhì)關(guān)鍵幀,本文提出一種綜合時(shí)間因素和特征點(diǎn)數(shù)量因素的關(guān)鍵幀選擇機(jī)制。
只考慮時(shí)間因素時(shí),首先要保證當(dāng)前幀的內(nèi)點(diǎn)數(shù)大于最小閾值且重疊度不高,以確保關(guān)鍵幀跟蹤指令的準(zhǔn)確性。一旦條件滿足,就會(huì)對(duì)以下條件進(jìn)行判斷,滿足條件之一,即可插入關(guān)鍵幀。
1)為了避免追蹤失效,當(dāng)與上一個(gè)關(guān)鍵幀的時(shí)間間隔T超過預(yù)設(shè)的最大值MAX時(shí),需要插入新的關(guān)鍵幀。
2)為了避免圖像重疊度過高,當(dāng)與上一個(gè)插入關(guān)鍵幀的時(shí)間間隔T達(dá)到預(yù)設(shè)的最小值MIN時(shí),且局部建圖線程空余,插入新的關(guān)鍵幀。
3)由于局部建圖線程處理能力限制,需要在該線程中保證關(guān)鍵幀隊(duì)列的幀數(shù)量不超過3個(gè)。
只考慮時(shí)間因素,在視覺相機(jī)轉(zhuǎn)彎或移動(dòng)速度過慢時(shí),幀與幀之間的信息重疊過大導(dǎo)致定位精度下降,針對(duì)這一問題,在考慮時(shí)間因素的基礎(chǔ)上,本文將特征點(diǎn)因素作為考量,設(shè)計(jì)下述劣質(zhì)關(guān)鍵幀判斷機(jī)制,減少計(jì)算開銷,提升視覺SLAM系統(tǒng)的定位精度。
1)3個(gè)相鄰的關(guān)鍵幀利用隨機(jī)采樣一致性方法匹配ORB特征點(diǎn)。
2)分別將相鄰的兩組關(guān)鍵幀成功匹配點(diǎn)的數(shù)量記為Num1和Num2,相隔的兩個(gè)關(guān)鍵幀成功匹配的特征點(diǎn)數(shù)則記為Num3。
3)如果滿足Num3>Num1和Num3>Num2,則中間幀被認(rèn)為是劣質(zhì)關(guān)鍵幀。
4)剔除被選的劣質(zhì)關(guān)鍵幀,則進(jìn)行下一次判斷。
本文關(guān)鍵幀選擇策略偽代碼如下:
IfT>MAXThen
插入關(guān)鍵幀 or
IfT≥MINand 局部建圖線程空閑 Then
插入關(guān)鍵幀 or
If 局部建圖線程關(guān)鍵幀隊(duì)列幀數(shù)<3 Then
插入關(guān)鍵幀
If 關(guān)鍵幀庫內(nèi)關(guān)鍵幀總數(shù)超過3 Then
IfNum3>Num1Then
IfNum3>Num2Then
剔除劣質(zhì)的關(guān)鍵幀
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
選用CPU為i7-11800H,內(nèi)存16 GB的計(jì)算機(jī),軟件平臺(tái)為基于Ubuntu18.04的ROS系統(tǒng),選用Kinect V2視覺相機(jī)拍攝真實(shí)圖像和TUM數(shù)據(jù)集作為測試數(shù)據(jù)。
為驗(yàn)證本文改進(jìn)的ORB特征點(diǎn)提取方法在不同分辨率、不同光照、不同平整度等因素導(dǎo)致環(huán)境紋理信息不被突出時(shí)的穩(wěn)定性,分別選取3組各5張圖像作為實(shí)驗(yàn)對(duì)象,A1~A5圖像的分辨率分別為100、150、200、250、300 dpi,B1~B5圖像的光照程度分別為黑暗、稍暗、正常、明亮、高光,C1~C5圖像因?yàn)榄h(huán)境結(jié)構(gòu)的差異平整度各不相同。提取效果如圖8所示,每組的第一行圖像采用傳統(tǒng)ORB算法提取特征點(diǎn),第二行圖像利用本文提出改進(jìn)ORB特征點(diǎn)提取策略提取特征點(diǎn)。
圖8 改進(jìn)前后提取特征點(diǎn)對(duì)比
圖9 圖像分割示意圖
將傳統(tǒng)ORB算法提取的特征點(diǎn)總數(shù)記為Sum1,本文方法提取的特征點(diǎn)總數(shù)記為Sum2。如公式(17)所示,引入ORB特征點(diǎn)增長系數(shù)Q,用于對(duì)改進(jìn)后的ORB特征點(diǎn)提取方法在不同因素下的性能表現(xiàn)進(jìn)行評(píng)價(jià),Q值越大,說明算法的適應(yīng)性與穩(wěn)定性越好。
Q=Sum2/Sum1
(17)
首先,通過表1數(shù)據(jù)可以看出,a1至c5所有圖像在使用本文改進(jìn)的方法提取特征點(diǎn)后,特征點(diǎn)數(shù)量均有明顯增加,表明本文方法在不同分辨率、不同光照、不同平整度的情況下均有良好效果。
表1 圖像ORB特征點(diǎn)數(shù)量對(duì)比
其次,經(jīng)計(jì)算,分辨率因素下的Q平均值為1.44;光照因素下的Q平均值為1.31;平整度因素下Q平均值為1.57。對(duì)于分辨率因素而言,Q與分辨率大致成反比;就光照而言,越是黑暗和高光這種極端條件下,Q值越是突出;就平整度而言,結(jié)構(gòu)信息越少,平整度越高,Q值也越大。
綜上所述,本文改進(jìn)后的ORB特征點(diǎn)能夠在紋理信息不被突出的環(huán)境下有良好的性能表現(xiàn),尤其是在分辨率較低、光照極端、結(jié)構(gòu)信息越少的條件下,具有良好的適應(yīng)性和穩(wěn)定性。
通過均勻度量化,對(duì)比在真實(shí)場景下傳統(tǒng)ORB特征點(diǎn)提取方法、ORB_SLAM2和本文方法在提取特征點(diǎn)上均勻化的表現(xiàn)。
實(shí)驗(yàn)采用的均勻化評(píng)價(jià)方法如下:
先對(duì)圖像進(jìn)行水平、垂直、中心和四周(中心與四周面積相等)、左上至右下和左下至右上5種方式分割得到10個(gè)區(qū)域。分別計(jì)算每個(gè)區(qū)域內(nèi)的特征點(diǎn)數(shù)量,并構(gòu)建一個(gè)區(qū)域統(tǒng)計(jì)分布向量。再計(jì)算特征點(diǎn)區(qū)域統(tǒng)計(jì)分布的標(biāo)準(zhǔn)差,以此表示均勻度,具體如公式(18)所示。標(biāo)準(zhǔn)差越小,特征點(diǎn)分布越是均勻,反之亦然。
(18)
圖10 均勻度測試結(jié)果
第一行是傳統(tǒng)ORB算法測試結(jié)果,第二行是本文提出的改進(jìn)ORB特征點(diǎn)提取方法的測試結(jié)果。根據(jù)式(18)量化后的結(jié)果如表2所示。
表2 均勻度量化結(jié)果圖像
通過表2計(jì)算,本文方法在均勻度性能上相較于ORB_SLAM2與傳統(tǒng)ORB特征點(diǎn)提取方法,分別提升了7.14%和20.78%,表明了改進(jìn)過后的算法可使特征點(diǎn)分布更加均勻。
為驗(yàn)證在只考慮時(shí)間因素的傳統(tǒng)關(guān)鍵幀選擇機(jī)制上融合特征點(diǎn)數(shù)量因素的方法更加有效,將本文提出的關(guān)鍵幀選擇機(jī)制移植于ORB_SLAM2,與只使用傳統(tǒng)關(guān)鍵幀選擇機(jī)制的ORB_SLAM2共同在TUM數(shù)據(jù)集上進(jìn)行測試,在考慮了特征點(diǎn)數(shù)量因素之后,視覺SLAM需要處理的關(guān)鍵幀數(shù)量減少,結(jié)果如表3所示。
表3 關(guān)鍵幀數(shù)量 個(gè)
將移植前后視覺SLAM系統(tǒng)求解的軌跡與真實(shí)軌跡進(jìn)行均方根誤差(RMSE)誤差對(duì)比,RMSE越小說明系統(tǒng)定位精度越高,軌跡越擬合于真實(shí)軌跡,定位精度結(jié)果如表4所示,RMSE的減少說明了剔除劣質(zhì)關(guān)鍵幀可以降低視覺SLAM的定位誤差,從而證明本文的關(guān)鍵幀選擇機(jī)制可以優(yōu)化關(guān)鍵幀質(zhì)量。
表4 剔除劣質(zhì)幀前后定位精度對(duì)比
為驗(yàn)證本文提出的改進(jìn)ORB特征點(diǎn)提取和設(shè)計(jì)的關(guān)鍵幀選擇機(jī)制結(jié)合使用的有效性與可行性,首先,將本文提出的改進(jìn)ORB特征點(diǎn)提取策略與ORB_SLAM2結(jié)合為ORB_V1系統(tǒng),精度提升結(jié)果如表5所示。
表5 ORB_V1提升效果
在ORB_V1系統(tǒng)的基礎(chǔ)上結(jié)合本文設(shè)計(jì)的關(guān)鍵幀選擇機(jī)制,組成ORB_V2系統(tǒng),精度測試結(jié)果如表6所示。
表6 ORB_V2提升效果
如圖11所示,以fr3_cabinet為例,ORB_SLAM2求解出的軌跡traj1的RMSE為0.056,在未添加本文提出的關(guān)鍵幀選擇機(jī)制時(shí),ORB_V1求解軌跡traj2的RMSE為0.050,ORB_V2求得軌跡traj3的RMSE是0.048。相比于traj2和traj3,traj1因?yàn)榄h(huán)境紋理太少,一般ORB算法幾乎失效,沒有足夠的特征點(diǎn)用來計(jì)算相機(jī)的運(yùn)動(dòng),使得估算軌跡初始階段很大程度偏離真實(shí)軌跡,且導(dǎo)致中途定位跟蹤失敗。traj3在traj2的基礎(chǔ)上,再加入了綜合時(shí)間因素和特征點(diǎn)因素的關(guān)鍵幀選取機(jī)制,降低了劣質(zhì)關(guān)鍵幀對(duì)定位精度的影響,定位精度從10.714%進(jìn)一步提升至14.286%,更貼合真實(shí)軌跡。
圖11 以fr3_cabinet為例的軌跡對(duì)比
本文利用多尺度分析與局部灰度的特征檢測為一般ORB特征點(diǎn)添加尺度與旋轉(zhuǎn)的描述,提升ORB算法的穩(wěn)定性,利用基于高斯模糊的信息增強(qiáng)方法克服傳統(tǒng)ORB算法在紋理信息不被突出的環(huán)境下的不穩(wěn)定性,通過對(duì)圖像進(jìn)行象限分割去除多余的特征點(diǎn),使特征點(diǎn)均勻分布,提升視覺SLAM系統(tǒng)的定位精度。在只考慮時(shí)間因素的傳統(tǒng)關(guān)鍵幀選擇機(jī)制中結(jié)合了特征點(diǎn)數(shù)量因素,過濾劣質(zhì)關(guān)鍵幀,進(jìn)一步降低定位誤差。
經(jīng)計(jì)算,整個(gè)系統(tǒng)的定位精度誤差平均減少了14.688%。但是由于提取了更多的特征點(diǎn),造成運(yùn)動(dòng)估計(jì)計(jì)算需要更長的運(yùn)行時(shí)間,因此可考慮將深度學(xué)習(xí)與視覺SLAM結(jié)合,提升ORB算法識(shí)別的速度,或是研究基于SLAM方法的傳感器(例如激光雷達(dá)、慣性測量器件等)數(shù)據(jù)融合技術(shù),以提高定位精度。