代友林,王曉紅,李 闖,李萬華
(1.貴州大學礦業學院,貴州 貴陽 550025;2.貴州大學林學院,貴州 貴陽 550025;3.煙臺職業學院,山東 煙臺 264025)
中國喀斯特地區已列入“世界遺產名錄”[1],但該地區易發生滑坡、泥石流等自然災害,利用無人機技術可快速做出響應,為救災做好信息保障工作,且無人機影像構建的喀斯特三維景區更直觀。喀斯特山區峰林和峰叢眾多,其影像存在地形起伏大、影像亮度分布不均勻等情況,使得該地區無人機影像匹配特征不明顯,出現正確匹配點數量較少、耗時長的現象。近年來,國內外學者針對無人機影像匹配進行了大量研究,在經典SIFT (Scale Invariant Feature Transform)算法[2]、SURF(Speeded Up Robust Features)算法[3]及AKAZE (Accelerated-KAZE)算法[4]等的基礎上進行了改進和創新。例如,張貝貝等[5]利用Delaunay三角網的約束作用,在保持SURF算法和Harris算法優點的同時減少了誤匹配,但當特征點數量較大時,構建三角網會導致計算量增大,時效性降低;王曉紅等[6]利用AKAZE算法和SIFT描述符分別進行特征點檢測和描述,再利用RANSAC(Random Sample Consensus)算法進行精匹配,可提高匹配效率及匹配點數;Leutenegger等[7]提出的BRISK(Binary Robust Invariant Scalable Keypoints)算法速度快且具有較好的旋轉和尺度不變性,相比SIFT算法可滿足實時性要求;宋偉等[8]提出基于改進AKAZE特征的無人機影像拼接算法,通過并行計算,利用BRISK描述符代替M-LDB描述符,在保證較高準確率的同時,有效提升了匹配效率,但總匹配數和正確點數均有所下降;針對喀斯特地區影像,何志偉[9]提出基于完全仿射變換的改進算法,通過對喀斯特地區多視角影像做不同經緯度下的模擬,能夠精確模擬因相機光軸取向變化導致的無人機影像扭曲和幾何變形,使得特征點數量增加且分布更均勻,正確匹配的數量顯著提高;Levi等[10]提出的 LATCH(Learned Arrangements of Three Patch Codes)算法縮小了二進制描述符與局部梯度描述符間的性能差距;沈學利等[11]將LATCH與AKAZE和KAZE結合,提高了算法的速度和正確率,但在喀斯特山區的無人機影像上表現欠佳。
綜上,已有研究通過結合兩種算法優勢或著眼于影像再處理,提升了算法的綜合性能。但喀斯特地區影像應用對特征辨識度要求較高,無論是應用SIFT這種具有抗噪性好的算法[12],還是利用影像再處理技術或引入相關約束提升性能,均會導致時間成本升高,同時SIFT這類算法的特征數量較少,直接影響后續正確匹配數量。因此,本文顧及喀斯特山區無人機影像的特點,提出一種基于BRISK算法和LATCH描述符的喀斯特山區影像匹配算法,以期提升影像的匹配質量及時效性。
BRISK算法采用在多尺度空間中進行FAST(Features from Accelerated Segment Test)[13,14]特征檢測,通過比較特征點鄰域像素灰度值,生成二值特征描述子[15,16],包括特征檢測和特征描述兩個步驟,本研究主要利用其特征檢測過程。
(1)構建尺度空間金字塔。如圖1所示,該金字塔共包含n個組層ci和n個組間層di,c0是尺度為1的原始影像,d0由c0經過1.5倍降采樣得到,而其他di可由前一個組間層經隔點采樣得到。各層尺度計算公式見式(1)。

