胡章芳,曾念文,羅 元,肖雨婷,鐘征源
(重慶郵電大學(xué)光電工程學(xué)院 重慶 南岸區(qū) 400065)
近年來(lái),同步定位與建圖(SLAM)[1]是機(jī)器人自動(dòng)導(dǎo)航技術(shù)方面的研究熱點(diǎn)。在SLAM中,通過(guò)后端優(yōu)化可以不斷地修正誤差,但是微小的誤差會(huì)不斷累積。消除累計(jì)誤差的代表性方法是判斷機(jī)器人是否“到訪”過(guò)某個(gè)區(qū)域,如果是則視為同一位置,這就是閉環(huán)檢測(cè)[2]。閉環(huán)檢測(cè)可以極大地校正漂移誤差,是視覺(jué)SLAM的重要組成部分。目前大多數(shù)研究是基于外觀的方法,利用提取的圖像特征和描述符來(lái)估計(jì)是否到達(dá)過(guò)某個(gè)位置。如3DMAP[3]、卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)[4]、視覺(jué)詞袋法(bag-of-words, BoW)[5]等。視覺(jué)詞袋法目前在閉環(huán)檢測(cè)中較為常用。文獻(xiàn)[6]提出了一種基于外觀和顏色組合的雙視覺(jué)詞典方法,并添加了貝葉斯濾波來(lái)判斷是否閉環(huán)。文獻(xiàn)[7]結(jié)合了詞袋模型和ORB-SLAM算法,使用場(chǎng)景分割的方法略微提高了準(zhǔn)確率。最富標(biāo)志性的是FABMAP[8]和DBoW2[9],它們使用離線的預(yù)訓(xùn)練詞匯進(jìn)行在線測(cè)試,分為離線預(yù)處理和在線處理兩個(gè)階段。前者從采集到的整個(gè)圖像數(shù)據(jù)庫(kù)中提取視覺(jué)單詞,并對(duì)其量化構(gòu)造成一個(gè)視覺(jué)詞典;后者查找的圖像由基于視覺(jué)詞典的直方圖表示,并與數(shù)據(jù)庫(kù)直方圖進(jìn)行比較來(lái)判斷是否閉環(huán)。然而,移動(dòng)機(jī)器人不可避免地會(huì)處于復(fù)雜多變的環(huán)境中,包括光照、時(shí)間、天氣等,閉環(huán)檢測(cè)是視覺(jué)SLAM的最重要組成部分,易受到上述因素的影響,改善移動(dòng)機(jī)器人在各種條件下(尤其是在光照變化下)的魯棒性,是視覺(jué)SLAM不可或缺的工作。
為了減少光照變化對(duì)閉環(huán)檢測(cè)的影響,本文改進(jìn)了基于視覺(jué)詞袋法的閉環(huán)檢測(cè)方法。除了將原始的彩色圖像作為視覺(jué)詞典,還將彩色圖轉(zhuǎn)為光照不變圖,同時(shí)并行生成光照不變圖的視覺(jué)詞典,并對(duì)其直方圖進(jìn)行比較,最后計(jì)算兩者的最終得分矩陣來(lái)判斷是否為閉環(huán)。實(shí)驗(yàn)結(jié)果表明,本文算法能穩(wěn)健應(yīng)對(duì)光照變化較大的場(chǎng)景。
考慮到系統(tǒng)的性能和運(yùn)行時(shí)間要求,本文使用ORB[10]特征點(diǎn),選擇描述符長(zhǎng)度為256 bit,每位描述符的計(jì)算公式如下:
式中,vi是 第i個(gè)位描述符的值;xi、yi是通過(guò)高斯分布在該點(diǎn)周圍預(yù)先建立的隨機(jī)選擇位置的灰度值;p代表正在計(jì)算的點(diǎn)。本文使用漢明距離來(lái)計(jì)算描述符之間的距離:
式中,v(p)、v(q)是描述符;XOR表示異或操作。獲得特征和描述符后,將它們轉(zhuǎn)換為視覺(jué)單詞,并將圖像轉(zhuǎn)換為稀疏向量。
文獻(xiàn)[11]提出了一種算法,使得圖像外觀變化只只與光源有關(guān)。根據(jù)文獻(xiàn)[11],光譜靈敏度F(λ),圖像傳感器的光照響應(yīng)R,物體的表面反射率S(λ)和物體上的發(fā)射光譜功率分布E(λ)之間存在以下關(guān)系:
式中,單位向量ax和nx表示物體反射光源的方向和表面法線的方向,取決于物體的材料特性;Ix表示物體點(diǎn)x上 反射光的強(qiáng)度。將光譜敏感度函數(shù)F(λ)假設(shè)為以波長(zhǎng) λi為中心的狄拉克增量函數(shù)[12],從而產(chǎn)生以下響應(yīng)函數(shù):
為減少光照強(qiáng)度Ix的影響,得到取決于表面反射率S(λi)的 光照不變圖?,將式(4)取對(duì)數(shù):
將光照近似為普朗克光源[13],再將維恩常數(shù)近似代入普朗克光源中:
式中,Gx=ax·nx;h為普朗克常數(shù);c為光速;k為玻爾茲曼常數(shù);T是黑體源的相關(guān)色溫。
文獻(xiàn)[11]使用一維色彩空間?,該色彩空間由相機(jī)傳感器在有序波長(zhǎng) λ1<λ2<λ3下的峰值靈敏度R1、R2、R3決定:
將式(4)代入式(5),當(dāng)參數(shù)α滿足以下約束時(shí),一維色彩空間? 與相關(guān)色溫T無(wú)關(guān):
簡(jiǎn)化為:
因此,可根據(jù)相機(jī)傳感器取適當(dāng)?shù)摩林?,將原始圖像轉(zhuǎn)化為光照不變圖像?。
先對(duì)整個(gè)圖像序列進(jìn)行光照不變變換,再生成原圖-光照不變圖視覺(jué)詞典。
將采集到的彩色圖像設(shè)為集合SRGB,將光照不變圖設(shè)為集合SII,兩者存在以下關(guān)系:
SII=?(SRGB)
從每個(gè)圖像集中提取特征集FRGB和FII,該特征集由位置xi、si和 特征描述符di組成。
最后,使用如圖1所示的樹(shù)數(shù)據(jù)結(jié)構(gòu)[5]來(lái)構(gòu)建詞典,在每一層使用K-means聚類方法對(duì)描述符進(jìn)行分類。其中只有葉節(jié)點(diǎn)存儲(chǔ)可視單詞,而中間節(jié)點(diǎn)僅用于查找單詞。該詞典的總?cè)萘繛镵d。搜索特定的視覺(jué)詞匯時(shí),只需要與聚類中心進(jìn)行d次比較即可完成查找,時(shí)間復(fù)雜度為O(logN),保證了搜索效率。同時(shí),為了區(qū)分每個(gè)單詞的重要性,使用直接索引法[5],該方法將單詞的父節(jié)點(diǎn)存儲(chǔ)在目錄中以加快比較速度。
圖 1 詞袋樹(shù)結(jié)構(gòu)模型圖
綜上可以生成基于原圖-光照不變圖視覺(jué)詞典,圖2總結(jié)了該算法。
圖2 原圖-光照不變圖詞典生成框圖
在提取圖像特征和生成詞典后,再利用這些數(shù)據(jù)完成閉環(huán)檢測(cè)。盡管視覺(jué)描述符已經(jīng)轉(zhuǎn)換為視覺(jué)單詞,但并非所有視覺(jué)單詞都具有相同的識(shí)別和區(qū)分度。如某些單詞很常見(jiàn),在許多幀中都可以找到,這種情況下詞類視覺(jué)單詞在閉環(huán)檢測(cè)中基本無(wú)作用。因此本文采用詞頻-逆文本頻率指數(shù)(term frequency-inverse document frequency, TF-IDF)[14]方法來(lái)區(qū)分不同單詞的重要性。在詞袋模型中,可以在處理圖像之前計(jì)算IDF,即在構(gòu)建字典時(shí)確定IDF屬性。將視覺(jué)單詞wi總數(shù)用n表示,含有wi的圖像數(shù)量用ni表示,則wi的逆文檔頻率為:
文檔頻率為:
視覺(jué)單詞wi的權(quán)重為:
在考慮單詞的權(quán)重之后,對(duì)于特定的圖像A,將原圖特征和光照不變圖特征添加到詞袋中,完善原圖-光照不變圖詞典:
根據(jù)前文生成的視覺(jué)詞典,對(duì)每幀圖像計(jì)算兩個(gè)直方圖。為了快速進(jìn)行兩幅圖像間的直方圖比較,本文采用直方圖交叉核(histogram intersection kernel)[15]方法來(lái)測(cè)量?jī)蓚€(gè)矩陣的相似性得分。其原理是先將圖像特征在多分辨率的超平面上進(jìn)行映射,進(jìn)而生成多層次的直方圖,最后進(jìn)行相似度的加權(quán)疊加。其交集函數(shù)(核函數(shù))的定義如下:
式中,h1,h2為 欲比較的兩個(gè)直方圖;H(h1)j為h1直方圖中的第j個(gè)bin;r為直方圖中bin的個(gè)數(shù)。兩個(gè)bin的最小值為兩個(gè)直方圖每個(gè)bin的重疊數(shù),所有bin重疊數(shù)之和為該層次的交集函數(shù)值。直方圖的相似性函數(shù)定義為:
其值可以用來(lái)比較相似度。式中,L表示直方圖的層次數(shù);Ni表示連續(xù)量的層次之間的交集函數(shù)值的差:Ni=Γ(Hi(h1)),Hi(h2))-Γ(Hi-1(h1)),Hi-1(h2))。
定義兩個(gè)矩陣間的相似性得分S=KΔ,完成兩個(gè)矩陣的相似性得分計(jì)算以后,對(duì)得分進(jìn)行歸一化:
生成最終的得分為:
Sfinal=SRGB+η·Sii
式中,SRGB是原始彩色圖像的視覺(jué)詞袋歸一化得分矩陣;Sii是得到的光照不變圖像的視覺(jué)詞袋歸一化得分矩陣;Sfinal是最終的得分矩陣;η是兩個(gè)得分矩陣間的平衡因子。
由于相鄰兩幅圖像十分相似,容易誤判為閉環(huán)。因此,本文將圖像序列根據(jù)規(guī)模進(jìn)行分組。每個(gè)組通過(guò)累加組內(nèi)每個(gè)候選幀的相似性得分來(lái)獲得累加的得分。累加分最高的組視為閉環(huán)組,閉環(huán)組中得分最高的圖像將作為最佳候選幀。選擇分?jǐn)?shù)大于得分閾值的最佳候選幀作為判定正確的閉環(huán)對(duì),具體的算法偽代碼如下:
為了驗(yàn)證本文算法對(duì)光照的魯棒性,需要捕獲同一場(chǎng)景在不同照明條件下的圖像。因此,本文選擇了Nordland數(shù)據(jù)集,該數(shù)據(jù)集采集自挪威北部4個(gè)不同季節(jié),分為春夏秋冬4個(gè)部分,其相同場(chǎng)景在不同時(shí)間的比較如圖3所示。同一場(chǎng)景隨著時(shí)間的改變發(fā)生了很大的變化。本文首先選擇光照變化最為顯著的春季和冬季序列作為實(shí)驗(yàn)序列。
圖3 同一場(chǎng)景在不同時(shí)刻的表現(xiàn)形式
第一個(gè)評(píng)價(jià)指標(biāo)是真(假)陰(陽(yáng))性,當(dāng)機(jī)器人經(jīng)過(guò)同一位置時(shí),閉環(huán)檢測(cè)算法應(yīng)給出“是閉環(huán)”(真陽(yáng)性)的結(jié)果,反之則應(yīng)該給出“不是閉環(huán)”(真陰性)的結(jié)果。
另外一個(gè)評(píng)價(jià)指標(biāo)是準(zhǔn)確率(precision)和召回率(recall)。準(zhǔn)確率是指某個(gè)算法中檢測(cè)到的閉環(huán)是真實(shí)閉環(huán)的概率,即P recsion=TP/(TP+FP),召回率是指在所有真實(shí)閉環(huán)中被正確檢測(cè)出來(lái)的概率,即 Recall=TP/(TP+FN)。準(zhǔn)確率-召回率是一對(duì)矛盾,當(dāng)算法設(shè)計(jì)得比較“嚴(yán)格”時(shí),準(zhǔn)確率可以達(dá)到100%,但必然會(huì)造成召回率下降。因此,在確定一個(gè)指標(biāo)后,若某算法得到的另一個(gè)指標(biāo)比其他算法高,則說(shuō)明該算法更優(yōu)。
為了直觀地分析圖像匹配的相似性規(guī)律,本文與閉環(huán)檢測(cè)中最常用的BoW[5]算法和文獻(xiàn)[16]提出的一種基于改進(jìn)TF-IDF的SLAM回環(huán)檢測(cè)算法進(jìn)行了比較。首先在Nordland數(shù)據(jù)集的冬季序列中選取了800張?jiān)谝曈X(jué)上有明顯差異的圖像,接著在春季序列中選擇了一張圖像,然后逐一匹配冬季序列中的圖像并計(jì)算相似度,獲得的相似度曲線如圖4所示。橫軸表示冬季序列索引,縱軸是與選取的春季圖像的相似度值。曲線的最大值表示算法匹配最為相似的圖像,BoW算法、文獻(xiàn)[16]算法、本文算法計(jì)算出的最大相似度圖像分別在第29、200、482幀處。
圖4 相似性得分曲線
選取的春季序列圖像與3種算法匹配的圖像如圖5所示。由圖5可知,當(dāng)同一場(chǎng)景的光照發(fā)生變化時(shí),本文算法匹配到了同一場(chǎng)景的圖像,而其他算法都匹配到了錯(cuò)誤的圖像。
圖5 選取的圖像和算法匹配的圖像
為了進(jìn)一步驗(yàn)證本文算法對(duì)光照變化的魯棒性,繼續(xù)從春季選擇了800個(gè)序列圖像,從冬季選擇了800個(gè)序列圖像。將序列中的一個(gè)圖像與另一序列中的所有圖像進(jìn)行比較。每?jī)蓚€(gè)序列計(jì)算一次相似度得分,然后根據(jù)編號(hào)排列得分,得到相似度矩陣S。顯然,S是一個(gè)對(duì)稱矩陣。離對(duì)角線越近意味著圖像與自身和連續(xù)幀最為相似,得到的相似度矩陣結(jié)果如圖6所示。本文算法基于原圖和光照不變圖,而不是簡(jiǎn)單地進(jìn)行一次圖像的特征匹配,獲得的相似度矩陣基本上沿對(duì)角線分布,且噪點(diǎn)較少;而B(niǎo)oW算法出現(xiàn)了多處對(duì)角線較為稀疏的地方,如圖中圓圈標(biāo)識(shí);文獻(xiàn)[16]方法獲得的相似度矩陣有很多噪聲點(diǎn),且對(duì)角線較為稀疏,表示這是錯(cuò)誤的閉環(huán)。因此,本文算法在光照變化明顯的環(huán)境中表現(xiàn)良好。
圖6 3種算法的相似度矩陣
本部分使用Northland數(shù)據(jù)集的夏季和冬季序列進(jìn)行詞典構(gòu)建,然后選擇春季序列進(jìn)行召回率測(cè)試,在100%準(zhǔn)確率的前提下實(shí)現(xiàn)較高的召回率,夏季序列和冬季序列的結(jié)果分別如圖7a、圖7b所示。在冬季序列中,部分場(chǎng)景被積雪覆蓋,可提取的圖像特征減少,本文提出的光照不變圖算法表現(xiàn)更佳。
圖7 召回率測(cè)試結(jié)果
視覺(jué)詞袋模型因?yàn)槠溆?jì)算速度快且圖像表示形式簡(jiǎn)單,在閉環(huán)檢測(cè)中得到了廣泛的應(yīng)用,但是光照的變化會(huì)降低其魯棒性。為了克服這個(gè)缺點(diǎn),本文在傳統(tǒng)的詞袋模型上進(jìn)行了改進(jìn),通過(guò)生成原圖-光照不變圖的視覺(jué)詞典,歸一化計(jì)算最終矩陣相似性得分來(lái)提高對(duì)光照變化的魯棒性。通過(guò)在數(shù)據(jù)集上和其他算法進(jìn)行比較,證明了本算法對(duì)光照變化具有更好的魯棒性。最近熱門(mén)的室外自動(dòng)駕駛,在長(zhǎng)時(shí)間運(yùn)作時(shí),可能會(huì)由于陽(yáng)光的變化而產(chǎn)生錯(cuò)誤閉環(huán)檢測(cè),本文算法可適用于此類情況。然而,在實(shí)驗(yàn)中發(fā)現(xiàn)由于另一個(gè)視覺(jué)詞典的加入,使得本文算法的實(shí)時(shí)性有所下降,如何在光照魯棒性的前提下保證速率的問(wèn)題將是下一步研究的重點(diǎn)。