朱代先,吳 棟,劉樹林,劉凌志
(1.西安科技大學(xué) 通信與信息工程學(xué)院,陜西 西安 710054;2.西安科技大學(xué) 電氣與控制工程學(xué)院,陜西 西安 710054)
視差是指從有一定距離的兩個點上觀察同一目標(biāo)時產(chǎn)生的方向上的差異[1]。在實際中相機對同一物體進行拍攝的過程中,由于相機的平移運動,使得被拍攝的物體在不同視點中的成像位置不同,即產(chǎn)生了視差。在相機拍攝過程中,相機往往存在著平移、旋轉(zhuǎn)、鏡頭縮放等運動,這就使得對同一物體拍攝的兩幅照片存在視角、尺度、旋轉(zhuǎn)等變化,我們稱之為較大視差圖像,由于視差圖像重疊區(qū)域往往會存在紋理較少、特征不足的情況,這就使得視差圖像的特征匹配變得更為困難。
圖像的特征匹配是圖像處理中的關(guān)鍵一環(huán),用來建立兩幅圖像間的對應(yīng)關(guān)系,例如運動中恢復(fù)結(jié)構(gòu)[2]、同時定位與建圖[3-4]、三維重建[5]等應(yīng)用。目前基于點特征的圖像特征匹配算法有的專注運算速度上的提升,代表算法有ORB(oriented FAST and rotated BRIEF)[6]算法以及BRISK(binary robust invariant scalable keypoint)[7]算法等,以求達(dá)到實時性,采用ORB 算法進行特征匹配,對于紋理豐富、視差較小的兩幅圖像,速度快且魯棒性好,被廣泛應(yīng)用于同步定位與地圖構(gòu)建(SLAM)中,但是沒有解決尺度不變性問題;有的專注于精度上的提升,代表算法有SURF(speeded up robust features)[8]算法,SURF 算法在保持SIFT(scale-invariant feature transform)算法優(yōu)良性能的同時有效提高了計算速度,但容易造成邊界模糊和細(xì)節(jié)丟失。
由于視差圖像具有較大的深度差異,再加上復(fù)雜的相機運動,這就使得上述算法對視差圖像特征匹配的魯棒性不是很好,僅依賴描述符很難區(qū)分正確和錯誤匹配,正確和錯誤匹配點的篩選是視差圖像特征匹配中的關(guān)鍵,也是視差圖像配準(zhǔn)中的關(guān)鍵。因此柳長安等[9]提出一種基于網(wǎng)格運動統(tǒng)計的自適應(yīng)圖像特征匹配算法結(jié)合GMS(grid-based motion statistics)[10]和隨機抽樣一致算法(random sample consensus,RANSAC)[11]做誤匹配剔除,從而得到精確匹配點,但是由于ORB 特征的局限性使得算法對大尺度視角變換和旋轉(zhuǎn)變換的效果不是很理想。楊璇璇等[12]提出一種井下巷道大視差圖像拼接算法,采用基于多平面進行特征匹配點分組的方法,計算多個平面的單應(yīng)矩陣,能較好地完成井下巷道大視差圖像拼接的任務(wù)。Cavalli等[13]提出一種基于自適應(yīng)局部仿射匹配的外點濾除算法,基于圖像的仿射變換可以提供較強的幾何約束,根據(jù)仿射變換通過RANSAC 濾除特征點對中的外點,效果較好。受多平面特征點分組方法的啟發(fā),本文提出一種AKAZE結(jié)合自適應(yīng)局部仿射匹配的特征匹配算法,從具有較大視差圖像提取特征點并進行匹配得到粗匹配點,接著根據(jù)自適應(yīng)局部仿射匹配區(qū)分正確與錯誤匹配點。
本文將AKAZE(accelerated-KAZE)算法和自適應(yīng)局部仿射匹配算法結(jié)合,提出了一種視差圖像的特征匹配算法,其流程如圖1所示。
圖1 本文算法流程Fig.1 Flow chart of proposed algorithm
該算法利用AKAZE 算法在旋轉(zhuǎn)不變性、光照不變性、速度及穩(wěn)定性等方面的優(yōu)勢[14],對輸入的兩幅具有視差的圖像提取特征點,在尺度空間保留更多特征信息,然后采用二進制描述符M-LDB[15]進行描述,并進行暴力匹配,生成粗匹配點對,對具有較大視差圖像提取特征時,由于單個特征點的相似性,會存在大量近似的特征點,導(dǎo)致在特征匹配時出現(xiàn)大量的誤匹配點對。針對粗匹配點對采用自適應(yīng)局部仿射驗證剔除誤匹配,選取粗匹配點對中置信度好且分布均勻的點對作為種子點,并且在種子點周圍畫圓,在圓內(nèi)通過自適應(yīng)局部仿射匹配剔除誤匹配點對,達(dá)到精細(xì)匹配的效果。
非線性濾波構(gòu)建尺度空間后圖片會損失一些細(xì)節(jié),但能夠保留邊緣信息,將尺度空間中更多的特征信息保留。圖像亮度的擴散過程采用偏微分方程表達(dá),表示為
式中:div和分別表示散度函數(shù)與梯度算子;L表示圖像亮度;時間t是尺度參數(shù);c(x,y,t)表示梯度的函數(shù),擴散能夠適應(yīng)局部圖像結(jié)構(gòu)。
在AKAZE 算法中,使用FED(fast explicit diffusion)算法求解非線性偏微分方程,進一步提升計算速度和算法實時性,并構(gòu)建金字塔型尺度空間,尋找局部極大值點作為特征點位置,在特征點位置采用M-LDB(modified-local difference binary)描述符進行描述。
M-LDB 以特征點為中心劃分出n×n網(wǎng)格,在網(wǎng)格內(nèi)通過特征的尺度進行離散點采樣獲得離散點的亮度值和水平、垂直方向的微分平均值,這些運算符是由0 和1 構(gòu)成的二值描述符,其之間的距離采用漢明距離計算,可縮短計算時間從而進一步提高算法的實時性能。
自適應(yīng)局部仿射匹配算法(adaptive locallyaffine matching,AdaLAM),有效利用了現(xiàn)代并行加速硬件GPU,能夠產(chǎn)生速度快且非常準(zhǔn)確的離群點濾波器。AdaLAM 的核心思想如下:觀測場景中3D 點都落在同一平面上,兩張圖片觀測同一平面,則可以通過單應(yīng)矩陣(homography)描述兩幅圖像中觀測到的平面的映射關(guān)系,這個映射關(guān)系可以利用局部仿射變換[16](affine transformation)A去近似。由于仿射變換具有良好的幾何約束,利用幾何約束可以濾除錯誤的匹配。
AdaLAM 算法步驟如下:
1)選擇置信度高且分布較好的匹配點作為種子點;
2)以種子點為中心,在種子點近鄰的匹配點認(rèn)為具有局部一致性;
3)對于每一個種子點的近鄰,用局部仿射變換驗證一致性,最后保留那些局部一致較好的匹配點(認(rèn)為是內(nèi)點)。
種子點選擇是假設(shè)一組特征點有較高的置信度分?jǐn)?shù),可以在局部采用仿射變換去局部逼近適應(yīng)。對匹配好的特征點且置信度分?jǐn)?shù)較高的,以R 為半徑在圓內(nèi)做局部極大值抑制,其中置信度分?jǐn)?shù)由ratio-test[17]給出,如果在圓內(nèi)這個特征點為極大值,那么將會被認(rèn)為是種子點,從而確保種子點的獨立性和覆蓋范圍。這一過程使用GPU 進行加速。
式中:EHo是具有均勻分散的異常值對應(yīng)的假設(shè);正樣本計數(shù)P為對應(yīng)假設(shè)匹配關(guān)系k最壞情況下的內(nèi)聯(lián)線數(shù)。將半徑R內(nèi) 的殘差值映射到ck可以有效度量實際發(fā)現(xiàn)的內(nèi)聯(lián)點與僅在離群點假設(shè)EHo下發(fā)現(xiàn)的內(nèi)聯(lián)線數(shù)之比。當(dāng)置信度大于固定閾值時,表示該模型對該匹配關(guān)系被擬合得較好,視該匹配被視為內(nèi)點。每次迭代需要更新上述殘差、置信度以及內(nèi)點,后一次利用前一次得到的內(nèi)點去擬合新的仿射矩陣,然后做校驗,直至達(dá)到最大迭代次數(shù),最后輸出內(nèi)點。
本文算法實驗環(huán)境如下:Intel core i7-8700K/3.7 GHz CPU,Ubuntu18.04 操作系統(tǒng),16 GB 內(nèi)存,編程語言為python,在VS code 中運行。
為了驗證本算法針對視差圖像特征匹配的優(yōu)越性,從Oxford VGG 數(shù)據(jù)集中選取了4 組不同類型即視角變化(wall)、尺度與旋轉(zhuǎn)變化(bark)、亮度變化(leuven)、模糊變化(bick)圖像,4 組圖像的像素分別為880×680、765×512、900×600、1 000×700,每組中有6 張變化程度逐漸增強的圖像,分別采用SIFT+RANSAC、SURF+RANSAC、ORB+RANSAC、GMS、本文算法對每組圖像中的第1 幅和第6 幅即變化程度最強烈的兩幅圖像進行特征點的提取和匹配,并計算特征匹配點對正確個數(shù)(內(nèi)點)及算法運行時間,正確匹配點個數(shù)越多、用時越短,說明匹配效果越好。
圖2 是選取Oxford VGG 數(shù)據(jù)集中wall 圖像進行匹配,即視角變化的結(jié)果;圖3 是該數(shù)據(jù)集中bark 圖像進行匹配,即尺度與旋轉(zhuǎn)變化的結(jié)果。
圖2 視角變化圖像匹配結(jié)果Fig.2 Image matching results of view-angle change
圖3 尺度與旋轉(zhuǎn)變化圖像匹配結(jié)果Fig.3 Image matching results of scale and rotation change
由圖2 可以看出,SIFT 和SURF 提取的匹配特征點較少,經(jīng)過RANSAC 再次濾除外點后,依然有明顯錯誤匹配。由圖3 可以看出,SIFT 和SURF 針對尺度與旋轉(zhuǎn)變化提取的匹配特征點經(jīng)過RANSAC再次濾除外點后效果較好,但是SURF 相對于SIFT 提取的匹配點較少。由于ORB 特征本身不具備尺度和方向性,ORB 和GMS 算法針對圖2 wall圖像視角變化較大,針對圖3 bark 圖像尺度與旋轉(zhuǎn)變化較大,基本無法匹配。本文算法針對視角變化、尺度與旋轉(zhuǎn)變化提取的匹配特征點對,不僅匹配的特征點對數(shù)量較多,且特征分布均勻,針對有較大視差的圖像匹配有較好的效果,取得較好效果的原因是由于AKAZE 算法對于視差圖像存在的旋轉(zhuǎn)、尺度變化魯棒性較好,對于相似特征點之間的誤匹配采用局部仿射匹配驗證剔除了外點,從而提升了視差圖像匹配的準(zhǔn)確性。
圖4 是選取Oxford VGG 數(shù)據(jù)集中l(wèi)euven 圖像進行匹配,即亮度變化的結(jié)果;圖5 是該數(shù)據(jù)集中bikes 圖像進行匹配,即模糊變化的結(jié)果。
圖4 亮度變化圖像匹配結(jié)果Fig.4 Image matching results of brightness change
圖5 模糊變化圖像匹配結(jié)果Fig.5 Image matching results of blurred change
由圖4 和圖5 可以看出,SIFT 和SURF 提取的匹配特征點,經(jīng)過RANSAC 再次濾除外點后,效果遠(yuǎn)好于ORB 算法。GMS 算法通過降低特征提取閾值并采用網(wǎng)格運動統(tǒng)計剔除外點針對亮度變化和模糊變化效果較好,由圖4(d)和圖4(e)可以看出,GMS 算法在圖像邊角及汽車玻璃上的匹配點的特征點較少,但本文算法在這些區(qū)域都有分布均勻的匹配點,其與GMS 算法在亮度變化和模糊變化匹配效果上基本相當(dāng),但本文算法匹配點分布比GMS 算法均勻。表1 分別記錄了SIFT、SURF、ORB、GMS 和本文算法在不同類型圖像上的粗匹配點數(shù)和內(nèi)點數(shù)。
表1 特征匹配點統(tǒng)計Table 1 Feature matching points statistics
表2 分別記錄了SIFT、SURF、ORB、GMS 和本文算法在不同類型圖像上的特征提取粗匹配時間、外點濾除精匹配時間以及總用時。
表2 不同類型圖像應(yīng)用算法耗時Table 2 Time consuming algorithm for different types of images
從表2 中可以看出:本文算法主要在精匹配剔除誤匹配外點耗時較長,而在特征提取匹配階段由于非線性擴散方程的FED 解法和二進制描述子,相較于SIFT 和SURF 有優(yōu)勢;特征提取階段ORB 算法用時最短;GMS 算法由于將特征提取閾值設(shè)置的特別低,導(dǎo)致提取的特征比本文算法高出兩個數(shù)量級,故在特征提取匹配時,剔除誤匹配階段均耗時較長,但特征匹配效果以及針對不同類型圖像匹配的效果不如本算法。本文算法在每組圖像上的運行時間都相對比較均衡,在實時性方面本文算法還有待提高,需要繼續(xù)優(yōu)化。
實際拍攝一組卡通狗的照片(分辨率為5 184×3 456像素),其紋理結(jié)構(gòu)相似且同時存在尺度和旋轉(zhuǎn)等變化,分別使用AKAZE 算法和本文算法匹配,結(jié)果如圖6所示。
圖6 實際應(yīng)用結(jié)果Fig.6 Practical application results
由圖6 可以看出:AKAZE 算法對于紋理相似且同時存在尺度和旋轉(zhuǎn)變化的視差圖像進行匹配明顯存在大量誤匹配點;本文算法是在AKAZE 算法的基礎(chǔ)上結(jié)合AdaLAM 算法通過局部仿射匹配驗證,剔除了大量相似特征點對,從而保證針對視差圖像的特征匹配結(jié)果更好。
本文提出了一種基于改進AKAZE 的具有視差圖像特征匹配算法,針對視差圖像容易同時存在由于尺度、旋轉(zhuǎn)、視角的變化引起的特征點,容易產(chǎn)生誤匹配的問題,采用AKAZE 算法提取特征并進行粗匹配,基于自適應(yīng)仿射變換進行精細(xì)匹配。通過對比實驗,結(jié)果表明,本文算法在圖像存在視差或者發(fā)生尺度與旋轉(zhuǎn)變化等不同場景下,本文算法提取特征點數(shù)量優(yōu)于傳統(tǒng)的特征匹配算法,可應(yīng)用于從多視圖幾何恢復(fù)三維結(jié)構(gòu)等需要對存在較大視差圖像進行匹配的場景,本文算法的不足之處就是在精細(xì)匹配剔除誤匹配階段耗時較長,下一步將就如何提高算法的效率、縮短運行時間進行繼續(xù)研究。