圖1 BRISK特征檢測示意Fig.1 Schematic diagram of BRISK feature detection
(1)
式中:tci表示組層的尺度;tdi表示組間層的尺度。
(2)特征點檢測和非極大值抑制。在尺度空間金字塔每層進行FAST特征點檢測,得到候選特征點,通過對每個候選點比較其同層8鄰域元素及其上下兩層3×3范圍內18個元素共26個元素的角點響應值,剔除比其他點響應值小的候選點,達到非極大值抑制的目的。
(3)獲取特征點信息。對特征點同層及上下兩層的每一個3×3范圍內的9個元素進行最小二乘擬合,得到每層角點響應值的最大值s0、s1和s2及其亞像素坐標偏移量,再將s0、s1和s2與對應尺度通過拋物線擬合得到最大值smax及對應尺度,最終根據亞像素坐標偏移量及尺度關系計算得到具有亞像素級定位精度的特征點及其尺度。
基于局部梯度的描述符通過空間分割方式匯聚影像特征,所描述的特征具有高魯棒性特點,但其計算量較大,不能滿足實時性要求;相反,基于局部像素比對的二進制描述符以特征點為中心,構建一個一定像素大小的采樣模板M,將M內各像素兩兩一對組合成t對坐標序列Si,直接比較Si和Si+1(也可對像素進行高斯濾波處理,比較處理后的像素),形成相應的二進制描述符,直到比較完所有像素坐標對,生成完整的二進制描述符。直接對比像素的方式減少了大量運算,實時性更好,但其描述的特征對噪聲不敏感,易受局部變化影響[11,17],尤其是對于喀斯特山區地形起伏大、光照不均勻的無人機影像,更易產生影響。BRISK算法描述符就是這種二進制描述符,易受光照、噪聲、尺度等的干擾,魯棒性較差[18]。
LATCH描述符應用三元組像素塊的比對方法確定二進制描述符中相應位的取值[19]。在特征檢測窗口內,三元組存在多種組合方式,Levi等[10]通過機器學習的方式對文獻[20]中的數據集(包含3個獨立數據集合)進行Harris角點[5,21]檢測,從每個獨立數據集中獲得超過40萬個局部影像窗口,對這些窗口中成對的不同影像進行標記,依據其在不同視角或觀看條件下是否都有相同的物理場景點進行區分,分別標記為相同或不同;然后將包含“不同”和“相同”標記各一半的50萬對窗口,通過隨機選取的形式組合成56 000個三元組(即t=56 000)為一個序列;最后,為每個序列生成50萬位,統計其中正確位的總次數以評估每個序列的質量,并設置閾值篩選絕對相關度小于閾值(τ=0.2)的組合,以免選擇相關度高的高質量組合序列。這種通過機器學習的方式獲取像素的比對方法比單純地學習整個描述符更有優勢。
如圖2所示,在每個特征點檢測窗口w內定義(定義方式為通過學習獲得三元組的比對方法,即三元組的排列定義)t組3個m×m大小的像素塊(本文m=7,共32組,即32位描述符),包含一個主要像素塊(Pt,α)和兩個(Pt,1,Pt,2)伴隨像素塊,通過計算并比較主要像素塊與兩個伴隨像素塊差值的F范數來確定描述符對應位取值G(w,t)(式(2)),最終形成的描述符可表示為bw(式(3))。LATCH在保持二值化描述符速度快的同時,比二值化描述符更具穩健性。

圖2 LATCH描述符示意Fig.2 Schematic diagram of LATCH descriptor
(2)
(3)
本文考慮到喀斯特山區影像的特點,提出結合BRISK算法檢測子和LATCH描述符的影像匹配算法,具體流程(圖3)為:1)由BRISK檢測特征點,利用LATCH描述符描述特征點;2)采用結合最小距離的FLANN(Fast Library for Approximate Nearest Neighbors)[22]算法進行特征粗匹配,計算出最小匹配距離,將各個匹配距離值與預設閾值(本文設置為6倍最小距離)相比較,小于閾值的匹配作為參考影像中匹配特征點的優秀匹配,否則為較差匹配,予以刪除,以此到達提純匹配點對的目的;3)利用基于單應性矩陣的RANSAC[23]算法(隨機抽樣一致性算法)對粗匹配中的誤匹配點對進行剔除,達到精匹配的效果。

