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