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