圖3 BRISK-LATCH算法流程Fig.3 Flow chart of BRISK-LATCH algorithm
RANSAC通過運用概率統計學中的假設和檢驗對含有噪聲的數據集在一定置信度下估計數據間模型。在影像匹配中,本文將誤匹配點對看作噪聲,運用RANSAC方法剔除誤匹配點。算法實現步驟為:1)從匹配點對集中隨機抽取4對樣本特征點(參考匹配和待匹配各4個相對應的不共線特征點),計算出單應性變換矩陣M;2)計算數據集中所有數據與M的投影誤差,若某一特征點的誤差小于閾值(本文閾值為3),認為該點為內點,加入內點集I;3)若當前I中的元素數大于最優內點集的元素數,則更新最優內點集為I,同時更新迭代次數K(式(4));4)若迭代次數大于K則退出,此時得到最終所求單應性變換矩陣M,否則迭代次數加1,重復上述步驟。
K=log(1-p)/log(1-wm)
(4)
式中:p為置信度(可靠度),本文為0.995;w為內點比例;m為模型計算所需最少樣本數,本文m=4。
本文采用總匹配數、正確匹配數(即經過投影變換后匹配點對之間的距離差在3個像素以內的匹配)、匹配總耗時、單個正確點耗時綜合評價算法的整體性能。總匹配數是算法提取到的所有匹配點對數,表征算法檢測特征的能力,其數值越大,代表算法的檢測能力越強;正確匹配數為經過RANSAC算法剔除誤匹配點對后剩余的匹配數量,其值越大,特征穩健性越強;匹配總耗時和單個正確點耗時分別代表算法的總用時及算法的實際效率。
本文選取3組喀斯特山區無人機影像:a組影像溝壑縱橫,巖石裸露;b組影像地形起伏多變,地形復雜度較高;c組影像光照不均,多獨立山頭(圖4),其中,a、b兩組影像由大疆精靈4搭載尼康D810拍攝,分辨率為810像素×541像素,c組影像由大疆精靈4p的FC6310相機拍攝,分辨率為657像素×438像素,分別對3組影像采用本文算法、BRISK、SIFT和AKAZE算法進行影像匹配實驗。實驗中BRISK算法角點閾值為30,基準尺度為1,影像金字塔為3層;SIFT也為3層金字塔,過濾較差特征閾值和邊緣效應閾值分別是0.04和10,第0層影像高斯濾波系數為1.6;AKAZE為4個組層,每個組層包含4個子層,特征點響應閾值為0.001,采用擴散方式為DIFF_PM_G2,描述符為MLDB。本文實驗的運行環境為:Intel(R) Core(TM) i5-8300H CPU @ 2.30 GHz,8 G內存,Win10 64位系統;Opencv 3.2開源庫。

圖4 喀斯特山區無人機影像Fig.4 UAV images in Karst mountain areas
喀斯特山區影像的匹配難點是影像特征具有隱蔽性和弱特征性。喀斯特山區地形復雜,易引起影像局部像元值和尺度變化,造成特征差異性減弱、識別困難;由于山區多植被,所以影像色彩較為單一,像元間區分度小;地形起伏大造成像點位移、局部尺度變化和陰影,溝壑縱橫則使影像局部呈現類似于陰影的特性。結合圖5匹配實驗效果看,a組影像溝壑區域呈帶狀,在此范圍內與陰影相似,無論是梯度變化還是像素值比較,二者差異均很小,故不易得到代表性強的特征點,即使提取到特征點也容易因相似出現誤匹配。而溝壑邊緣區域與陰影邊緣又有所區別:前者是自然條件形成,周圍環境差異小,該區域的優質特征不易提取;后者是由于遮擋產生的拍攝結果,其周邊區域差別更大,陰影內呈深色而外部是淺色,因而更容易獲得優質特征,如c組影像匹配效果。

