沈?qū)W利 陳鑫彤
1(遼寧工程技術(shù)大學(xué)電子與信息工程學(xué)院 遼寧 葫蘆島 125105)2(遼寧工程技術(shù)大學(xué)研究生院 遼寧 葫蘆島 125105)
基于局部特征的圖像匹配是圖像拼接、水印嵌入、SLAM系統(tǒng)、三維重建等的主要步驟,是計(jì)算機(jī)視覺的一個(gè)熱門研究方向。常見的匹配方法按照描述符的類型不同可分為兩大類:二進(jìn)制描述符、非二進(jìn)制描述符。
非二進(jìn)制描述符主要有:尺度不變SIFT(Scale Invariant Feature Transform)[1]的特征點(diǎn)檢測和匹配算法,其匹配效果較好,但匹配速度較慢,算法復(fù)雜度高。加速魯棒性算法SURF(Speeded UpRobust Feature)[2]的特征點(diǎn)提取與匹配,其復(fù)雜度比SIFT算法低、魯棒性好,但相較于二進(jìn)制描述符匹配速度太慢。文獻(xiàn)[3]在SIFT算法上進(jìn)行改進(jìn)的ASIFT算法,僅考慮了仿射空間中圖像特征點(diǎn)提取和匹配,對具有大視差的匹配圖像具有很強(qiáng)的魯棒性,但并不適合對實(shí)時(shí)性要求較高的情景。文獻(xiàn)[4]提出的“風(fēng)”(AKZE)算法,率先提出搭建非線性金字塔以更好地保護(hù)圖像邊緣信息,使得構(gòu)建的描述符的魯棒性增加,但搭建的非二進(jìn)制描述符維度過高匹配速度較慢,匹配的魯棒性太差,不適用對實(shí)時(shí)性和魯棒性要求較高的場景。
針對KAZE算法和AKAZE算法搭建描述符匹配速度較慢、魯棒性較差等問題,本文提出三元組[10]描述符與KAZE/AKAZE算法相結(jié)合的算法,可命名為KAZE/AKAZE-LATCH算法。經(jīng)實(shí)驗(yàn)表明:KAZE-LATCH算法的魯棒性和匹配速度都遠(yuǎn)優(yōu)于KAZE算法,AKAZE-LATCH算法的整體性能相較AKZE算法有大幅度提高,AKAZE-LATCH算法魯棒性和速度都優(yōu)于KAZE-LATCH算法。
非線性尺度空間的構(gòu)建主要基于非線性擴(kuò)散濾波原理。依據(jù)非線性擴(kuò)散濾波原理,KAZE/AKAZE算法與物理學(xué)中二維熱擴(kuò)散過程描述相似,將圖像亮度視為能量,亮度隨尺度變化模擬熱傳導(dǎo)流動(dòng),通過熱流擴(kuò)散過程函數(shù)描述圖像亮度擴(kuò)散。公式如下:
(1)
式中:div和▽L分別表示散度和梯度,函數(shù)c(x,y,t)表示擴(kuò)散的傳導(dǎo)函數(shù),該函數(shù)的引入使得擴(kuò)散能夠適應(yīng)圖像局部特征,其中參數(shù)t為尺度參數(shù),t越大,圖像表示形式越簡單。傳導(dǎo)函數(shù)主要由梯度幅值控制,可變傳導(dǎo)函數(shù)如下:
c(x,y,t)=g(|▽Lσ(x,y,t)|)c(x,y,t)=g(▽Lσ(x,y,t))
(2)
式中:▽Lσ為圖像經(jīng)高斯平滑之后的梯度,g是擴(kuò)散函數(shù),本文中為保留較大寬度區(qū)域,選取g為:
(3)
式中:參數(shù)k表示控制擴(kuò)散對比度因子,邊緣信息保留量與參數(shù)k成反比,比值越大,同一點(diǎn)位置相對擴(kuò)散越小。式(1)為非線性擴(kuò)散偏微分方程,在KAZE算法中通過AOS(Additive Operator Splitting)算法[12]求解,采用隱式差分格式,對式(1)進(jìn)行離散變換,可得:
一個(gè)黑社會(huì)組織,之所以能夠作惡近20年,得益于背后的“保護(hù)傘”——無為縣法院刑事審判庭原副庭長吳業(yè)平。據(jù)周幫海供述,吳業(yè)平有“能量”。七年前,周幫海的“馬仔”吳克任犯下兩起尋釁滋事與兩起故意傷害案件,他向吳業(yè)平送上2萬元并請求輕判。在“吳庭長”的操縱下,身負(fù)四起情節(jié)嚴(yán)重案件的吳克任,僅被判處緩刑2年。連吳業(yè)平自己都說:“像這樣的案子判緩刑,在法院還從來沒有過。”
(4)
式中:Al是i尺度上圖像亮度Li在維度l上的傳導(dǎo)矩陣,τ為步長,m為L的行列乘積,i為圖像序列。Al由式(4)可求解出Li+1為:
Li+1=(I-τ∑Al(Li))-1Li
(5)
式中:I為單位矩陣,此方法對任意時(shí)間步長τ都絕對穩(wěn)定。
在AKAZE算法中,式(1)利用FED算法解非線性擴(kuò)散偏微分方程,F(xiàn)ED算法比AOS算法速度更快、精度更高。FED算法可表示為:
Li+1,j+1=(I+τjA(Li))Li+1j=0,1,…,n-1
(6)
式中:I表示單位矩陣;A(Li)為圖像Li的傳導(dǎo)矩陣;n表示顯性擴(kuò)散步數(shù);τj表示對應(yīng)步長,可表示為:
(7)
KAZE/AKAZE算法構(gòu)建非線性尺度空間過程,是通過指數(shù)步長的系列組合生成(O個(gè)組,S個(gè)層)來離散化尺度空間,利用組索引值O和層索引值S分別識(shí)別不同的組和層,組、層與尺度參數(shù)δ的關(guān)系如下:
(8)
式中:δ0代表基本尺度,O表示組序號(hào),S表示層序號(hào)。
因?yàn)榉蔷€性擴(kuò)散濾波模型構(gòu)建的尺度空間以時(shí)間為單位,所以將以圖像像素為單位的尺度參數(shù)轉(zhuǎn)化成以進(jìn)化時(shí)間為單位的尺度參數(shù)。在高斯空間中,使用標(biāo)準(zhǔn)差為δ的高斯卷積,相當(dāng)于圖像進(jìn)行時(shí)間t=δi/2的濾波。由此可知尺度參數(shù)δi與進(jìn)化時(shí)間t之間的映射關(guān)系為:
(9)
KAZE/AKAZE算法構(gòu)建尺度空間的流程是:首先通過高斯卷積平滑處理圖像,減小噪聲和形變等干擾;然后計(jì)算圖像梯度直方圖,以獲取對比度因子參數(shù)k,確定保留邊緣信息量;最后用進(jìn)化時(shí)間序列構(gòu)造非線性尺度空間,并且通過AOS算法或者FED算法及簡單迭代求解,獲取到非線性尺度空間圖像序列:
(10)
AKAZE/KAZE算法使用Hessian矩陣在非線性金字塔上尋找極大值從而確定特征點(diǎn),如下式:
(11)
式中:σi為尺度因子初始值,Lxx、Lyy和Lxy分別表示x方向,y方向和xy方向的2階導(dǎo)數(shù)。對于每一個(gè)經(jīng)過hessian矩陣歸一化的像素點(diǎn),將其與金字塔相鄰尺度中σi×σi區(qū)域以及本身所在尺度σi×σi區(qū)域的像素點(diǎn)進(jìn)行比較,求取區(qū)域特征點(diǎn)。
定位特征點(diǎn)的位置,以特征點(diǎn)為中心,畫出半徑為σi的圓分為6個(gè)扇形,如圖1所示。計(jì)算每個(gè)扇形內(nèi)所有像素點(diǎn)在水平和豎直方向的一階導(dǎo)數(shù)的高斯加權(quán)值,高斯加權(quán)值最大方向即為特征點(diǎn)的主方向。
圖1 特征點(diǎn)方向
前面對KAZE/AKZE算法非線性金字塔發(fā)搭建、特征點(diǎn)定位、特征點(diǎn)的方向,進(jìn)行了詳細(xì)的敘述,在本節(jié)中需要對描述符的建立進(jìn)行詳細(xì)的闡述。傳統(tǒng)的二進(jìn)制描述符如:BRIFE、BRISK等都是根據(jù)兩像素之間的關(guān)系建立描述符,這種描述符的魯棒性較差,易受光照、尺度、噪聲等的干擾,導(dǎo)致匹配效果較差。故在本文中提出AKAZE/KAZE-LATCH算法,利用LATCH算法建立三像素之間的關(guān)系建立描述符。
如圖2所示,假設(shè)以特征點(diǎn)為中心的采樣窗口內(nèi)有p1、p2、p3三個(gè)像素塊,每個(gè)像素塊中包含m×m個(gè)像素,比較兩個(gè)像素塊與對應(yīng)位置像素塊的平方和,可表示為:
(12)
則LATCH描述符可表示為:
(13)
圖2 三元組描述符
選擇24σi×24σi采樣區(qū)域建立描述符,原LATCH描述符選擇確定的m×m像素塊建立關(guān)系,為了使LATCH描述符具有更強(qiáng)的尺度不變性,本文提出根據(jù)尺度關(guān)系建立像素塊,像素塊尺寸為3σi×3σi。若像素塊尺寸為非整數(shù),則使用雙線性差值算法計(jì)算像素塊的像素值,如圖3所示,可表示為:
(14)
圖3 雙線性差值算法
為了驗(yàn)證所提算法的優(yōu)越性,選擇SIFT算法、ORB算法、AKAZE算法、KAZE算法等四種具有代表性的基于局部特征的匹配算法,在INRIA數(shù)據(jù)[13]中具有模糊變換、光照變換、視角變換和JPEG變換的圖像進(jìn)行對比實(shí)驗(yàn)。
其中SIFT算法的描述符為非二進(jìn)制,并且為最經(jīng)典的匹配算法;ORB算法描述符是二進(jìn)制描述符,在眾多二進(jìn)制匹配算法中效果最佳;本文算法是在KAZE算法和AKZAE算法的基礎(chǔ)上進(jìn)行改進(jìn)。故選擇了上述四種算法進(jìn)行對比實(shí)驗(yàn)。
本文實(shí)驗(yàn)實(shí)驗(yàn)平臺(tái)為個(gè)人筆記本,匹配AMD-A84-500、4 GB內(nèi)存,基于Opencv 3.10在Visual Studio 2013上進(jìn)行實(shí)驗(yàn)。
在本文實(shí)驗(yàn)中SIFT算法為128維描述符;ORB算法的二進(jìn)制描述符為256 bit;KAZE算法的描述符為64維;AKZAE的描述符為256 bit;本文所提算法描述符為256 bit。
圖4為基于局部特征圖像匹配的評價(jià)圖像,每一組6張圖像,第一張為基準(zhǔn)圖像,剩余的五張為待匹配圖像,隨著同組圖像編號(hào)的增加圖像變化程度增加。如圖4所示,(a)和(b)為圖像模糊變換,(c)和(d)為圖像JPG壓縮,(e)和(f)為具有視角差的wall圖像,(g)和(h)圖像為光照發(fā)生變換。
(a) Bike圖像(1/6) (b) Bike圖像(6/6)
(c) BUC圖像(1/6) (d) UBC圖像(6/6)
(e) wall圖像(1/6) (f) wall圖像(6/6)
(g) Leuven圖像(1/6) (h) Leuven圖像(6/6)圖4 圖實(shí)驗(yàn)圖像
KAZE算法率先提出了使用非線性金字塔有效地保護(hù)了圖像邊緣信息,利用加速魯棒性算法SURF(Speeded Up Robust Feature)的思想建立描述符,使得KAZE算法的魯棒性進(jìn)一步增加,故匹配正確率優(yōu)于SIFT算法。AKAZE算法使用精度更高、速度更快的FED算法解非線性函數(shù),LDB二進(jìn)制描述符不僅計(jì)算了像素塊之間的強(qiáng)度關(guān)系還表達(dá)了梯度關(guān)系,使得描述符的魯棒性大大增加,故相對于KAZE算法正確率得到極大提升。SIFT算法為最為經(jīng)典的匹配算法,采用128維梯度描述符,搭建的高斯差分金字塔使得描述符的魯棒性不及KAZE算法,但仍然優(yōu)于二進(jìn)制描述符ORB算法。ORB算法描述符為二進(jìn)制描述符,通過比較特征區(qū)域中像素值大小建立描述符,故ORB算法的魯棒性最差。本文所提的KAZE-LATCH算法,使用非線性金字塔一方面增加描述符的魯棒性,另一方面計(jì)算三個(gè)像素塊之間的信息建立描述符,使得二進(jìn)制三元組描述符的魯棒性進(jìn)一步增加,故匹配正確率相較于KAZE/AKAZE算法有巨大提升。AKAZE-LATCH算法的利用FED算法搭建的非線性金字塔精度更高,LATCH描述符的魯棒性相較于LDB算法的魯棒性更強(qiáng),故AKAZE-LATCH算法匹配正確率要優(yōu)于AKAZE算法和KAZE-LATCH算法。
圖5為SIFT算法、ORB算法、KAZE算法、AKZE算法、KAZE-LATCH算法和AKAZE-LATCH算法對具有模糊變換、光照變換、視角變換和JPEG變換的圖像進(jìn)行匹配時(shí),匹配正確率的統(tǒng)計(jì)。由圖5(a)折線圖分析可得,在模糊變換情境中,匹配正確率由大到小排序?yàn)椋篈KAZE-LATCH算法、AKAZE算法、KAZE-LATCH算法、KAZE算法、SIFT算法、ORB算法對于具有模糊圖像致使描述符的魯棒性下降,二進(jìn)制描述符的穩(wěn)定性雖不及非二進(jìn)制描述符,但AKAZE-LATCH算法本身具有很大的優(yōu)勢,故匹配正確率最高。由圖5(b)可得,在具有JPEG變換圖像中,匹配正確率順序排列為:AKAZE-LATCH算法、AKAZE算法、KAZE-LATCH算法、KAZE算法、ORB算法、SIFT算法。JPEG壓縮致使圖像的信息丟失,利用局部梯度建立的描述符的魯棒性會(huì)嚴(yán)重下降,故SIFT算法的匹配正確率最低。由圖5(c)可得,在具有視角差圖像中,匹配正確率順序排列為:AKAZE-LATCH算法、KAZE-LATCH算法、AKAZE算法、KAZE算法、SIFT算法、ORB算法。由圖5(d)可得,在具有亮度變換圖像中,匹配正確率順序排列為:KAZE算法、AKAZE-LATCH算法、KAZE-LATCH算法、AKAZE算法、SIFT算法、ORB算法。
(a)
(b)
(c)
(d)圖5 匹配正確率
由表1可以得到匹配速度順序排列為:KAZE-LATCH算法、AKAZE算法、ORB算法、KAZE-LATCH算法、KAZE算法、SIFT算法。由于二進(jìn)制描述符使用漢明距離計(jì)算相似度,比非二進(jìn)制描述符匹配速度快,故SIFT算法和KAZE算法匹配速度較慢。AKAZE算法的非線性方程由速度更快的FED算法計(jì)算,故匹配速度遠(yuǎn)超過KAZE算法。而LATCH描述符根據(jù)三個(gè)像素的關(guān)系確定描述符,相對于LDB描述符需要計(jì)算梯度,速度上進(jìn)一步提升,故AKAZE-LATCH算法速度快于AKAZE算法。KAZE-LATCH算法與AKAZE-LATCH算法相比,雖描述符種類相同,但FED算法計(jì)算速度要優(yōu)于AOS算法,故KAZE-LATCH算法匹配速度不及AKAZE-LATCH算法。ORB算法只需要搭建高斯金字塔,特征點(diǎn)檢測速度也較快,描述符又為二進(jìn)制,故匹配速度最快。
表1 匹配時(shí)間 s
針對KAZE/AKAZE算法匹配魯棒性較差、匹配速度較慢等問題,本文提出一種三元組描述符與KAZE/AKAZE結(jié)合的算法。首先利用AOS算法或者FED算法解非線性方程搭建金字塔;然后借用海森矩陣確定特征點(diǎn)的位置;最后根據(jù)特征點(diǎn)所在尺度選擇相應(yīng)的采樣域建立三元組描述符,若是像素塊非整數(shù)借助雙線性插值計(jì)算。實(shí)驗(yàn)結(jié)果表明:AKAZE-LATCH算法比原AKAZE算法匹配正確率提升10%,運(yùn)行速度提升7%;KAZE-LATCH算法比原KAZE算法匹配正確率提高15%,匹配速度僅為KAZE算法的75%,可廣泛應(yīng)用于對匹配速度和精度要求較高的場景。