季莘翔,王宇鋼,林一鳴
(遼寧工業(yè)大學(xué)機(jī)械工程與自動化學(xué)院,錦州 121001)
伴隨智能巡檢機(jī)器人的廣泛應(yīng)用,其核心技術(shù)之一的視覺同步定位與建圖(visual simultaneous localization and mapping,V-SLAM)已成為機(jī)器視覺的熱點(diǎn)研究方向[1]。相比于激光SLAM,V-SLAM可以通過相機(jī)進(jìn)行空間定位,無需人工信標(biāo)和ID信息,具有體積小、性價(jià)比高、信息豐富等優(yōu)勢[2]。ORB-SLAM2是首個支持單目、雙目和RGB-D相機(jī)的完整開源視覺SLAM方案,可以實(shí)時(shí)計(jì)算相機(jī)的位姿且能夠三維建圖,應(yīng)用最為廣泛[3]。
特征提取是決定視覺SLAM精度和效率的關(guān)鍵環(huán)節(jié),目前已有SUFT、FAST和ORB等許多比較成熟的算法[4]。其中,RUBLEE等[5]結(jié)合FAST角點(diǎn)檢測算法和BRIEF二進(jìn)制特征描述算法提出了ORB算法,具有旋轉(zhuǎn)不變性和提取計(jì)算速度快的優(yōu)勢。但其同時(shí)存在提取特征點(diǎn)分布不均勻問題,進(jìn)而影響匹配精度和效率。因此學(xué)者基于上述問題針對傳統(tǒng)ORB算法進(jìn)行了改進(jìn)研究。倪翠等[6]通過分析圖片的復(fù)雜程度和分割區(qū)域個數(shù),對各區(qū)域計(jì)算自適應(yīng)的閾值,但復(fù)雜的分析和閾值計(jì)算增加了特征點(diǎn)提取的時(shí)間。姚晉晉等[7]通過對不同的圖片灰度值檢測,計(jì)算出適應(yīng)不同圖片的閾值算法,該算法具有更強(qiáng)的抗干擾能力,但耗時(shí)較長。MUR等[8]使用四叉樹算法提高特征點(diǎn)的分布均勻度,因具有良好的旋轉(zhuǎn)不變性和尺度不變性,被成功應(yīng)用到ORB-SLAM2中。但文獻(xiàn)[8]算法提取時(shí)間明顯增加,特征點(diǎn)強(qiáng)行平均分配,導(dǎo)致產(chǎn)生灰度值差值小的特征點(diǎn)在匹配時(shí)會誤匹配,從而影響定位精度。以上方法絕大部分只進(jìn)行了特征點(diǎn)提取階段的實(shí)驗(yàn)分析和驗(yàn)證,而缺少結(jié)合ORB-SLAM2進(jìn)行軌跡定位研究,無法證實(shí)改進(jìn)算法在機(jī)器人定位建圖過程的應(yīng)用效果。
針對上述情況,本文提出了一種改進(jìn)的ORB算法。首先采用四叉樹算法對圖片進(jìn)行分割,然后通過密度峰值聚類算法(density peaks clustering,DPC)得到各區(qū)域特征點(diǎn)峰值,依據(jù)結(jié)果將區(qū)域劃分為高、低數(shù)量區(qū),并對密度峰值高的區(qū)域使用四叉樹多次分割,同時(shí)加入閾值middleThFAST,提高特征點(diǎn)灰度值差值,減少冗余特征點(diǎn),提高圖片特征點(diǎn)均勻性。最后通過數(shù)據(jù)集進(jìn)行特征點(diǎn)提取與匹配實(shí)驗(yàn)驗(yàn)證,并將本文算法應(yīng)用于ORB-SLAM2中開展了定位試驗(yàn)研究。
ORB-SLAM2由3個主要的并行線程組成:跟蹤、局部建圖和回環(huán)檢測。跟蹤線程使用ORB算法從圖像中提取特征并進(jìn)行匹配,定位每幀相機(jī)位姿并生成關(guān)鍵幀。局部建圖線程運(yùn)用局部BA算法優(yōu)化相機(jī)位姿和特征點(diǎn)云?;丨h(huán)檢測線程檢測回環(huán)并通過位姿圖優(yōu)化消除累計(jì)漂移誤差。在位姿圖優(yōu)化后會啟動第4個線程執(zhí)行全局BA算法,計(jì)算整個系統(tǒng)最優(yōu)結(jié)構(gòu)和運(yùn)動結(jié)果[9]。本文采用改進(jìn)的ORB算法取代ORB-SLAM2中原有的文獻(xiàn)[8]算法,實(shí)現(xiàn)特征點(diǎn)提取和匹配,對機(jī)器人的位姿估計(jì),并最終應(yīng)用于ORB-SLAM2中進(jìn)行跟蹤定位。系統(tǒng)框架結(jié)構(gòu)如圖1所示。
圖1 ORB-SLAM2結(jié)構(gòu)圖
ORB算法包括oFAST(oriented FAST)特征點(diǎn)檢測和rBRIEF(rotation BRIEF)描述子計(jì)算兩個步驟。oFAST算法能夠通過灰度質(zhì)心法使特征點(diǎn)具有方向信息。rBRIEF算法將oFAST算法得到的方向信息,作為主方向信息,進(jìn)行描述子計(jì)算,解決BRIEF算法不具備旋轉(zhuǎn)不變性的缺陷[10]。
ORB算法通過比較待測像素點(diǎn)p與周圍鄰域16個像素點(diǎn)的灰度值差值來判斷該點(diǎn)是否為角點(diǎn)。待測像素點(diǎn)p灰度值為I(p),設(shè)定的閾值為t,若16個像素點(diǎn)中有N個以上像素點(diǎn)的灰度值差值的絕對值大于設(shè)定的閾值,則判定為角點(diǎn)[11],特征點(diǎn)判定如式(1)所示。
(1)
式中:I(x)為范圍內(nèi)16個像素點(diǎn)中的任意一個點(diǎn)的灰度值,I(p)為待確定點(diǎn)的灰度值,t為設(shè)定的閾值。
rBRIEF算法在特征點(diǎn)周圍選取一對的子窗口,求出各個子窗口的灰度差進(jìn)行二值化,并組成二進(jìn)制編碼,形成特征點(diǎn)的描述子。將oFAST算法得到的特征點(diǎn)的主方向作為rBRIEF算法的主方對于任意位置坐標(biāo)構(gòu)造2×n矩陣,矩陣進(jìn)行旋轉(zhuǎn)變換,最終得到具有旋轉(zhuǎn)不變性的描述子為:
Gn=(p,θ)=fn(p)|(xi,yi)∈Aθ
(2)
式中:Gn為描述子,p為待測像素點(diǎn),θ為特征點(diǎn)主方向,fn(p)為二進(jìn)制編碼,(xi,yi)為任意位置坐標(biāo),Aθ為選裝變換后得到的旋轉(zhuǎn)矩陣。
針對傳統(tǒng)ORB算法存在的特征點(diǎn)分布不均勻問題,本文通過DPC算法計(jì)算四叉樹分割區(qū)域特征點(diǎn)數(shù)量的峰值。根據(jù)峰值將各區(qū)域劃分為2個高數(shù)量區(qū)和2個低數(shù)量區(qū),對高數(shù)量區(qū)再次使用四叉樹多次分割,使特征點(diǎn)均勻分布在整幅圖片上。在特征點(diǎn)提取初始閾值(iniThFAST)和最小閾值(minThFAST)中加入中間閾值(middleThFAST),縮小提取特征點(diǎn)閾值的跨度,進(jìn)而提高特征點(diǎn)灰度值差值,提高圖片特征點(diǎn)均勻性。
DPC算法基于特征點(diǎn)的局部密度Pi與數(shù)據(jù)點(diǎn)距離δi這兩個數(shù)值,通過對各個數(shù)據(jù)點(diǎn)局部密度和距離的計(jì)算統(tǒng)計(jì),構(gòu)建數(shù)據(jù)的決策圖以快速識別準(zhǔn)確的簇中心[11]。該算法基于兩個基本假設(shè):①簇中心(密度峰值點(diǎn))的局部密度大于圍繞它的鄰居的局部密度;②不同簇中心之間的距離相對較遠(yuǎn)。Pi定義如式(3)所示。
(3)
式中:Pi為點(diǎn)xi局部密度,dij為xi和xj之間的歐式距離,dc為截?cái)嗑嚯x。若xi>xj,則xi到局部密度最大且距離最近的特征點(diǎn)xj的距離δi計(jì)算方法如式(4)所示,否則距離δi計(jì)算方法如式(5)所示。
δi=minj(dij)
(4)
δi=maxj(dij)
(5)
經(jīng)實(shí)驗(yàn)確定,當(dāng)本文算法中高數(shù)量區(qū)分割次數(shù)大于3次時(shí)提取特征點(diǎn)分布結(jié)果不再明顯變化,但運(yùn)算時(shí)間會隨分割次數(shù)顯著增加。因此,本文將最大分割次數(shù)設(shè)定為3次。
傳統(tǒng)ORB算法在提取時(shí),最小閾值(minThFAST)過低會導(dǎo)致產(chǎn)生大量冗余特征點(diǎn),增加運(yùn)算時(shí)間,最小閾值過高,提取不到足夠的特征點(diǎn)。因此,本文算法在iniThFAST和minThFAST中間加入middleThFAST。當(dāng)在高數(shù)量區(qū)域依據(jù)iniThFAST提取特征點(diǎn)的數(shù)量不足時(shí),采用middleThFAST代替minThFAST進(jìn)行特征點(diǎn)提取。此時(shí)閾值較高,提取出的特征點(diǎn)灰度差值較大,提取出的冗余特征點(diǎn)較少,剔除時(shí)間更短。當(dāng)在低數(shù)量區(qū)域以middleThFAST提取特征點(diǎn)時(shí),如果滿足設(shè)定值,則要比用minThFAST提取出的特征點(diǎn)灰度大,冗余特征點(diǎn)少。如果沒有滿足設(shè)定值,降低至minThFAST進(jìn)行再次提取與剔除。middleThFAST計(jì)算方法如式(6)所示。
(6)
流程圖如圖2所示,算法步驟為:
圖2 改進(jìn)ORB算法流程圖
步驟1:讀取圖像,設(shè)置參數(shù)iniThFAST,middleThFAST和minThFAST;分割次數(shù)i=0,imax=3;
步驟2:構(gòu)建圖像金字塔;
步驟3:用四叉樹算法分割圖片,并提取特征點(diǎn),i=i+1;
步驟4:根據(jù)DPC算法得到各區(qū)域的特征點(diǎn)峰值劃分出高、低數(shù)量區(qū)域;
步驟5:低數(shù)量區(qū)域,根據(jù)middleThFAST和minThFAST閾值提取特征點(diǎn)并轉(zhuǎn)到步驟6;高數(shù)量區(qū)域,根據(jù)iniThFAST和middleThFAST提取特征點(diǎn)并轉(zhuǎn)到步驟5;
步驟6:判斷i是否小于等于imax,若滿足轉(zhuǎn)到步驟2,否則轉(zhuǎn)到步驟6;
步驟7:將步驟3和步驟4的圖片分割區(qū)域進(jìn)行拼接,構(gòu)建描述子。
實(shí)驗(yàn)運(yùn)行環(huán)境:操作系統(tǒng)為VM虛擬機(jī)Ubuntu18.04LTS,CPU為Intel(R) Core(TM) i7-10875H,主頻2.30 GHz,內(nèi)存為8 G,開發(fā)語言為C++。
采用Mikolajczy數(shù)據(jù)集中5組圖片進(jìn)行特征點(diǎn)提取與匹配實(shí)驗(yàn)。bark數(shù)據(jù)集為一組內(nèi)容單一且覆蓋全圖的圖像;bike數(shù)據(jù)集為一組模糊程度不同的圖像;leuven數(shù)據(jù)集為一組光照明暗不同的圖像;wall數(shù)據(jù)集為一組同內(nèi)容不同角度的圖像;ubc數(shù)據(jù)集為一組壓縮度不同的圖像。
圖3為3種算法在ubc數(shù)據(jù)集的部分提取結(jié)果,圖中不同大小的圓和點(diǎn)為提取的特征點(diǎn)位置。由圖可知,傳統(tǒng)ORB算法提取特征點(diǎn)時(shí),提取到的特征點(diǎn)數(shù)量有限,主要集中在樹體邊緣和窗框等顏色差值明顯部分,在建筑墻體和樹本體取的特征點(diǎn)卻很少,分布極不均勻;本文算法提取到的特征點(diǎn)相比傳統(tǒng)ORB算法和文獻(xiàn)8算法更多,而且分布在整幅圖片上。
(a) 傳統(tǒng)ORB算法
(b) 文獻(xiàn)[8]算法
(c) 本文算法
本文采用分布均勻度U作為特征點(diǎn)分布均勻性的客觀評價(jià)指標(biāo),計(jì)算方法如式(7)所示[12]。
U=101log(v)
(7)
式中:v為區(qū)域統(tǒng)計(jì)分布向量的方差,區(qū)域統(tǒng)計(jì)分布向量指各區(qū)域特征點(diǎn)數(shù)量值形成的向量。對6組數(shù)據(jù)集的特征點(diǎn)提取實(shí)驗(yàn)結(jié)果如表1所示。
表1 特征點(diǎn)提取實(shí)驗(yàn)結(jié)果
由表1可知,針對5組不同數(shù)據(jù)集,在提取時(shí)間方面本文算法略低于傳統(tǒng)ORB算法,但優(yōu)于文獻(xiàn)[8]算法,運(yùn)行時(shí)間平均節(jié)省16.4%。在均勻性方面,由于本文算法特征點(diǎn)數(shù)量提取更多,針對灰度差值較大區(qū)域,特征點(diǎn)數(shù)量分配更多。因此本文算法在分布均勻度上性能優(yōu)于傳統(tǒng)ORB算法,略低于文獻(xiàn)[8]算法。綜上所述,3種算法對比,本文算法在提取特征點(diǎn)分布均勻性和運(yùn)算效率綜合性能更好,為實(shí)現(xiàn)圖像特征匹配提供了良好基礎(chǔ)。
圖4為針對leuven數(shù)據(jù)集,傳統(tǒng)ORB算法、文獻(xiàn)[8]算法和本文算法提取的特征點(diǎn)進(jìn)行匹配結(jié)果。從圖4可以看出本文算法在不同數(shù)據(jù)集下均可有效運(yùn)行,特征匹配精度較好。本文采用匹配精度M作為客觀評價(jià)指標(biāo),計(jì)算方法如式(8)所示。
(a) 傳統(tǒng)ORB算法
(b) 文獻(xiàn)[8]算法
(c) 本文算法
M=N/N0
(8)
式中:N為通過隨機(jī)抽樣一致性算法匹配到的特征點(diǎn)數(shù)目,N0為通過最近鄰算法和旋轉(zhuǎn)一致性匹配到的特征點(diǎn)數(shù)目。
表2為5組數(shù)據(jù)集的提取特征點(diǎn)匹配實(shí)驗(yàn)結(jié)果。本文算法針對5種數(shù)據(jù)集在匹配時(shí)間和匹配精度方面均保持在較高水平,且結(jié)果穩(wěn)定,表明本文算法具有較好的泛化性能。3種算法相比,在運(yùn)算時(shí)間方面,相比傳統(tǒng)ORB算法和文獻(xiàn)[8]算法,本文算法平均用時(shí)減少9.45%。本文算法對比文獻(xiàn)[8]算法在匹配精度方面提高了3%,與傳統(tǒng)ORB算法相當(dāng)。
基于TUM RBD-benchmark的2個數(shù)據(jù)集進(jìn)行定位實(shí)驗(yàn)研究。數(shù)據(jù)集序列由高精度運(yùn)動捕獲系統(tǒng)提供,其軌跡可認(rèn)為是真實(shí)軌跡,其中desk數(shù)據(jù)集長度為9.263 m,平均速度0.413 m/s;room數(shù)據(jù)集長度為15.989 m,平均速度0.334 m/s。文獻(xiàn)[8]方法已被廣泛應(yīng)用于ORB-SLAM2,因此將本文方法與文獻(xiàn)[8]方法的軌跡進(jìn)行分析比較,驗(yàn)證文本算法在ORB-SLAM2中的實(shí)際效果。
實(shí)時(shí)性是評價(jià)ORB-SLAM2的重要指標(biāo)之一,表3為每幀追蹤時(shí)間均值對比結(jié)果。由表3可知,因?yàn)樵黾恿颂卣鼽c(diǎn)的分布均勻度和單幅圖片的特征點(diǎn)提取效率,本文算法的每幀追蹤時(shí)間比文獻(xiàn)[8]算法平均節(jié)省12.4%,提高了ORB-SLAM2的實(shí)時(shí)性。
表3 每幀追蹤時(shí)間均值對比結(jié)果 (ms)
圖5為兩種算法運(yùn)動軌跡圖,灰色虛線為數(shù)據(jù)集給出的參考軌跡,彩色實(shí)線代表估計(jì)軌跡,并通過顏色區(qū)分不同程度的定位誤差。由圖5a和圖5c可知,文獻(xiàn)[8]算法在大弧度轉(zhuǎn)彎處有明顯的偏移,是因?yàn)樵谒俣群愣〞r(shí),轉(zhuǎn)彎會導(dǎo)致連續(xù)幾幀圖片中的重復(fù)部分變小,此時(shí)若存在大量灰度差值較小的特征點(diǎn),會導(dǎo)致匹配精度下降,從而影響定位精度。本文算法如圖5b和圖5d所示,減小了在同一位置的定位誤差,說明本文算法對定位精度有所提升。
(a) 文獻(xiàn)[8]算法運(yùn)行desk數(shù)據(jù)集 (b) 本文算法運(yùn)行desk數(shù)據(jù)集
(c) 文獻(xiàn)[8]算法運(yùn)行room數(shù)據(jù)集 (d) 本文算法運(yùn)行room數(shù)據(jù)集
為了量化定位精度,采用絕對軌跡誤差(absolute trajectory error,ATE)進(jìn)行比較分析。絕對軌跡誤差是估計(jì)位姿和真實(shí)位姿的直接差值,可以非常直觀的反應(yīng)算法精度和軌跡全局一致性[13]。ATE越小,精度越高。第i幀ATE定義如式(9)所示。
(9)
使用均方根誤差(RMSE)統(tǒng)計(jì)ATE,計(jì)算方法如式(10)所示。
(10)
式中:Fi為第i幀的ATE,Qi為真實(shí)位姿,Pi為算法估計(jì)位姿,S為從估計(jì)位姿到真實(shí)位姿的相似旋轉(zhuǎn)矩陣。
圖6a~圖6d分別為兩種算法運(yùn)行desk數(shù)據(jù)集和room數(shù)據(jù)集的絕對軌跡誤差圖。由圖6a和圖6b對比可知,對于desk數(shù)據(jù)集文獻(xiàn)[8]算法的最大誤差峰值為0.085遠(yuǎn)大于本文算法的0.045,且本文算法軌跡誤差波動范圍較小。對于room數(shù)據(jù),由圖6c和圖6d對比可知具有相似結(jié)論。結(jié)果表明相較于文獻(xiàn)[8]算法,本文算法絕對軌跡誤差有著明顯的減小,定位精度提升。
(a) 文獻(xiàn)[8]算法運(yùn)行desk數(shù)據(jù)集 (b) 本文算法運(yùn)行desk數(shù)據(jù)集
(c) 文獻(xiàn)[8]算法運(yùn)行room數(shù)據(jù)集 (d) 本文算法運(yùn)行room數(shù)據(jù)集
表4為兩組數(shù)據(jù)集誤差對比。由表4可知,在desk數(shù)據(jù)集中,本文方法在均方根誤差、中值誤差和均值誤差上對比文獻(xiàn)[8]算法分別低12.57%、6.75%和17.05%;在room數(shù)據(jù)集中,在均方根誤差、中值誤差和均值誤差上分別低19.74%、10.12%和23.14%。
表4 兩組數(shù)據(jù)集誤差對比 (m)
綜上所述,本文算法對比文獻(xiàn)[8]算法,在各種條件下的圖片數(shù)據(jù)集中,特征點(diǎn)提取效率和特征點(diǎn)匹配精度均有提高,在室內(nèi)小范圍有回環(huán)數(shù)據(jù)集desk和室內(nèi)大范圍有回環(huán)數(shù)據(jù)集room中定位精度均有提高。
本文提出一種改進(jìn)的ORB特征提取算法。通過DPC算法依據(jù)峰值密度劃分高、低數(shù)量區(qū)域,并對高數(shù)量區(qū)域進(jìn)行多次分割;同時(shí)加入middleThFAST閾值,提高特征點(diǎn)灰度值差值,提高特征點(diǎn)分布均勻性。
在Mikolajczy數(shù)據(jù)集下,本文算法相比傳統(tǒng)ORB算法在均勻度方面提高了12.45%,匹配效率提高9.45%,有效地解決了提取特征點(diǎn)分布不均勻問題。同時(shí),將本文算法應(yīng)用于ORB-SLAM2,實(shí)現(xiàn)了機(jī)器人運(yùn)動定位精度和實(shí)時(shí)性的提升。通過TUM數(shù)據(jù)集驗(yàn)證得出,在定位精度方面平均提高了15.83%,每幀追蹤時(shí)間平均減少12.4%。實(shí)驗(yàn)結(jié)果表明本文提出的改進(jìn)ORB算法能夠有效提升機(jī)器人的即時(shí)定位精度,可應(yīng)用于機(jī)器人的路徑規(guī)劃和導(dǎo)航。