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