王 一,齊 皓,王瀚錚,程 佳
(1.華北理工大學(xué) 電氣工程學(xué)院,河北 唐山 063210;2.唐山市金屬構(gòu)件產(chǎn)線智能化技術(shù)創(chuàng)新中心,河北 唐山 063210)
近些年,無人機遙感技術(shù)廣泛應(yīng)用于城市建模、資源調(diào)查和地形勘測等多個領(lǐng)域,具有獲取空間影像分辨率高、靈活性強和實時傳輸?shù)葍?yōu)點[1]。但在航拍過程中,由于無人機受自身飛行高度、相機視角等參數(shù)的限制,使得所拍攝的影像視野較小,無法顯示更完整的信息,成像視差嚴重且存在較大的幾何變形,從而導(dǎo)致影像匹配的效果不佳,因此如何實現(xiàn)無人機影像的特征匹配具有重要研究意義。現(xiàn)階段的影像匹配方法主要分為基于區(qū)域的方法和基于特征的方法兩大類[2]?;趨^(qū)域的方法利用圖像的灰度信息尋找圖像中的同名點實現(xiàn)匹配。由于無人機影像數(shù)據(jù)的不穩(wěn)定性,通過影像灰度進行匹配往往達不到預(yù)期的效果,且計算量大、處理時間過長,對無人機影像不太適用。
基于特征的匹配方法因其穩(wěn)健、快速被廣泛應(yīng)用于無人機影像的匹配。Lowe[3]提出了尺度不變特征變換(Scale-Invariant Feature Fransform,SIFT)算法,這種算法具有很強的提取特征點的能力,能克服一定的尺度、旋轉(zhuǎn)及模糊變化。然而,SIFT算法最初是針對光學(xué)圖像開發(fā)的[4],直接應(yīng)用于灰度差異較大的大幅面遙感影像時很難找到足夠多的正確匹配對[5]。傳統(tǒng)SIFT算法特征描述子過多、計算復(fù)雜、耗時巨大,因此Bay等[6]改進了SIFT的描述方式,將128維描述符改為64維,匹配效率有所提高,但其實時性仍無法滿足實際場景需求。
針對以上匹配算法運行時間長的問題,Ke等[7]提出PCA-SIFT算法,把SIFT特征描述子從128維降到了20維,速度有所提高但低維度的描述符描述能力較差,應(yīng)用于高分辨率的無人機影像時準(zhǔn)確率較低。上述算法通過減少描述符維度的方式來解決耗時長等問題,但并沒有改變浮點型描述符冗余的數(shù)據(jù)結(jié)構(gòu)。Rublee等[8]在2011年提出ORB算法,該算法采用FAST算子[9]進行檢測并在特征描述階段使用BRIEF[10]二進制描述符,同時利用圖像金字塔和灰度質(zhì)心法實現(xiàn)了尺度、旋轉(zhuǎn)不變性,該算法拋棄了浮點型描述符,采用二進制描述結(jié)合漢明距離進行匹配,相比SIFT、SURF算法,ORB算法的匹配速度大大提高[11],然而基于手動設(shè)計的二進制描述符區(qū)分性比浮點型描述符差,匹配能力欠佳。
為了提高影像匹配的運行效率,一些改進方法被提出用于解決上述問題。馬耀名等[12]提出一種基于高斯曲率濾波的無人機航拍圖像匹配方法,該方法首先使用高斯曲率濾波構(gòu)建圖像金字塔,提取不同尺度的描述符兩兩做差,獲得了較多的正確匹配點,但只適用于實時性較低的場景。郭麗等[13]提出采用SIFT算法和FSC算法相結(jié)合的方式剔除遙感圖像局外點,匹配點對分布均勻但數(shù)量較少。陳保宇等[14]基于KAZE算法對露天煤礦的無人機影像進行匹配,正確匹配率較高但耗時較長。
無人機影像匹配不僅要保證較高的正確匹配率,還要擁有較快的匹配速度。因此針對無人機影像存在成像視差嚴重、噪聲多的問題,首先采用聯(lián)合雙邊濾波對原始圖像進行降噪預(yù)處理,提高圖像質(zhì)量,并且針對傳統(tǒng)SIFT算法在匹配高分辨率無人機航拍影像時運行速度慢、匹配正確率低的問題,提出從SIFT算法中第二組尺度空間進行特征檢測;采用基于機器學(xué)習(xí)的二進制描述算法強化描述符(Boosted Efficient Binary Local Image Descriptor,BEBLID)[15];通過Vicinity-KNN算法對特征點進行粗匹配,減少算法迭代次數(shù),最后引入自適應(yīng)局部仿射匹配算法[16]進行特征匹配的優(yōu)化,以提高無人機影像的匹配精度和效率。
在對圖像進行特征匹配之前,首先要對原始的圖像進行預(yù)處理,以消除無關(guān)的信息,最大程度地簡化數(shù)據(jù),使特征點檢測更加均勻,便于計算機進行識別和處理[17]。聯(lián)合雙邊濾波是一種非線性的濾波器,可以達到保持邊緣、降噪平滑的效果。
聯(lián)合雙邊濾波可以表示為:
(1)
聯(lián)合雙邊濾波使用一幅導(dǎo)向圖作為值域權(quán)重的計算依據(jù)。為了提高算法的效率,首先對原始圖像進行下采樣處理,然后將處理后的圖像按照最鄰近插值的方式上采樣至原圖大小,從而快速實現(xiàn)對一幅圖像的聯(lián)合雙邊濾波。
在圖像預(yù)處理的基礎(chǔ)上,利用SIFT算法進行特征提取得到穩(wěn)定準(zhǔn)確的特征點。
① 尺度空間的建立
一幅圖像的尺度空間L(x,y,σ)是由一個變化尺度的二維高斯函數(shù)G(x,y,σ)與初始圖像的li=1卷積運算所決定的:
L(x,y,σ)=G(x,y,σ)*I(x,y),
(2)
(3)
式中:σ為尺度參數(shù),(x,y)為圖像的像素坐標(biāo),*表示卷積運算。
② 改進尺度空間極值點檢測
采用高斯微分 (DOG)函數(shù),構(gòu)建高斯差分金字塔D(x,y,σ)以實現(xiàn)特征點的檢測:
D(x,y,σ)=L(x,y,kσ)-L(x,y,σ),
(4)
檢測部分與SIFT算法類似,各檢測點分別與目標(biāo)點相鄰的26個像素點進行對比。但與SIFT算法不同的是,為提升算法的匹配效率,高斯金字塔的初始層并不采用擴展后的輸入圖像,而是使用原始圖像,并從第2組尺度空間開始進行檢測,如圖1所示。
圖1 改進尺度空間極值點檢測示意Fig.1 Improved schematic diagram of scale space extreme point detection
③ 去除邊緣不穩(wěn)定特征點
主曲率在邊緣方向的值較大,因此主曲率可通過Hessian矩陣求出:
(5)
SIFT算法使用一組128維的特征向量來描述關(guān)鍵點,產(chǎn)生特征描述子,進行后續(xù)的匹配。但其計算量大,導(dǎo)致特征點冗余、耗時較長,無法滿足實時性要求。ORB算法基于手工設(shè)計二進制描述子,采樣方式的建立依靠經(jīng)驗和實驗驗證,使其在實際應(yīng)用中受到了很大的限制。為此,本文首次提出將基于機器學(xué)習(xí)的BEBLID算子與改進的SIFT算法相結(jié)合,提取特征描述符。
為使二進制描述符在獲取匹配速度優(yōu)勢的同時具有浮點型描述符強魯棒性和強區(qū)分性的優(yōu)點,BEBLID使用AdaBoost算法[18]進行改進,在Brown數(shù)據(jù)集[19]上進行訓(xùn)練,使所有弱學(xué)習(xí)器共享一個相同的權(quán)重進而得到二進制描述符。定義損失函數(shù)和特征提取函數(shù)如下:
(6)
式中:λ為弱學(xué)習(xí)器權(quán)重,h(x)為弱分類器,其中hk(z)≡hk(z;f;T)由特征提取函數(shù)f(x)和閾值T來定義弱學(xué)習(xí)器。
(7)
(8)
式中:I為任意像素的灰度值,R(p1,s)、R(p2,s)分別為像素點p1、p2在鄰域s×s內(nèi)的灰度值之和。
BEBLID算子提取描述符工作流程如圖2所示,使用基于機器學(xué)習(xí)的采樣模板(圖中的藍色和黃色方框)在該鄰域內(nèi)采樣,通過特征提取函數(shù)f(x)計算藍色方框和紅色方框內(nèi)像素平均灰度值的差,并與閾值T做比較,若大于T則為1,反之為-1。然后歸一化形成具有強描述性的二進制描述符。
圖2 BEBLID提取描述符工作流程Fig.2 BEBLID extraction descriptor workflow
傳統(tǒng)KNN算法是從所有訓(xùn)練樣本中尋找距離未知樣本最近的K個樣本,將K個樣本中出現(xiàn)最多的類別賦給未知樣本[20]。然而這種方法需要每次都遍歷待匹配圖像的所有特征點,耗時較長。
因此,利用圖像的鄰域信息改進KNN算法,在特征匹配時增加運動平滑性約束,縮小特征匹配區(qū)域。正確的匹配在運動空間中是平滑的,運動平穩(wěn)相鄰的特征在運動空間中具有一致性[21],所以相鄰特征點對應(yīng)的匹配特征點的區(qū)域也是相鄰的。從而,參考圖像中的特征點搜索出待配準(zhǔn)圖像中與之匹配的特征點后,該特征點鄰域內(nèi)的所有特征點只需在待配準(zhǔn)圖像中匹配點的鄰域內(nèi)進行搜索即可。同時,為方便鄰域的選取,在匹配時引入網(wǎng)格結(jié)構(gòu),將樣本圖像均勻劃分為n×n網(wǎng)絡(luò),以網(wǎng)絡(luò)為單位進行匹配。匹配示意如圖3所示,假設(shè)特征點A的待匹配點為點B,則與點A在同一鄰域內(nèi)的特征點O只需在特征點B的3×3鄰域內(nèi)搜索匹配點,從而縮短匹配時間,提高匹配速度。
圖3 特征匹配示意Fig.3 Feature matching diagram
粗匹配中存在大量的誤匹配點,影響了匹配精度。傳統(tǒng)的誤匹配剔除算法常采用隨機采樣一致性(RANSAC)算法[22],但RANSAC計算參數(shù)不存在迭代次數(shù)的限制,且需要人為設(shè)定閾值,容易導(dǎo)致出現(xiàn)錯誤的結(jié)果,為此本文引入一個新的誤匹配點濾除算法。
首先需要輸入初始假定匹配集合,為每個關(guān)鍵點分配一個置信度分數(shù),然后在半徑R內(nèi)選取具有置信度分數(shù)最高的點作為種子點,并為每個種子點都在初始匹配集合中找到相對應(yīng)的匹配點。
(9)
式中:k為匹配關(guān)系,rk為殘差值。
算法是對局部鄰域內(nèi)進行仿射變換估計,不同的鄰域包含不同的仿射變換模型,所以無法得到一個固定的閾值適用于所有種子匹配點對應(yīng)的鄰域。因此采用一種基于假設(shè)檢驗的方式[23]來判斷候選匹配點是否為正確匹配點,假設(shè)所有離群點都符合均勻分布,將殘差集合R中的殘差項rk映射到置信度ck:
(10)
式中:H0是包含統(tǒng)一外點的假設(shè),正樣本計數(shù)P=|l:r1≤rk|為假設(shè)對應(yīng)k最差匹配關(guān)系下的內(nèi)點的數(shù)量,R表示所有候選匹配點殘差值集合,從0開始對k進行標(biāo)序時P=k+1。當(dāng)置信度超過某個閾值tc時,則判斷為正確匹配點,反之進行剔除。在每次迭代過程中都要對上述殘差、置信度以及內(nèi)點進行修正,然后使用先前獲得的內(nèi)點去擬合新的仿射矩陣,再進行檢驗,直至達到最大的迭代數(shù),最終輸出內(nèi)點。
實驗在AMD Ryzen 7 4800H with Radeon Graphics 2.90 GHz CPU,16 GB內(nèi)存,Windows 10操作系統(tǒng),Pycharm環(huán)境,OpenCV3.4.2計算機視覺庫下,實現(xiàn)算法的調(diào)試。為了驗證所提方法的可行性,將本算法與ORB算法、傳統(tǒng)SIFT算法、改進SIFT(ISIFT)算法[24]和改進KAIE(IKAZE)算法在Oxford VGG標(biāo)準(zhǔn)圖像數(shù)據(jù)集和4組典型區(qū)域的無人機影像數(shù)據(jù)進行匹配實驗。ISIFT算法將特征點的矩陣區(qū)域改為圓形,從而降低了算法的復(fù)雜度。
借助絕對距離和余弦相似度進行雙重匹配,最后通過RANSAC算法對錯誤的匹配點對進行過濾。
實驗采用Oxford VGG標(biāo)準(zhǔn)圖像數(shù)據(jù)集中Wall、Boat、Leuven、Tree和Ubc五組圖像作為實驗圖像,每組圖像共6張,變化程度依次不斷加強,對應(yīng)圖像如圖4所示,其中圖4(a)~圖4(e)分別表示視點變化、旋轉(zhuǎn)變化、光照變化、模糊變化和JPEG壓縮。
圖4 Oxford實驗圖像Fig.4 Oxford experimental images
采用正確匹配率(Correct Matching Rate,CMR)和運行時間等評價指標(biāo)對圖像匹配算法進行綜合評價。CMR定義為:
CMR=mc/m,
(11)
式中:mc為匹配正確的點數(shù),m為所有匹配對數(shù)。
圖5展示了分別使用ORB、SIFT、ISIFT、IKAZE和本文所提方法對圖4數(shù)據(jù)進行匹配的用時和正確率比較。分別用每個數(shù)據(jù)集的第一幅圖像依次與后面5幅圖像進行匹配,得到不同算法的平均正確匹配率和平均匹配時間。由圖5(a)可以看出,IKAZE算法的匹配時間最長,而本文算法的匹配速度僅次于ORB算法,相比于SIFT算法有較大的優(yōu)勢。這主要是因為在特征提取時,跳過了無用特征點較多的第一組尺度空間,減少了特征提取的計算量,并采用二進制描述子進行描述,同時Vicinity-KNN算法大大減小了算法的復(fù)雜度。圖5(b)展示了不同算法在不同條件下的正確匹配率,即CMR,正確匹配點數(shù)與所有匹配對數(shù)之比,CMR越高,代表算法的匹配效果越好。IKAZE算法使用FREAK二進制描述符[25]代替浮點型描述符并通過RANSAC算法剔除錯誤匹配點,增加了算法匹配效率,但降低了穩(wěn)定性。本文算法網(wǎng)格密度為10×10,從圖5(b)可以看出,本文算法相比于其他幾種算法在視點、光照、模糊、圖像壓縮變化條件下正確匹配率較高。
圖5 Oxford數(shù)據(jù)集運行結(jié)果示意Fig.5 Schematic diagram of Oxford dataset operation results
影像匹配是無人機影像處理的重要步驟,直接影響后期構(gòu)建地形圖和三維重建的精度。為了測試所提方法在無人機影像匹配中的性能,選取UAV-image-mosaicking-dataset數(shù)據(jù)集[26]進行匹配實驗,該影像由KC1600無人機搭載SonyNEX-7相機捕獲,分別包含61、182、51張圖像。相機焦距35 mm,每張圖像的分辨率為3 680 pixel×2 456 pixel,平均飛行高度為558、405、988 m。選取部分影像如圖6所示,其中圖6(a)和圖6(d)的地形高程變化很明顯,而其他2個影像的變化相對較小。圖6(a)中的地形高程為62~169 m,圖6(b)、圖6(c)的高程差小于25 m,圖6(d)的高程變化最大,為354~507 m。
圖6 無人機影像數(shù)據(jù)集Fig.6 UAV image dataset
SIFT和本文算法匹配效果對比如圖7所示,左圖為經(jīng)RANASAC算法提純后SIFT算法匹配效果圖,右圖為本文算法匹配效果圖,其中圖7(a)~圖7(d)分別表示相應(yīng)變化條件下的匹配效果。從圖7可以明顯看出,該無人機影像含有較多的相似干擾點,改進前的SIFT算法特征匹配點對較少,尤其是在邊緣和細節(jié)特征不明顯的影像中存在大量的匹配偏差和誤匹配,而本文所提方法特征匹配點對分布均勻,能夠正確、精準(zhǔn)地完成影像的特征匹配。
為了顯示所提方法具有明顯優(yōu)勢,對本文及其他4種算法所獲得的實驗數(shù)據(jù)做進一步的整理和分析。不同算法的匹配時長如表1所示。
表1 不同算法的匹配時長Tab.1 Comparison of matching times for different algorithms 單位:s
為了看起來更直觀,圖8展示了各種算法運行匹配時間對比折線圖??梢钥闯?對于以上5組數(shù)據(jù),ORB算法用時最短,本文算法次之,依次是ISIFT算法、SIFT算法、IKAZE算法。IKAZE算法雖使用二進制描述符但需要迭代計算解非線性方程,因此匹配速度較慢。ISIFT、SIFT算法均采用浮點型描述符,基于歐式距離進行相似性計算,且使用基于KNN的匹配算法,故運行時間較長。ORB算法尺度空間和描述符構(gòu)建比較簡單,匹配速度最快。本文算法從第2組尺度空間開始特征檢測與描述,減少了特征提取的工作量。同時,Vicinity-KNN算法減少了搜索特征點的迭代次數(shù)。因此,特征匹配的效率得到了顯著提高。
圖8 無人機影像數(shù)據(jù)集運行結(jié)果示意Fig.8 Schematic diagram of UAV image dataset operation results
圖8(b)展示了各種算法在不同場景下運行的正確匹配率,可以看出本文所提方法的效果較好,其中ORB算法的CMR為57.94%,SIFT算法的CMR為69.59%,匹配率均較低。ISIFT算法采用絕對距離和余弦相似度相結(jié)合的方式進行匹配,最后通過RANSAC算法進行特征精匹配,匹配率略高于傳統(tǒng)SIFT算法,為76.39%。IKAZE算法的CMR為83.54%。本文算法能夠在保持較少的運行時間下,使準(zhǔn)確率也得到保障,CMR為87.86%,相比于傳統(tǒng)SIFT算法提升了18%,為復(fù)雜環(huán)境下無人機影像配準(zhǔn)提供了保證。
針對傳統(tǒng)SIFT算法在無人機影像匹配中錯誤率較高、運行速度慢的缺陷,提出了一種改進SIFT的無人機影像匹配方法。為減少噪聲對無人機影像匹配的影響進行聯(lián)合雙邊濾波預(yù)處理,然后從第2組尺度空間進行特征提取,有效減少了特征提取的計算量;在特征描述方面,首次引入BEBLID與ISIFF算法相結(jié)合,顯著提高了運行速度;在特征匹配階段增加運動平滑性約束,利用鄰域信息改進KNN算法,對特征點進行初步匹配,結(jié)合自適應(yīng)局部仿射匹配算法實現(xiàn)精匹配,保障了算法的魯棒性。通過在標(biāo)準(zhǔn)圖像數(shù)據(jù)集和無人機影像數(shù)據(jù)集上進行多次實驗驗證,本文算法在保持較高正確匹配率的基礎(chǔ)上極大地縮短了運行時間,提取特征點分布更加均勻,可滿足無人機影像匹配的需求。