圖5 BRISK算法和本文算法正確匹配點對比Fig.5 Comparison of correct matching points between BRISK algorithm and the proposed algorithm in this paper
總體而言,溝壑縱橫、地形起伏引起的局部陰影和尺度變化,使影像呈現的特征弱化或減少,從而導致正確匹配減少甚至部分區域缺失。應當注意的是,溝壑區域復雜度高,變化細小而頻繁,其對影像的影響更復雜,可能還存在由無人機拍攝前后的視場變化引起該區域同一地物像點的變化,以及溝壑周圍地物遮擋導致特征缺失等,其影響機理有待深入研究。本文算法通過增加特征點數量增強了特征的穩健性,一定程度上改善了該地區影像匹配的效果。
根據實驗方案進行不同算法的特征匹配(圖6-圖8),統計各算法的總匹配數、正確匹配數、單個正確點耗時(即匹配總耗時與正確點數之比)等指標并進行對比分析(表1)。
從圖6、圖8可知,精匹配后所有算法的匹配效果均較好,基本不存在誤匹配點對,反映出RANSAC算法能從含有大量噪點的數據集中估算出高精度的模型;結合表1可知,最終的正確匹配數由少到多依次是AKAZE算法、SIFT算法、BRISK算法和本文算法。其中影像組b是一組左下半部分地形更復雜、右上半部分地形較單一的喀斯特山區影像,結合圖5、圖7和表1可知該影像組的匹配結果為:SIFT算法依舊穩定且正確匹配數比BRISK更多,SIFT算法正確匹配數轉化最高,說明局部梯度算法的特征穩健性非常高;相反,BRISK算法出現匹配數銳減,AKAZE算法甚至出現精匹配失敗的情況,緣于這兩種算法的描述符均為傳統二進制描述符,更易受喀斯特山區復雜地形的影響,BRISK的描述符雖然比AKAZE的描述符穩健性更高,但仍不能擺脫傳統二進制描述符的局限;本文算法依然保持正確點數多的優勢,進一步說明了本文算法的優越性,既有傳統二進制描述符的速度優勢,又有很高的穩健性。

圖6 a組影像各算法精匹配結果Fig.6 Results of fine matching of various algorithms for images of group a

圖7 b組影像各算法精匹配結果Fig.7 Results of fine matching of various algorithms for images of group b

圖8 c組影像各算法精匹配結果Fig.8 Results of fine matching of various algorithms for images of group c

表1 4種算法提取的特征點數及用時情況Table 1 Number of feature points extracted by the four algorithms and their time consumption
從總匹配數量看,本文算法在a組和c組影像上的表現略低于BRISK算法,分別達到BRISK算法匹配數量的95.97%和93.84%,進一步印證了本文算法很好地保留了BRISK算法的特征檢測能力;本文算法在b組影像上的表現明顯優于BRISK算法,適應性更強。與其他算法相比,本文算法在3組影像上的表現更好,總匹配數分別是SIFT算法的1.77倍、2.49倍、3.47倍,是AKAZE算法的384.13倍、2.18倍、6.94倍,總匹配數高為后續獲得可觀的正確匹配數提供了保障。
從正確匹配點數看,本文算法均高于其他算法,在3組影像上的表現分別為BRISK算法的2.83倍、5.47倍、1.36倍,是SIFT算法的3.38倍、2.19倍、6.46倍,是AKAZE算法的76.83倍、無效、54.33倍。雖然本文算法總匹配數量略少于BRISK算法,但正確點數卻比BRISK算法多,根據前面對特征正確匹配點分布的分析,本文算法從定量上證明了運用LATCH描述符改進BRISK算法,使得特征點更具穩健性,在保持BRISK算法檢測能力的基礎上提高了正確匹配數;AKAZE算法獲得了一定的總匹配數,得益于算法本身檢測子所利用的非線性擴散濾波及其非線性尺度空間,但其描述符魯棒性較差導致正確匹配急劇下降,甚至在b組影像上出現精匹配失敗的情況。
從單個正確點耗時看,本文算法在3組影像上分別為BRISK算法的22.74%、11.11%、40.73%,是SIFT算法的75.97%、54.18%、79.28%,是AKAZE算法的7.22%、無效、7.70%,可見本文算法效率最高,對實時性要求較高的基于無人機影像的應用具有一定的參考價值。
綜上所述,本文算法在總匹配數低于BRISK算法的情況下獲得了更高的正確匹配數量,且單個正確點耗時低于BRISK算法50%以上,表明本文算法效率更高,穩健性更強;與SIFT和AKAZE算法相比,本文算法均有更好的表現,說明本文算法在喀斯特山區無人機影像上具有更好的適應性。
本文針對BRISK算法在喀斯特山區影像匹配中存在的耗時長、正確匹配點數少問題,提出了一種采用BRISK算法檢測特征點、運用LATCH描述符描述特征點的算法,通過與BRISK算法、SIFT算法和AKAZE算法對比,證明本文算法效率更高、穩健性更好。研究結果可為喀斯特山區無人機影像的快速匹配提供參考。此外,通過實驗發現本文算法和其他算法在該地區仍存在特征點分布不均勻、部分區域特征點較少以及b組影像中AKAZE算法精匹配失敗的現象,有待深入研究。