朱鳴鏑, 陳 嬋
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院, 上海 200093)
同時(shí)定位與地圖構(gòu)建(SLAM)是計(jì)算機(jī)視覺(jué)和機(jī)器人領(lǐng)域的主流研究方法。這是指搭載有特定傳感器的主體,在沒(méi)有環(huán)境先驗(yàn)信息的情況下,于運(yùn)動(dòng)過(guò)程中建立環(huán)境的模型,同時(shí)估計(jì)自己的運(yùn)動(dòng)。將相機(jī)作為唯一外部傳感器的SLAM稱為視覺(jué)SLAM。由于相機(jī)價(jià)格低,重量輕,易于裝配在其他硬件上,并且圖像包含豐富的信息,近年來(lái)視覺(jué)SLAM技術(shù)取得了很大進(jìn)展[1]。
根據(jù)圖像信息如何用于位姿估計(jì),視覺(jué)SLAM可以分為直接方法:基于特征的方法和混合方法。 本文主要討論基于特征的SLAM方法。圖像基本上是亮度和顏色的矩陣。 直接從矩陣水平考慮姿態(tài)估計(jì)是非常困難的。 因此,可以從稱為特征的圖像中選擇更多角點(diǎn),這些角點(diǎn)在攝像機(jī)角度稍有變化后保持不變。因此,可以在每個(gè)圖像中找到相同的功能。 然后就可以基于這些特征討論姿勢(shì)估計(jì)問(wèn)題。每個(gè)特征點(diǎn)都有一個(gè)描述符,可以定量測(cè)量與其他特征的相似性。
為了從圖像中提取角點(diǎn),Harris等人[2-3]改進(jìn)并提出了基于Moravec角點(diǎn)檢測(cè)器的Harris角點(diǎn)檢測(cè)算法。并且David[4]提出的SIFT角點(diǎn)檢測(cè)算法和Bay等人[5]提出的SURF角點(diǎn)檢測(cè)算法已經(jīng)證明在許多應(yīng)用中特別成功。一方面,視覺(jué)SLAM中的特征點(diǎn)應(yīng)該是獨(dú)特的,對(duì)于視點(diǎn)和光照變化是不變的,同時(shí)對(duì)模糊和噪聲具有彈性;另一方面,檢測(cè)算法應(yīng)該是計(jì)算上有效且快速的。然而,Harris、SIFT和SURF計(jì)算成本都很高,很難在視覺(jué)SLAM中實(shí)現(xiàn)實(shí)時(shí)速度。隨著圖像處理技術(shù)的發(fā)展,Rosten等人[6]提出了FAST特征檢測(cè)算法,大大提高了速度,并應(yīng)用于PTAM[7]等一些實(shí)時(shí)SLAM應(yīng)用。 Rublee等人[8]提出的ORB特征檢測(cè)算法將灰度質(zhì)心法應(yīng)用于FAST,使其具有旋轉(zhuǎn)不變性。 Mur-Artal等人[9-10]在2015年提出的ORB-SLAM使用ORB提取特征,這是目前最先進(jìn)的視覺(jué)SLAM算法。然而,越來(lái)越多的項(xiàng)目正在將SLAM應(yīng)用于智能手機(jī)和嵌入式設(shè)備,因此提高SLAM的速度仍然是一個(gè)亟待研究的重要問(wèn)題[11]。
本文提出了一種改進(jìn)版的特征點(diǎn)提取算法,能夠很好地應(yīng)用于視覺(jué)SLAM當(dāng)中。在特征點(diǎn)檢測(cè)中,使用多尺度AGAST角點(diǎn)檢測(cè)[12]算法找出具有尺度不變性的興趣點(diǎn)。然后,結(jié)合重心法,改進(jìn)的AGAST算法可以獲得很強(qiáng)的魯棒性。在特征描述中,提取特征點(diǎn)的LATCH特征,并且這兩個(gè)特征組合形成新的二進(jìn)制AGAST-LATCH特征檢測(cè)算法。
實(shí)時(shí)性能是視覺(jué)SLAM的重要前提,因此提高算法的速度始終是一項(xiàng)重要的研究。ORB算法本質(zhì)上是FAST和BRIEF的組合。因?yàn)镸air 等人[12]提出的AGAST算法提升了FAST算法的速度與在光照變換下的魯棒性,但并未改善其對(duì)尺度變化與旋轉(zhuǎn)變換下魯棒性不高的缺陷。因此在本節(jié)中,研究提出了一種更好的特征提取過(guò)程,OARL算法(Oriented AGAST and Rotated LATCH),就是將AGAST算法與BRIEF算法相結(jié)合。OARL算法對(duì) AGAST 興趣點(diǎn)構(gòu)建尺度空間并加入灰度質(zhì)心法,使得AGAST算法對(duì)旋轉(zhuǎn)變換與尺度變化有著良好的魯棒性。OARL加快角點(diǎn)的提取,同時(shí)確保算法的性能。本文的方法是在灰度圖像上進(jìn)行的。 圖1顯示了本次研究提出的OARB特征提取過(guò)程。
圖1 OARL特征提取過(guò)程概述
FAST算法是在視覺(jué)SLAM和其他實(shí)時(shí)系統(tǒng)中查找特征點(diǎn)的首選方法。AGAST 特征檢測(cè)算法對(duì) FAST 進(jìn)行了改進(jìn),使得其相比FAST來(lái)說(shuō),運(yùn)算速度更快,耗時(shí)更少,對(duì)復(fù)雜場(chǎng)景圖片有更好的表現(xiàn)。該算法檢測(cè)角點(diǎn)所用的判據(jù)與FAST一致,如圖2所示,F(xiàn)AST算法將像素“p”與Bresenham圓上的16個(gè)像素進(jìn)行比較,其周圍半徑為3。 當(dāng)存在亮度高于或低于中心點(diǎn)的連續(xù)N個(gè)像素時(shí),像素“p”被判斷為角點(diǎn)。與 FAST 不同的是,AGAST 提供了一種更詳細(xì)的配置空間,采用“非較亮”與“非較暗”對(duì)原配置空間進(jìn)行擴(kuò)展。本文采用了以下概念:Sn→x表示為n→x的像素對(duì)于核n的狀態(tài),分配如式( 1) 所示:
圖2 中心像素點(diǎn)n以及其周圍16個(gè)像素點(diǎn)p
(1)
其中,S'n→x是前一個(gè)狀態(tài);I是該像素的亮度;u意味著狀態(tài)仍然未知。該結(jié)果使得二叉樹與三元樹相比時(shí)能在每個(gè)節(jié)點(diǎn)上單獨(dú)評(píng)估。此外配置空間大小也會(huì)增加到6N,而 616 ≈2 × 1012,所以將可能的節(jié)點(diǎn)N設(shè)置為16。閾值t越大,檢測(cè)到的角點(diǎn)越準(zhǔn)確,計(jì)算越快,但角點(diǎn)數(shù)越少; 閾值t越小,檢測(cè)到的角點(diǎn)越多,但計(jì)算越慢。
對(duì)于一幅待檢測(cè)圖像來(lái)說(shuō),通常都具有表示均勻表面的同質(zhì)化區(qū)域和(或)雜亂區(qū)域或具有紋理的結(jié)構(gòu)化區(qū)域。所以,不是從訓(xùn)練圖像(如FAST)學(xué)習(xí)像素配置的分布,而是首先概括學(xué)習(xí)結(jié)構(gòu)化和同質(zhì)區(qū)域的概率并根據(jù)該分布優(yōu)化決策樹。圖像均勻的概率可以通過(guò)像素狀態(tài)與核(Ps)相似的概率來(lái)建模。“更亮”和“更暗”狀態(tài)是鏡像狀態(tài),這意味著,例如,測(cè)試圖案上的更亮像素將在其變?yōu)橹行南袼貢r(shí)將當(dāng)前核像素評(píng)估為更暗。由于這種鏡像,狀態(tài)“更亮”和“更暗”被假定具有相同的概率(Pbd),選擇其與Ps(Ps+ 2Pbd= 1)總和為1。因此,像素配置pX的概率可用如下公式進(jìn)行計(jì)算:
(2)
根據(jù)式(2)的概率分布設(shè)定,利用特定場(chǎng)景下的訓(xùn)練集來(lái)確定概率數(shù)值,然后通過(guò)逆向歸納法構(gòu)造出如圖3所示的最優(yōu)二叉決策樹,在進(jìn)行決策樹切換時(shí),AGAST采用了一種自適應(yīng)的解決方案。先建立2棵樹,其中一個(gè)專門用于同質(zhì)化,另一個(gè)用于對(duì)圖像進(jìn)行結(jié)構(gòu)化;在每個(gè)決策樹的末端,對(duì)其執(zhí)行基于該葉的像素配置的適當(dāng)?shù)膶S脴涞奶D(zhuǎn),如圖2所示。當(dāng)像素的鄰像素發(fā)生變化時(shí),AGAST會(huì)在2個(gè)專用樹間進(jìn)行切換。葉節(jié)點(diǎn)的灰度越淺,則在其配置中的像素越平等。AGAST算法在生成專用樹時(shí),離線完成的對(duì)葉節(jié)點(diǎn)的評(píng)估使得其在專用決策樹之間的切換沒(méi)有額外的成本。另外,左樹實(shí)現(xiàn)了更少的像素評(píng)估,而右樹則可以優(yōu)化紋理區(qū)域。同時(shí)AST在任意場(chǎng)景中的適應(yīng)性能也得到了改善,無(wú)須進(jìn)行額外的訓(xùn)練。
圖3 AGAST算法示意圖
Fig. 3 Schematic of the adaptive and generic accelerated segment test
1.2.1 尺度不變性AGAST
在SLAM中,當(dāng)相機(jī)前后移動(dòng)時(shí)捕獲的相同對(duì)象將具有不同的比例,因此比例不變性對(duì)于特征檢測(cè)非常重要。由于AGAST特征檢測(cè)算法不具有尺度不變性,研究中設(shè)置了比例因子F(默認(rèn)取1.2)并構(gòu)建L(默認(rèn)取8)層圖像金字塔,在此基礎(chǔ)上提取角點(diǎn)和計(jì)算不同尺度圖像上的描述符。這使得角點(diǎn)具有比例不變性。然后將AGAST9-16(圓周上共有16個(gè)像素,閾值為9)算子應(yīng)用于尺度空間每一層,再記錄下候選點(diǎn)所在尺度空間位置,最終求出候選點(diǎn)及其AGAST分?jǐn)?shù)V。
1.2.2 旋轉(zhuǎn)不變性
AGAST不包含特征點(diǎn)的方向信息,因此難以構(gòu)造旋轉(zhuǎn)不變特征描述。在本節(jié)中,研究添加了一個(gè)有效計(jì)算的方向方法。本節(jié)的方法使用灰度質(zhì)心[2]方法來(lái)測(cè)量角點(diǎn)的方向。與普通方向參數(shù)算法相比,強(qiáng)度質(zhì)心對(duì)隨機(jī)噪聲具有更高的魯棒性。
本文采用灰度質(zhì)心法來(lái)計(jì)算角點(diǎn)方向。首先定義一個(gè)圖像塊B的灰度矩為Mpq,數(shù)學(xué)計(jì)算公式為:
(3)
其中,I(x,y)表示此坐標(biāo)處的灰度值。 本次研究中采用矩來(lái)計(jì)算圖像塊B的質(zhì)心C,由其運(yùn)算求得從角中心O到質(zhì)心C的矢量OC,這樣就可以得到角點(diǎn)的方向θ,如圖4所示。 研究中給出的數(shù)學(xué)定義如下:
(4)
改進(jìn)前后的算法運(yùn)行效果如圖5所示。由圖5可看出,加入圖像金字塔和灰度質(zhì)心法的AGAST角點(diǎn)面對(duì)具有尺度不變性和旋轉(zhuǎn)不變性的數(shù)據(jù)集具有了更好的魯棒性,準(zhǔn)確率更高。
圖4 圖像塊的質(zhì)心C和點(diǎn)的方向θ
Fig. 4 The centroid of the image block isCand the direction of the point isθ
(a) 改進(jìn)前的AGAST算法
(b) 改進(jìn)后的AGAST算法
在先前的二進(jìn)制描述符的設(shè)計(jì)中,設(shè)檢測(cè)到的圖像關(guān)鍵點(diǎn)為中心選取檢測(cè)窗口W,W是固定的預(yù)定尺寸的圖像塊大小,一個(gè)二進(jìn)制描述子bw由T對(duì)抽樣坐標(biāo)序列S={st}t=1,2,…,T={[pt,1,pt,2]}t=1,2,…,T組成,其中pt,1=(xt,1,yt,1)和pt,2=(xt,1,yt,2)定義在W坐標(biāo)系,索引t既與W中的一對(duì)坐標(biāo)關(guān)聯(lián),又與高斯核σt=(σt,1,σt,2)t=1,2,…,T相關(guān)聯(lián)。對(duì)于每一抽樣對(duì)st,比較pt,1和pt,2經(jīng)過(guò)光滑后的灰度,從而由式(5)來(lái)設(shè)置二進(jìn)制中相應(yīng)位的值,即:
(5)
其中,W(pt,1,,σt,1)和W(pt,2,σt,2)是圖像塊W中坐標(biāo)pt,1和pt,2經(jīng)標(biāo)準(zhǔn)差σt,1σt,2高斯濾波后的值。最終的二進(jìn)制串bw由式(6)來(lái)定義:
(6)
(7)
將g替換式(6)中函數(shù)f就確定了基于三元組方法的二進(jìn)制串bw。
LATCH算法描述子形成過(guò)程如圖6所示。在運(yùn)行時(shí)間上,LATCH描述子保持了二進(jìn)制描述子的優(yōu)勢(shì),比基于直方圖描述子快好幾個(gè)數(shù)量級(jí),在魯棒性方面,LATCH在大多數(shù)數(shù)據(jù)集上的效果優(yōu)于其他二進(jìn)制描述子,縮小了與基于直方圖描述子的差距[13]。
圖6 LATCH算法描述子形成過(guò)程
特征點(diǎn)匹配方法采用了漢明距離匹配法,基本原理是計(jì)算2個(gè)等長(zhǎng)的字符串中對(duì)應(yīng)位置的不同字符的個(gè)數(shù)。判斷2個(gè)向量相似程度一般有2種方式,即:距離測(cè)度法和相似性函數(shù)法。本文在漢明距離測(cè)度的基礎(chǔ)上再用余弦相似度作為約束,通過(guò)設(shè)定相似性的函數(shù)的閾值來(lái)去除多余的匹配點(diǎn)對(duì)。
1.4.1 匹配算法的改進(jìn)
OARL算法匹配過(guò)程中, 如果匹配圖像局部點(diǎn)領(lǐng)域信息相近和圖像視角不同, 會(huì)引起2個(gè)不同特征點(diǎn)描述符的匹配程度超過(guò)同一點(diǎn)的特征描述符匹配程度。因此在匹配的2幅圖像中如果出現(xiàn)形狀相似區(qū)域, 就會(huì)產(chǎn)生大量誤匹配。本文使用余弦相似度進(jìn)行二次匹配, 對(duì)誤匹配對(duì)進(jìn)行消除。
1.4.2 向量空間余弦相似度匹配
判斷2個(gè)向量相似程度的準(zhǔn)則一般有2種,分別是: 距離測(cè)度法和相似性函數(shù)法。其中,距離測(cè)度法是根據(jù)向量空間上存在的距離來(lái)判斷向量間的差異程度。相似性函數(shù)是用函數(shù)值的大小來(lái)表明兩向量間的差異程度。本文在漢明距離測(cè)度的基礎(chǔ)上再用余弦相似度作為約束,通過(guò)設(shè)定相似性函數(shù)的閾值來(lái)去除多余的匹配點(diǎn)對(duì)。對(duì)該方法過(guò)程可闡釋如下。
先使用漢明距離選取初步特征點(diǎn)對(duì),然后再使用余弦相似度函數(shù)進(jìn)一步篩選,如果2個(gè)向量的余弦值大于閾值K則保留,反之刪除 。K可以根據(jù)實(shí)驗(yàn)得到,對(duì)于 2 個(gè)向量x和y,余弦相似度S(x,y)可用式(8)進(jìn)行計(jì)算:
(8)
使用余弦相似度對(duì)產(chǎn)生縮放和旋轉(zhuǎn)、亮度對(duì)比度改變、模糊、視角變化的4類圖像進(jìn)行測(cè)試,選擇平均閾值K=0. 977,測(cè)試結(jié)果見(jiàn)表1。
表1 測(cè)試結(jié)果
本文提出的OARL算法設(shè)計(jì)流程如圖7所示,以實(shí)現(xiàn)檢測(cè)和描述的優(yōu)勢(shì)互補(bǔ)以及快速性和魯棒性的有效結(jié)合。
圖7 OARL算法流程圖
在多尺度AGAST角點(diǎn)檢測(cè)上,對(duì)輸入圖像進(jìn)行圖像金字塔尺度空間的構(gòu)建,而后對(duì)每一圖層進(jìn)行AGAST角點(diǎn)檢測(cè)和尺度評(píng)判與特征的選取。在二進(jìn)制描述階段,首先采用灰度質(zhì)心方法對(duì)特征周圍固定大小的圖像塊進(jìn)行方向補(bǔ)償,而后對(duì)旋轉(zhuǎn)后的圖像塊進(jìn)行抽樣和三元組的選取比對(duì),從而為特征點(diǎn)形成二進(jìn)制描述子,為后續(xù)的特征匹配做好基礎(chǔ)準(zhǔn)備工作。
研究用Mikolajczyk數(shù)據(jù)集[14]作為測(cè)試用圖,以正確匹配率作為評(píng)價(jià)指標(biāo)來(lái)評(píng)估OARL算法,實(shí)驗(yàn)測(cè)試設(shè)備是ubuntu16.04操作系統(tǒng)的臺(tái)式電腦,在其上進(jìn)行了所有實(shí)驗(yàn),CPU3.5 GHz, 8 GB內(nèi)存,采用Microsoft Visual Studio code2018編程實(shí)現(xiàn),本文使用2個(gè)性能指標(biāo)來(lái)評(píng)價(jià)算法:計(jì)算時(shí)間,重復(fù)率[15]。其中,重復(fù)率中的距離閾值設(shè)定ε=1.5,映射到另一幅圖像中重疊誤差閾值設(shè)定為小于0.2。
這里,將研究中的OARL算法與傳統(tǒng)的SIFT、SURF、ORB算法各自選擇2 000特征點(diǎn)進(jìn)行比較,結(jié)果見(jiàn)表2,可以看出本文的OARL算法與ORB算法的運(yùn)算時(shí)間是同一數(shù)量級(jí)的,稍快一些,仍然保持實(shí)時(shí)性,比SIFT,SURF的運(yùn)算速度低好幾個(gè)數(shù)量級(jí)。
表2 各算法運(yùn)算在不同數(shù)據(jù)集上的時(shí)間
首先,研究在Mikolajczyk的數(shù)據(jù)集中選擇了4組圖像,從圖像模糊、不同光照、不同比例和不同視角等方面評(píng)估算法的性能。仿真在4組測(cè)試圖片中的每一組上執(zhí)行OARL原始方法50次。圖8、圖9和表3顯示了結(jié)果。表3中,第三列和第四列顯示從左側(cè)和右側(cè)的圖像中提取的特征點(diǎn)的數(shù)量。第五列顯示檢測(cè)時(shí)間。最后一列顯示了成功匹配的數(shù)量??梢钥闯?,在模糊、亮度變化、視點(diǎn)變化、變焦和旋轉(zhuǎn)的情況下,本文的ORAL算法平均匹配時(shí)間與ORB算法為相同數(shù)量級(jí),但是正確率卻平均提升了5%左右。本文的OARL算法在不同環(huán)境變化下,準(zhǔn)確率均高于ORB算法,這主要是因?yàn)?,OARL算法的三元組F范數(shù)有著良好的抗干擾性和應(yīng)對(duì)局部表觀變化的能力,并且具有旋轉(zhuǎn)機(jī)制,從而使得改進(jìn)算法具備較好的尺度和旋轉(zhuǎn)不變性,縮小了與傳統(tǒng)的SIFT和SURF算法之間在魯棒性的差距。
圖8 OARL算法在Mikolajczyk數(shù)據(jù)集上的效果
圖9 ORB算法在Mikolajczyk數(shù)據(jù)集上的效果
從圖8、圖9可以看出,與ORB算法相比,本文的OARL算法比ORB算法匹配要更加整齊,這也顯示出匹配精度的優(yōu)劣,表3的結(jié)果也顯示,在相同檢測(cè)角點(diǎn)情況下,匹配的正確率高于主流的ORB算法和傳統(tǒng)的直方圖的特征點(diǎn)描述法,速度卻可以達(dá)到實(shí)時(shí)檢測(cè)。
表3 各種算法在不同情況下重復(fù)率
本文提出了一種新的特征提取過(guò)程,稱為OARL算法,可為圖像構(gòu)建一個(gè)尺度金字塔,并檢測(cè)每個(gè)金字塔層中的AGAST角點(diǎn),再測(cè)量每個(gè)角點(diǎn)的方向。圖像集和序列的實(shí)驗(yàn)結(jié)果表明,與OpenCV中使用的ORB算法相比,所提出的OARL算法將精度提高了5%以上。通過(guò)實(shí)驗(yàn)可以得知,本文提出的OARL算法同時(shí)在面對(duì)旋轉(zhuǎn)、尺度變化以及亮度變化的情況下都具有良好的魯棒性,且精確度優(yōu)于ORB算法,但速度卻依舊可以達(dá)到實(shí)時(shí)運(yùn)算。