張 鳳,孫恩澤,袁 帥,2,郭鵬程
(1.沈陽建筑大學(xué) 信息與控制工程學(xué)院,沈陽 110168;2.中國科學(xué)院沈陽自動化研究所 機(jī)器人學(xué)國家重點(diǎn)實(shí)驗(yàn)室,沈陽 110000)
視覺SLAM(simultaneous localization and mapping)技術(shù)是機(jī)器人自主移動領(lǐng)域的關(guān)鍵技術(shù),它是移動機(jī)器人采用相機(jī)作為傳感器進(jìn)行實(shí)時定位和建圖的重要方法.隨著現(xiàn)有視覺算法性能的不斷提升,視覺SLAM算法也得到了很大進(jìn)展.無論是工業(yè)機(jī)器人還是家用機(jī)器人,視覺SLAM技術(shù)已成為目前研究的熱點(diǎn).在視覺SLAM中,主要定位方法分為特征點(diǎn)法和光流法,其中特征點(diǎn)法SLAM定位主要包括PTAM[1]、ORB-SLAM[2]、SVO[3]、RDSLAM[4]等,光流法SLAM定位主要包括LSD-SLAM[5]和DTAM[6].光流法SLAM涉及到大量復(fù)雜的圖像數(shù)據(jù)計(jì)算,需要配置高性能的顯卡才能較為流暢地運(yùn)行,這樣會導(dǎo)致機(jī)器人的成本增加且無法實(shí)際應(yīng)用.相比于直接法SLAM,特征點(diǎn)法SLAM能夠僅使用CPU進(jìn)行實(shí)時計(jì)算而達(dá)到比較高精度的定位效果,所以特征點(diǎn)法SLAM研究逐漸成為視覺SLAM的主流算法.然而特征點(diǎn)法SLAM缺乏有效的特征點(diǎn)描述方法,并存在大量匹配誤差,使得機(jī)器人定位偏移較大,且難于有效跟蹤目標(biāo),導(dǎo)致地圖建立過程中易于錯位甚至混亂,無法使機(jī)器人進(jìn)行自主導(dǎo)航移動.
圖像特征點(diǎn)提取與匹配是視覺SLAM的一個重要環(huán)節(jié),目前很多研究人員已經(jīng)做了大量研究工作.文獻(xiàn)[7]提出使用SIFT(scale-invariant feature transform)算法,該算法提取的特征點(diǎn)較為穩(wěn)定,然而該算法計(jì)算復(fù)雜度高,無法滿足機(jī)器人的實(shí)時定位.在SIFT算法基礎(chǔ)上,文獻(xiàn)[8]提出了SURF(speed up robust features)算法,該算法利用Hessian矩陣和Hear小波相互結(jié)合作為SURF描述子,SURF算法優(yōu)點(diǎn)是特征點(diǎn)具有尺度不變性,計(jì)算速度略高于SIFT,穩(wěn)定性略低于SIFT.SIFT和SURF的計(jì)算速度較慢,不適合用于移動機(jī)器人視覺SLAM算法,文獻(xiàn)[9]提出了ORB(oriented FAST and rotated BRIEF(binary robust independent elementarty features))算法,該算法的優(yōu)點(diǎn)是計(jì)算速度快,然而ORB算法的穩(wěn)定性弱于SIFT描述子和SURF描述子,但考慮到視覺SLAM算法需要較高實(shí)時性,因此,ORB特征點(diǎn)更適用于特征點(diǎn)SLAM算法.由于ORB算法過于追求速度上的優(yōu)勢,因此,ORB算法在尺度不變性、光照不變性和旋轉(zhuǎn)不變性上效果不好,會導(dǎo)致大量的誤匹配.很多學(xué)者也對ORB算法進(jìn)行了優(yōu)化,如柴江龍等[10]人采用梯度方向改進(jìn)法對ORB特征進(jìn)行改進(jìn),但是該方法提取特征點(diǎn)數(shù)目過少,無法應(yīng)用到特征點(diǎn)SLAM算法;張陽等[11]人提出使用均勻采樣算法對ORB特征進(jìn)行改進(jìn),在一定程度上提升了ORB特征的穩(wěn)定性,但沒有對ORB特征描述子優(yōu)化,因此匹配成功率提升幅度較??;王湘明等[12]人提出了改進(jìn)特征方法,但是該算法需要的特征點(diǎn)不多,因此該算法無法應(yīng)用到大范圍的移動機(jī)器人.
針對ORB特征點(diǎn)穩(wěn)定性差的問題,本文主要對ORB特征點(diǎn)穩(wěn)定性進(jìn)行了優(yōu)化,針對ORB描述子不具備尺度不變性的問題,提出采用多尺度圖像金子塔提取特征點(diǎn)方法保證ORB特征的尺度不變性,通過計(jì)算熵值選取合適的圖像金字塔層數(shù),對熵值進(jìn)行歸一化處理解決特征點(diǎn)的光照不變性.引入圖像力場理論對ORB特征描述子進(jìn)行優(yōu)化,保證ORB特征描述子的穩(wěn)定性,并減少誤匹配.在此基礎(chǔ)上,采用PROSAC算法剔除冗余特征點(diǎn),提高特征點(diǎn)匹配精度.最后通過實(shí)驗(yàn)驗(yàn)證了本文算法的有效性和精確性.
ORB特征提取算法主要包含三個部分,分別為圖像特征點(diǎn)提取、特征點(diǎn)描述向量構(gòu)建與特征點(diǎn)匹配.ORB特征點(diǎn)提取是從圖像中提取一定數(shù)量的FAST特征點(diǎn),建立圖像不同尺度的高斯金字塔.由于FAST特征點(diǎn)本身不具備旋轉(zhuǎn)特性,因此采用灰度質(zhì)心法保證其旋轉(zhuǎn)不變性,將灰度圖像的角點(diǎn)和質(zhì)心組成的偏移向量定義為FAST特征點(diǎn)方向.
FAST特征點(diǎn)的鄰域矩陣定義為
(1)
式中:(x,y)為相對FAST特征點(diǎn)的位置,(x,y)∈[-R,R],R為圓形鄰域半徑,一般取4;I(x,y)為(x,y)坐標(biāo)上圖像的灰度值;mpq為特征點(diǎn)p+q階矩陣,p、q=0,1,2,….由此可得FAST角點(diǎn)圓形鄰域的圖像質(zhì)心為
(2)
FAST特征點(diǎn)向量的方向?yàn)?/p>
(3)
ORB算法采用rBRIEF描述子,該描述子具有旋轉(zhuǎn)不變性,其實(shí)質(zhì)是在特征點(diǎn)中選取一定數(shù)量的像素點(diǎn),通過比較其灰度值,組成一個二進(jìn)制形式的特征描述子,相應(yīng)圖像塊的描述子分段函數(shù)T定義為
(4)
式中,d(x)和d(y)為鄰域內(nèi)x和y處的灰度函數(shù).需要選擇S個(x,y)位置對,BRIEF描述子包含n個二進(jìn)制形式的矢量,即
(5)
為了求取特征描述子方向,將式(3)得到的特征點(diǎn)質(zhì)心方向信息添加至描述子中.在任意位置(x,y)處,定義一個2×n的矩陣,即
(6)
式中,(xi,yi)為測試點(diǎn)對,i=1,2,…,n.
Q在旋轉(zhuǎn)后的矩陣Qθ表示為
Qθ=RθQ
(7)
式中,Rθ為旋轉(zhuǎn)方向矩陣,即
(8)
通過式(5)、(7)計(jì)算,可以得到加上主方向的特征描述子為
gn(d,θ)=fn(d)|(xi,yi)∈Qθ
(9)
最后采用貪婪算法,從特征點(diǎn)周圍隨機(jī)找出256個像素塊,同時使其相關(guān)性最低并構(gòu)成特征點(diǎn)的描述子.
利用ORB提取兩個將要匹配圖像塊的特征點(diǎn)描述子,采用漢明距離計(jì)算ORB特征的相似度,當(dāng)兩個漢明距離的比例小于一個閾值(設(shè)定為0.85)時,認(rèn)為這兩個特征點(diǎn)是相互匹配的.匹配中使用的兩個描述子定義為K1、K2,即
(10)
通過漢明距離計(jì)算ORB特征描述子的相似度D(K1,K2),D(K1,K2)越大,則相似度越高,其表達(dá)式為
(11)
在ORB特征提取時,為了解決ORB特征的尺度不變性問題,采取圖像的高斯金字塔來解決ORB尺度不變性,通常將原有ORB算法中金字塔的尺度層數(shù)設(shè)置為8,但由于金字塔層數(shù)S比較大,圖像不清晰,其信息量不足,不利于后來的匹配過程.因此,為了選取合適的金字塔層數(shù)S,使用圖像熵來優(yōu)化圖像金字塔的層數(shù),建立最優(yōu)圖像金子塔解決ORB特征的尺度不變性.
圖像熵反應(yīng)圖像的平均信息量,表示某像素的亮度值與周圍像素亮度分布的綜合情況,圖像熵H的表達(dá)式為
(12)
(13)
式中:f(i,j)為亮度函數(shù),即點(diǎn)(i,j)處的亮度值;N為采集圖像的橫向和縱向總像素,1
圖1為桌面圖像.對圖1每層圖像金字塔進(jìn)行計(jì)算圖像熵,結(jié)果如表1所示.第1層圖像熵為7.621 75,第7層圖像熵為6.957 82,大約為原圖像的90%,因此選擇圖像金字塔層數(shù)為6.
圖1 桌面圖像Fig.1 Desktop image
表1 圖像熵值Tab.1 Image entropy
研究人員通過引入自然界內(nèi)引力的概念,提出了一種圖像的力場轉(zhuǎn)換理論.在力場轉(zhuǎn)換理論中,本文將每幅圖像當(dāng)做一個引力場,而力場形成是通過假定圖像中任意兩個像素點(diǎn)之間存在引力作用,即圖像中位置rj的像素點(diǎn)受到位置ri像素點(diǎn)的引力作用Fi(rj),引力大小與ri像素點(diǎn)灰度值成正比,與ri點(diǎn)和rj點(diǎn)間距離的平方成反比.引力方向即兩點(diǎn)間連線方向,可表示為
(14)
式中:I(ri)為點(diǎn)ri的灰度值;ri-rj為力的矢量方向;|ri-rj|為兩個像素點(diǎn)之間的距離.像素點(diǎn)rj受到其他所有像素點(diǎn)的引力和可表示為
(15)
基于力場轉(zhuǎn)換理論,設(shè)計(jì)基于力場理論的ORB特征提取算法運(yùn)行步驟如下:
1)計(jì)算各層圖像熵,選擇一個合適的圖像金字塔層數(shù);
2)對不同金字塔層數(shù)的圖像進(jìn)行FAST特征點(diǎn)檢測;
3)根據(jù)圖像力場轉(zhuǎn)換理論計(jì)算FAST特征點(diǎn)的引力方向,并計(jì)算出特征點(diǎn)引力大??;
4)對FAST特征點(diǎn)計(jì)算BRIEF描述子,形成ORB特征;
5)對特征點(diǎn)的描述子施加引力方向和引力大小的約束.
由于外界噪聲干擾問題,利用ORB特征進(jìn)行圖像特征匹配,容易出現(xiàn)匹配錯誤.采用漢明距離匹配可能出現(xiàn)誤匹配特征點(diǎn),從而導(dǎo)致匹配效果下降.本文采用PROSAC算法對漢明距離匹配后的特征點(diǎn)進(jìn)行篩選,具體步驟如下:
1)設(shè)置迭代次數(shù)初值、內(nèi)點(diǎn)數(shù)目閾值、最大迭代次數(shù)和誤差范圍;
2)將樣本數(shù)據(jù)按質(zhì)量好壞降序排序,然后選取k個質(zhì)量較高的數(shù)據(jù);
3)從選取的k個數(shù)據(jù)中隨機(jī)去掉k″個,然后計(jì)算模型參數(shù),計(jì)算與此模型參數(shù)誤差小于設(shè)定范圍內(nèi)點(diǎn)數(shù)目;
4)若內(nèi)點(diǎn)數(shù)目小于設(shè)定閾值,則將迭代次數(shù)加1,返回步驟2).
經(jīng)過漢明距離和PROSAC算法篩選后得到的匹配點(diǎn)對為穩(wěn)定的ORB特征點(diǎn)對.針對現(xiàn)有ORB-SLAM所需ORB特征點(diǎn)數(shù)量較多,本文所有實(shí)驗(yàn)設(shè)置PROSAC具體參數(shù)為:迭代初值為0,最大迭代次數(shù)為2 000,置信區(qū)間為0.97,內(nèi)點(diǎn)數(shù)目閾值為400.
為了驗(yàn)證本文優(yōu)化算法的性能,進(jìn)行了4組實(shí)驗(yàn).實(shí)驗(yàn)在PC端進(jìn)行,操作系統(tǒng)為Ubuntu16.04,CPU為i5-7300HQ(2.50 GHz),8 GB內(nèi)存.
實(shí)驗(yàn)環(huán)境分別為桌子、地面方向、門以及窗戶四個區(qū)域.圖2將圖像向右旋轉(zhuǎn)90°并縮放的ORB匹配實(shí)驗(yàn)和優(yōu)化的ORB算法匹配實(shí)驗(yàn)及ORB特征漢明距離對比.通過漢明距離數(shù)據(jù)對比,可以看出優(yōu)化ORB算法能夠使特征點(diǎn)的描述子更加精確.
圖2~5分別為對桌子、門、窗戶、室內(nèi)4組圖像向右旋轉(zhuǎn)90°并縮放的ORB匹配實(shí)驗(yàn)和本文優(yōu)化的ORB算法匹配實(shí)驗(yàn).通過對圖像分別旋轉(zhuǎn)和縮放進(jìn)行特征匹配,即圖像向右旋轉(zhuǎn)90°并縮放的ORB匹配實(shí)驗(yàn)和本文優(yōu)化的ORB算法匹配實(shí)驗(yàn),其中子圖a為ORB算法匹配實(shí)驗(yàn),子圖b為ORB優(yōu)化算法實(shí)驗(yàn),子圖c為漢明距離對比.通過實(shí)驗(yàn)驗(yàn)證了本文提出的優(yōu)化ORB算法可以很好地應(yīng)用到室內(nèi)環(huán)境圖像匹配.表2中實(shí)驗(yàn)組別1~4分別對應(yīng)圖2~5四組實(shí)驗(yàn).表2、3為ORB算法和ORB優(yōu)化算法圖像尺度和旋轉(zhuǎn)變化匹配準(zhǔn)確度,表4為算法執(zhí)行時間.
圖2 桌子尺度和旋轉(zhuǎn)變化匹配對比Fig.2 Comparison in matching between desk scale and rotation change
圖3 門尺度和旋轉(zhuǎn)變化匹配對比Fig.3 Comparison in matching between gate scale and rotation change
圖4 窗戶尺度和旋轉(zhuǎn)變化匹配對比Fig.4 Comparison in matching between window scale and rotation change
圖5 室內(nèi)環(huán)境尺度和旋轉(zhuǎn)變化匹配對比Fig.5 Comparison in matching between indoor environmental scale and rotation change
根據(jù)表2、3可以看出,ORB算法最高成功匹配率為73.8%,ORB優(yōu)化算法的最低成功匹配率為88.8%.根據(jù)表4可以看出,本文優(yōu)化算法的執(zhí)行速度和原有的ORB算法執(zhí)行速度基本相差不大,完全沒有影響到ORB算法的執(zhí)行速度.
使用牛津經(jīng)典數(shù)據(jù)匹配庫中的bike圖像進(jìn)行SIFT、SURF、ORB和本文算法進(jìn)行比較,結(jié)果如表5、6所示,本文ORB優(yōu)化算法的準(zhǔn)確率超過了SURF和ORB的準(zhǔn)確率,略低于SIFT準(zhǔn)確率.本文算法執(zhí)行速度遠(yuǎn)大于SIFT算法和SURF算法,同時與ORB算法執(zhí)行速度相差很小.
表2 ORB算法圖像尺度和旋轉(zhuǎn)變化匹配準(zhǔn)確度Tab.2 Matching accuracy of image scale and rotation change for ORB algorithm
表3 ORB優(yōu)化算法圖像尺度和旋轉(zhuǎn)變化匹配準(zhǔn)確度Tab.3 Matching accuracy of image scale and rotation change for optimized ORB algorithm
表4 算法執(zhí)行時間Tab.4 Execution time of algorithm s
表5 數(shù)據(jù)集中算法準(zhǔn)確率Tab.5 Accuracy of algorithm in data sets
表6 數(shù)據(jù)集中算法執(zhí)行時間Tab.6 Execution time of algorithm in data sets
通過以上實(shí)驗(yàn)數(shù)據(jù)對比可知,本文提出的優(yōu)化ORB算法建立的特征點(diǎn)描述子更加準(zhǔn)確,提高了匹配效率和精度,使得ORB特征點(diǎn)的抗旋轉(zhuǎn)能力更強(qiáng),同時解決了ORB特征不具備尺度不變性的問題.
本文提出了基于圖像力場理論的ORB特征優(yōu)化算法,通過圖像熵算法計(jì)算每層高斯金字塔圖像的熵值,解決ORB特征的尺度不變性;然后將圖像力場轉(zhuǎn)換原理引入ORB特征點(diǎn)中,優(yōu)化ORB特征點(diǎn)的主方向,通過特征點(diǎn)引力大小約束特征描述子;最后采用PROSAC算法對ORB特征進(jìn)行匹配優(yōu)化.實(shí)驗(yàn)結(jié)果表明,本文算法提高了描述子的準(zhǔn)確度和ORB特征點(diǎn)的匹配精度.