邢長征 李思慧
(遼寧工程技術(shù)大學(xué)電子與信息工程學(xué)院 遼寧 葫蘆島 125105)
局部特征匹配算法是圖像拼接[1-3]、SLAM[4-5]等重要的組成部分。局部特征匹配算法首先需要構(gòu)建尺度空間,以滿足匹配算法具有尺度不變性。尺度空間的構(gòu)建方式主要有兩種:(1) 高斯核函數(shù)與灰度圖像卷積得到;(2) 利用非線性濾波函數(shù)構(gòu)建。
利用高斯核函數(shù)構(gòu)建尺度空間的匹配算法有:SIFT算法[6]、SURF算法[7]、ORB算法[8]等。這類算法具有較好的魯棒性,匹配速度也比較快,但是高斯核函數(shù)卷積操作會(huì)致使圖像的邊緣信息丟失,嚴(yán)重影響特征點(diǎn)和描述符的穩(wěn)定性。利用非線性濾波函數(shù)構(gòu)建的尺度空間算法主要有:KAZE算法[9],AKZAE算法[10]等。非線性濾波函數(shù)構(gòu)建的尺度空間可以更好地保護(hù)圖像邊緣處的信息,增加了匹配算法的魯棒性。KAZE算法的特征點(diǎn)檢測(cè)和描述符均借鑒SURF算法,但KAZE算法的魯棒性較SURF算法更強(qiáng),足以證明非線性尺度空間的優(yōu)越性。鑒于非線性尺度空間的優(yōu)越性,許多研究者在KAZE算法和AKZAE算法的基礎(chǔ)上提出創(chuàng)新。文獻(xiàn)[11]提出KAZE算法與FREAK描述符相結(jié)合的算法,雖增加KAZE算法的匹配算法,但是降低了算法的魯棒性。針對(duì)KAZE算法匹配速度較慢等問題,文獻(xiàn)[12]提出32維圓形M-SURF描述符,通過余弦相似性判斷不同描述符的相似性,雖增加了匹配速度,但造成匹配魯棒性嚴(yán)重下降。文獻(xiàn)[13]提出把灰度圖像替換為顏色不變空間,以增加AKAZE算法的魯棒性,雖算法的魯棒性得到增加,但匹配算法速度下降。文獻(xiàn)[14]提出對(duì)AKAZE算法描述符進(jìn)行更改,使用三元組LATCH描述符替代MLDB描述符,以增加AKAZE算法的匹配算法,但LATCH描述符[15]需要借助機(jī)器學(xué)習(xí)算法尋找最佳三元組像素塊,故本身不具有良好的移植性。
綜上所述,現(xiàn)有的改進(jìn)AKAZE算法增加魯棒性同時(shí)速度下降嚴(yán)重,增加匹配速度的同時(shí)魯棒性下降嚴(yán)重。針對(duì)這一問題,本文提出一種BOLD掩碼[19]的AKAZE算法,對(duì)采樣區(qū)域旋轉(zhuǎn)20度得到掩碼采樣區(qū)域并建立MLDB描述符,通過掩碼區(qū)域MLBD描述符與采樣區(qū)域MLDB做異或得到BOLD掩碼,最后利用漢明距離衡量不同描述符的相似性。
非線性擴(kuò)散濾波算法主要是將灰度圖像L在不同尺度上變化表示為流動(dòng)函數(shù)的擴(kuò)散過程,可用非線性偏微分方程表示為:
(1)
式中:L表示圖像灰度信息;div表示流動(dòng)函數(shù)的擴(kuò)散;▽表示圖像的梯度;c(x,y,t)表示傳導(dǎo)函數(shù)。
c(x,y,t)=g(|▽Lσ(x,y,t)|)
(2)
式中:t為尺度參數(shù);▽Lσ表示灰度圖像L經(jīng)過高斯濾波后的梯度圖像。g(·)函數(shù)表示為:
(3)
式中:k為控制擴(kuò)散度的對(duì)比因子。
在AKAZE算法基礎(chǔ)上提出FED算法[16],解非線性擴(kuò)散濾波函數(shù)中的偏微分方程式。FED算法可表示為:
Li+1,j+1=(I+τjA(Li))Li+1j=0,1,…,n-1
(4)
式中:I表示單位矩陣;A(Li)為圖像Li的傳導(dǎo)矩陣;n表示顯性擴(kuò)散步數(shù);τj表示對(duì)應(yīng)步長。
(5)
式中:τmax為最大迭代步長。單個(gè)FED算法周期的停止時(shí)間θn為:
(6)
在非線性尺度空間的組和層,用o和s來表示,則對(duì)應(yīng)的尺度參數(shù)可以表示為:
σi(o,s)=σ02o+s/So∈{0,1,…,O-1}
s∈{0,2,…,S-1}i∈{0,2,…,O×S-1}
(7)
式中:σ0為初始尺度參數(shù);O×S表示金字塔共有的層數(shù)。非線性尺度空間的尺度參數(shù)σ轉(zhuǎn)換到時(shí)間單位中,映射關(guān)系可表示為:
(8)
式中:ti表示非線性金字塔的進(jìn)化時(shí)間。
金字塔上尋找極大值從而確定特征點(diǎn):
(9)
式中:σi為尺度因子初始值;Lxx為x方向的2階導(dǎo)數(shù),Lxy和Lyy類似。對(duì)于每一個(gè)經(jīng)過Hessian矩陣歸一化的像素點(diǎn),將其與金字塔相鄰尺度中σi×σi區(qū)域以及本身所在尺度σi×σi區(qū)域的像素點(diǎn)的大小比較,像素值最大值時(shí)為特征點(diǎn)。
定位到特征點(diǎn)位置后,以特征點(diǎn)為中心,畫出半徑為σi的圓分為6個(gè)扇形,計(jì)算每個(gè)扇形內(nèi)所有像素點(diǎn)在橫縱方向一階導(dǎo)數(shù)的高斯加權(quán)值,高斯加權(quán)值最大方向?yàn)樘卣鼽c(diǎn)主方向θ。
在非線性尺度空間中提取了特征點(diǎn)并建立了特征點(diǎn)的主方向后,建立MLDB描述符進(jìn)行匹配。本節(jié)提出BOLD-MLDB描述符,旨在增強(qiáng)AKAZE算法的魯棒性。具體構(gòu)建方式如下:
第一步以特征點(diǎn)為中心選取合適的采樣區(qū)域P構(gòu)建MLDB描述符[17],將采樣區(qū)域P劃分為n×n個(gè)網(wǎng)格。計(jì)算n×n單個(gè)網(wǎng)格內(nèi)像所有像素值的平均值,表示為:
(10)
式中:I(k)為灰度圖像的像素值;m是每個(gè)劃分網(wǎng)格內(nèi)的像素點(diǎn)的個(gè)數(shù);i表示為采樣區(qū)域一共被劃分網(wǎng)格的數(shù)量。
第二步計(jì)算每個(gè)網(wǎng)格內(nèi)像素點(diǎn)在x和y方向上的梯度,根據(jù)每個(gè)網(wǎng)格平均像素值和網(wǎng)格像素的梯度值進(jìn)行編碼,可表示為:
Func(·)={Funcintensity(i),Funcdx(i),Funcdy(i)}
(11)
式中:Funcintensity(i)=Iavg(i),F(xiàn)uncdx(i)=Gradientx(i)=dx,F(xiàn)uncdy(i)=Gradienty(i)=dy。
第三步由式(10)可得,構(gòu)建出LDB描述符每一對(duì)網(wǎng)格比較得到的二進(jìn)制位3位,可用公式表示為:
(12)
則MLDB描述符可表示為:
(13)
本文中MLDB描述符大小為256 bit。
第四步采樣區(qū)域P以主方向θ為基準(zhǔn),旋轉(zhuǎn)20度得到掩碼采樣區(qū)域P′,并建立掩碼采樣區(qū)域P′的MLDB描述符,如圖1所示。
圖1 M-LDB描述符構(gòu)建
(14)
本文采樣區(qū)域P的MLDB描述符為256 bit,則它的BOLD碼同為256 bit,從而得到BOLD-MLDB描述符大小為512 bit。
判斷兩個(gè)特征點(diǎn)描述符是否為同一對(duì),SIFT算法計(jì)算不同描述符的歐式距離,AKAZE算法計(jì)算MLDB描述符的漢明距離。BOLD-MLDB描述符是由MLDB描述符和BOLD碼組成,BOLD碼表示為MLDB描述符的穩(wěn)定性,因此不能單純地計(jì)算描述符的漢明距離。若有兩幅待匹配圖像IR和IL,則fL表示IL特征點(diǎn)的MLDB描述符,mL表示BOLD碼;fR表示IR特征點(diǎn)的MLDB描述符,mR表示BOLD碼。計(jì)算BOLD-MLDB描述符距離可表示為:
(15)
式中:D表示為二進(jìn)制描述符的維數(shù)。
本文提出BOLD-AKAZE算法旨在增加AKAZE算法的魯棒性,故選擇AKAZE算法、SIFT算法和ORB算法與本文算法在Oxford數(shù)據(jù)集中具有模糊變換、放射性變換、JPG壓縮變換和尺度變換的圖像組進(jìn)行對(duì)比實(shí)驗(yàn),測(cè)試不同匹配算法匹配正確率和匹配算法的速度。AKAZE算法描述符為486 bit,ORB算法的描述符維度為256 bit,SIFT算法描述符的維度為126維;本文算法的M-LDB描述符為256 bit,BOLD掩碼的描述符為256 bit,故BOLD-MLDB描述符為512 bit。測(cè)試圖像如圖3所示,每組測(cè)試數(shù)據(jù)共有6幅圖像,第1幅圖像為基準(zhǔn)圖像,其他圖像為目標(biāo)圖像。
本文實(shí)驗(yàn)平臺(tái)為個(gè)人筆記本,CPU主頻為2.4 GHz、內(nèi)存為8 GB,開發(fā)環(huán)境為VS2013+Opencv3.10。
(a) Bike圖像(1/6) (b) Bike圖像(6/6)
(c) UBC圖像(1/6) (d) UBC圖像(6/6)
(e) Wall圖像(1/6) (f) Wall圖像(6/6)
(g) Boat圖像(1/6) (h) Boat圖像(6/6)
ORB算法利用FAST算法檢測(cè)特征點(diǎn),速度較快,而且BRIEF描述符僅通過比較兩兩像素的大小建立256 bit的二進(jìn)制描述符,故匹配速度最快。AKAZE算法需要利用FED算法迭代解非線性函數(shù),所需的時(shí)間較長;MLDB描述符需要計(jì)算梯度信息,且描述符的維度為486 bit,故匹配速度不及ORB算法。SIFT算法描述符為128維浮點(diǎn)型,需計(jì)算歐式距判斷不同描述符的相似性,故匹配速度最慢。本文所提的BOLD-MLDB描述符的維度是512 bit,比傳統(tǒng)的AKAZE算法描述符維度高,故匹配速度不及AKAZE。如表1所示,ORB算法、SIFT算法、AKAZE算法和本文算法的匹配速度排序?yàn)椋篛RB算法、AKAZE算法、本文算法、SIFT算法。
表1 匹配時(shí)間 s
ORB算法的尺度空間使用高斯核函數(shù)卷積得到,使得尺度空間中不同層的圖像邊緣信息丟失,影響了特征點(diǎn)和描述符的魯棒性,而且ROB算法使用的FREAK描述符[18]構(gòu)造簡(jiǎn)單,代表的局部信息較少,故ORB算法的匹配正確率最低。SIFT算法雖也使用高斯核函數(shù)構(gòu)造尺度空間,但是SIFT描述符利用采樣區(qū)域梯度信息建立128維描述符,描述信息量較大,魯棒性較強(qiáng),故匹配正確率超過ORB算法。AKAZE算法利用非線性濾波函數(shù)構(gòu)造非線性尺度空間,可更好地保護(hù)圖像邊緣信息,保證了描述符和特征點(diǎn)的穩(wěn)定性。而且MLDB描述符不僅由像素塊強(qiáng)度編碼得到,還引入像素塊梯度信息,增加了描述符的可分辨性,故AKAZE算法的匹配正確率高于SIFT算法。本文所提算法在AKAZE算法基礎(chǔ)上提出了BOLD-MLDB掩碼,BOLD-MLDB掩碼與MLDB描述符相結(jié)合,有效增加了描述符的魯棒性,故BOLD-AKAZE算法的正確匹配率高于KAZE算法。
各算法對(duì)圖2圖像進(jìn)行測(cè)試得到的匹配正確率柱狀圖如圖3所示。對(duì)于Bike組具有模糊變換的圖像,本文算法具有較好的魯棒性,匹配正確率遠(yuǎn)優(yōu)于ORB算法和SIFT算法,相較于AKAZE算法匹配正確率也有一定的提高。對(duì)于UBC組具有JPG壓縮變換的圖像,各算法的穩(wěn)定性均很好,但本文算法的匹配正確率最佳。對(duì)于Wall組具有放射變換的圖像,SIFT算法、ORB算法、AKAZE算法隨著圖像變換程度的加大,匹配正確率迅速下降,但是本文算法的匹配正確率下降速度緩慢。對(duì)于Boat組具有尺度變換的圖像,各算法的匹配正確率均在下降,但當(dāng)待匹配圖像變換最大時(shí),本文算法的匹配正確率仍高于30%。
(a) Bike圖像匹配正確率
(b) UBC圖像匹配正確率
(c) Wall圖像匹配正確率
(d) Boat圖像匹配正確率
針對(duì)現(xiàn)有AKAZE改進(jìn)算法魯棒性和匹配速度不佳的問題,本文提出一種BOLD掩碼AKAZE算法。首先以特征點(diǎn)采樣區(qū)域建立MLDB描述符;然后把采樣區(qū)域旋轉(zhuǎn)20度作為掩碼采樣區(qū)域建立MLDB描述符,并把掩碼采樣區(qū)域MLDB描述符與采樣區(qū)域MLDB描述符做異或,得到BOLD掩碼描述符;最后使用漢明距離衡量不同描述符的相似性。實(shí)驗(yàn)表明:本文算法的魯棒性相較AKAZE算法有巨大的提升,匹配速度雖有減慢,但也僅是SIFT算法匹配時(shí)間的50%左右。綜上所述,本文算法可應(yīng)用于對(duì)魯棒性要求較高且匹配速度較快的領(lǐng)域。