沈學利 陳鑫彤
1(遼寧工程技術大學電子與信息工程學院 遼寧 葫蘆島 125105)2(遼寧工程技術大學研究生院 遼寧 葫蘆島 125105)
基于局部特征的圖像匹配是圖像拼接、水印嵌入、SLAM系統、三維重建等的主要步驟,是計算機視覺的一個熱門研究方向。常見的匹配方法按照描述符的類型不同可分為兩大類:二進制描述符、非二進制描述符。
非二進制描述符主要有:尺度不變SIFT(Scale Invariant Feature Transform)[1]的特征點檢測和匹配算法,其匹配效果較好,但匹配速度較慢,算法復雜度高。加速魯棒性算法SURF(Speeded UpRobust Feature)[2]的特征點提取與匹配,其復雜度比SIFT算法低、魯棒性好,但相較于二進制描述符匹配速度太慢。文獻[3]在SIFT算法上進行改進的ASIFT算法,僅考慮了仿射空間中圖像特征點提取和匹配,對具有大視差的匹配圖像具有很強的魯棒性,但并不適合對實時性要求較高的情景。文獻[4]提出的“風”(AKZE)算法,率先提出搭建非線性金字塔以更好地保護圖像邊緣信息,使得構建的描述符的魯棒性增加,但搭建的非二進制描述符維度過高匹配速度較慢,匹配的魯棒性太差,不適用對實時性和魯棒性要求較高的場景。
針對KAZE算法和AKAZE算法搭建描述符匹配速度較慢、魯棒性較差等問題,本文提出三元組[10]描述符與KAZE/AKAZE算法相結合的算法,可命名為KAZE/AKAZE-LATCH算法。經實驗表明:KAZE-LATCH算法的魯棒性和匹配速度都遠優于KAZE算法,AKAZE-LATCH算法的整體性能相較AKZE算法有大幅度提高,AKAZE-LATCH算法魯棒性和速度都優于KAZE-LATCH算法。
非線性尺度空間的構建主要基于非線性擴散濾波原理。依據非線性擴散濾波原理,KAZE/AKAZE算法與物理學中二維熱擴散過程描述相似,將圖像亮度視為能量,亮度隨尺度變化模擬熱傳導流動,通過熱流擴散過程函數描述圖像亮度擴散。公式如下:

(1)
式中:div和▽L分別表示散度和梯度,函數c(x,y,t)表示擴散的傳導函數,該函數的引入使得擴散能夠適應圖像局部特征,其中參數t為尺度參數,t越大,圖像表示形式越簡單。傳導函數主要由梯度幅值控制,可變傳導函數如下:
c(x,y,t)=g(|▽Lσ(x,y,t)|)c(x,y,t)=g(▽Lσ(x,y,t))
(2)
式中:▽Lσ為圖像經高斯平滑之后的梯度,g是擴散函數,本文中為保留較大寬度區域,選取g為:
(3)
式中:參數k表示控制擴散對比度因子,邊緣信息保留量與參數k成反比,比值越大,同一點位置相對擴散越小。式(1)為非線性擴散偏微分方程,在KAZE算法中通過AOS(Additive Operator Splitting)算法[12]求解,采用隱式差分格式,對式(1)進行離散變換,可得:
一個黑社會組織,之所以能夠作惡近20年,得益于背后的“保護傘”——無為縣法院刑事審判庭原副庭長吳業平。據周幫海供述,吳業平有“能量”。七年前,周幫海的“馬仔”吳克任犯下兩起尋釁滋事與兩起故意傷害案件,他向吳業平送上2萬元并請求輕判。在“吳庭長”的操縱下,身負四起情節嚴重案件的吳克任,僅被判處緩刑2年。連吳業平自己都說:“像這樣的案子判緩刑,在法院還從來沒有過。”
(4)
式中:Al是i尺度上圖像亮度Li在維度l上的傳導矩陣,τ為步長,m為L的行列乘積,i為圖像序列。Al由式(4)可求解出Li+1為:
Li+1=(I-τ∑Al(Li))-1Li
(5)
式中:I為單位矩陣,此方法對任意時間步長τ都絕對穩定。
在AKAZE算法中,式(1)利用FED算法解非線性擴散偏微分方程,FED算法比AOS算法速度更快、精度更高。FED算法可表示為:
Li+1,j+1=(I+τjA(Li))Li+1j=0,1,…,n-1
(6)
式中:I表示單位矩陣;A(Li)為圖像Li的傳導矩陣;n表示顯性擴散步數;τj表示對應步長,可表示為:
(7)
KAZE/AKAZE算法構建非線性尺度空間過程,是通過指數步長的系列組合生成(O個組,S個層)來離散化尺度空間,利用組索引值O和層索引值S分別識別不同的組和層,組、層與尺度參數δ的關系如下:

(8)
式中:δ0代表基本尺度,O表示組序號,S表示層序號。
因為非線性擴散濾波模型構建的尺度空間以時間為單位,所以將以圖像像素為單位的尺度參數轉化成以進化時間為單位的尺度參數。在高斯空間中,使用標準差為δ的高斯卷積,相當于圖像進行時間t=δi/2的濾波。由此可知尺度參數δi與進化時間t之間的映射關系為:
(9)
KAZE/AKAZE算法構建尺度空間的流程是:首先通過高斯卷積平滑處理圖像,減小噪聲和形變等干擾;然后計算圖像梯度直方圖,以獲取對比度因子參數k,確定保留邊緣信息量;最后用進化時間序列構造非線性尺度空間,并且通過AOS算法或者FED算法及簡單迭代求解,獲取到非線性尺度空間圖像序列:
(10)
AKAZE/KAZE算法使用Hessian矩陣在非線性金字塔上尋找極大值從而確定特征點,如下式:
(11)
式中:σi為尺度因子初始值,Lxx、Lyy和Lxy分別表示x方向,y方向和xy方向的2階導數。對于每一個經過hessian矩陣歸一化的像素點,將其與金字塔相鄰尺度中σi×σi區域以及本身所在尺度σi×σi區域的像素點進行比較,求取區域特征點。
定位特征點的位置,以特征點為中心,畫出半徑為σi的圓分為6個扇形,如圖1所示。計算每個扇形內所有像素點在水平和豎直方向的一階導數的高斯加權值,高斯加權值最大方向即為特征點的主方向。

圖1 特征點方向
前面對KAZE/AKZE算法非線性金字塔發搭建、特征點定位、特征點的方向,進行了詳細的敘述,在本節中需要對描述符的建立進行詳細的闡述。傳統的二進制描述符如:BRIFE、BRISK等都是根據兩像素之間的關系建立描述符,這種描述符的魯棒性較差,易受光照、尺度、噪聲等的干擾,導致匹配效果較差。故在本文中提出AKAZE/KAZE-LATCH算法,利用LATCH算法建立三像素之間的關系建立描述符。
如圖2所示,假設以特征點為中心的采樣窗口內有p1、p2、p3三個像素塊,每個像素塊中包含m×m個像素,比較兩個像素塊與對應位置像素塊的平方和,可表示為:
(12)
則LATCH描述符可表示為:
(13)

圖2 三元組描述符
選擇24σi×24σi采樣區域建立描述符,原LATCH描述符選擇確定的m×m像素塊建立關系,為了使LATCH描述符具有更強的尺度不變性,本文提出根據尺度關系建立像素塊,像素塊尺寸為3σi×3σi。若像素塊尺寸為非整數,則使用雙線性差值算法計算像素塊的像素值,如圖3所示,可表示為:
(14)

圖3 雙線性差值算法
為了驗證所提算法的優越性,選擇SIFT算法、ORB算法、AKAZE算法、KAZE算法等四種具有代表性的基于局部特征的匹配算法,在INRIA數據[13]中具有模糊變換、光照變換、視角變換和JPEG變換的圖像進行對比實驗。
其中SIFT算法的描述符為非二進制,并且為最經典的匹配算法;ORB算法描述符是二進制描述符,在眾多二進制匹配算法中效果最佳;本文算法是在KAZE算法和AKZAE算法的基礎上進行改進。故選擇了上述四種算法進行對比實驗。
本文實驗實驗平臺為個人筆記本,匹配AMD-A84-500、4 GB內存,基于Opencv 3.10在Visual Studio 2013上進行實驗。
在本文實驗中SIFT算法為128維描述符;ORB算法的二進制描述符為256 bit;KAZE算法的描述符為64維;AKZAE的描述符為256 bit;本文所提算法描述符為256 bit。
圖4為基于局部特征圖像匹配的評價圖像,每一組6張圖像,第一張為基準圖像,剩余的五張為待匹配圖像,隨著同組圖像編號的增加圖像變化程度增加。如圖4所示,(a)和(b)為圖像模糊變換,(c)和(d)為圖像JPG壓縮,(e)和(f)為具有視角差的wall圖像,(g)和(h)圖像為光照發生變換。

(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 圖實驗圖像
KAZE算法率先提出了使用非線性金字塔有效地保護了圖像邊緣信息,利用加速魯棒性算法SURF(Speeded Up Robust Feature)的思想建立描述符,使得KAZE算法的魯棒性進一步增加,故匹配正確率優于SIFT算法。AKAZE算法使用精度更高、速度更快的FED算法解非線性函數,LDB二進制描述符不僅計算了像素塊之間的強度關系還表達了梯度關系,使得描述符的魯棒性大大增加,故相對于KAZE算法正確率得到極大提升。SIFT算法為最為經典的匹配算法,采用128維梯度描述符,搭建的高斯差分金字塔使得描述符的魯棒性不及KAZE算法,但仍然優于二進制描述符ORB算法。ORB算法描述符為二進制描述符,通過比較特征區域中像素值大小建立描述符,故ORB算法的魯棒性最差。本文所提的KAZE-LATCH算法,使用非線性金字塔一方面增加描述符的魯棒性,另一方面計算三個像素塊之間的信息建立描述符,使得二進制三元組描述符的魯棒性進一步增加,故匹配正確率相較于KAZE/AKAZE算法有巨大提升。AKAZE-LATCH算法的利用FED算法搭建的非線性金字塔精度更高,LATCH描述符的魯棒性相較于LDB算法的魯棒性更強,故AKAZE-LATCH算法匹配正確率要優于AKAZE算法和KAZE-LATCH算法。
圖5為SIFT算法、ORB算法、KAZE算法、AKZE算法、KAZE-LATCH算法和AKAZE-LATCH算法對具有模糊變換、光照變換、視角變換和JPEG變換的圖像進行匹配時,匹配正確率的統計。由圖5(a)折線圖分析可得,在模糊變換情境中,匹配正確率由大到小排序為:AKAZE-LATCH算法、AKAZE算法、KAZE-LATCH算法、KAZE算法、SIFT算法、ORB算法對于具有模糊圖像致使描述符的魯棒性下降,二進制描述符的穩定性雖不及非二進制描述符,但AKAZE-LATCH算法本身具有很大的優勢,故匹配正確率最高。由圖5(b)可得,在具有JPEG變換圖像中,匹配正確率順序排列為:AKAZE-LATCH算法、AKAZE算法、KAZE-LATCH算法、KAZE算法、ORB算法、SIFT算法。JPEG壓縮致使圖像的信息丟失,利用局部梯度建立的描述符的魯棒性會嚴重下降,故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算法。由于二進制描述符使用漢明距離計算相似度,比非二進制描述符匹配速度快,故SIFT算法和KAZE算法匹配速度較慢。AKAZE算法的非線性方程由速度更快的FED算法計算,故匹配速度遠超過KAZE算法。而LATCH描述符根據三個像素的關系確定描述符,相對于LDB描述符需要計算梯度,速度上進一步提升,故AKAZE-LATCH算法速度快于AKAZE算法。KAZE-LATCH算法與AKAZE-LATCH算法相比,雖描述符種類相同,但FED算法計算速度要優于AOS算法,故KAZE-LATCH算法匹配速度不及AKAZE-LATCH算法。ORB算法只需要搭建高斯金字塔,特征點檢測速度也較快,描述符又為二進制,故匹配速度最快。

表1 匹配時間 s
針對KAZE/AKAZE算法匹配魯棒性較差、匹配速度較慢等問題,本文提出一種三元組描述符與KAZE/AKAZE結合的算法。首先利用AOS算法或者FED算法解非線性方程搭建金字塔;然后借用海森矩陣確定特征點的位置;最后根據特征點所在尺度選擇相應的采樣域建立三元組描述符,若是像素塊非整數借助雙線性插值計算。實驗結果表明:AKAZE-LATCH算法比原AKAZE算法匹配正確率提升10%,運行速度提升7%;KAZE-LATCH算法比原KAZE算法匹配正確率提高15%,匹配速度僅為KAZE算法的75%,可廣泛應用于對匹配速度和精度要求較高的場景。