韓敏 閆闊 秦國(guó)帥
隨著無(wú)人機(jī)航拍技術(shù)的發(fā)展,近年來(lái),其在地圖測(cè)繪,危險(xiǎn)區(qū)域安全巡檢,地質(zhì)環(huán)境與災(zāi)害評(píng)估等相關(guān)領(lǐng)域得到了廣泛應(yīng)用.無(wú)人機(jī)航拍圖像具有高清晰度,大比例尺的特點(diǎn).然而,在航拍過程中,無(wú)人機(jī)由于受到自身飛行高度,相機(jī)視角等參數(shù)的影響,拍攝的單張圖像覆蓋面積過小,不能展示更全面的信息.因此,為擴(kuò)大視野范圍,得到覆蓋區(qū)域更寬廣的圖像,需要對(duì)拍攝的多張航拍圖像進(jìn)行拼接,獲得寬視角的全景圖[1?3].圖像拼接[4]是將相互間有重疊部分的兩幅或多幅圖像合成一幅大型的無(wú)縫高分辨率圖像的一種技術(shù).航拍圖像的拼接一般包括3個(gè)步驟[5]:圖像預(yù)處理,圖像配準(zhǔn),圖像融合.其中,圖像配準(zhǔn)是圖像拼接中較為關(guān)鍵的一步,它是圖像合成技術(shù)的基礎(chǔ)[6],其結(jié)果會(huì)對(duì)最后的拼接圖像產(chǎn)生重要的影響.
圖像配準(zhǔn)方法主要分為基于灰度相關(guān)的配準(zhǔn),基于變換域的配準(zhǔn)和基于特征的圖像配準(zhǔn)3類[7].其中,基于特征的圖像配準(zhǔn)方法通過提取圖像的局部不變特征對(duì)圖像的重合部分進(jìn)行配準(zhǔn),因其算法穩(wěn)健、快速,已成為研究的熱點(diǎn).常用的特征提取算法包括Harris[8],SUSAN(Smallest univalue segment assimilation nucleus)[9],SIFT(Scale in-varian feature transform)[10?11],SURF(Speed-up robust features)[12?13],ORB(Oriented FAST and rotated BRIEF)[14?15],BRISK(Binary robust invariant scalable keypoints)[16?17],KAZE[18?19]和AKAZE(Accelerated-KAZE)[20]等.其中,Harris和SUSAN算法直接提取角點(diǎn)或邊緣特征,不具備較好的環(huán)境適應(yīng)能力.SIFT和SURF通過構(gòu)造高斯尺度空間得到高斯差分尺度空間,并在其上進(jìn)行斑點(diǎn)檢測(cè),魯棒性較強(qiáng),但其不能較好地保留細(xì)節(jié)與邊緣信息.ORB算法結(jié)合了一種方向性FAST(Feature from accelerated segment test)與旋轉(zhuǎn)二進(jìn)制魯棒獨(dú)立元素特征BRIEF(Binary robust independent elementary feature),計(jì)算速度快,但不具備尺度不變性.BRISK利用AGAST(Adaptive and generic corner detection based on the accelerated segment test)提取角點(diǎn)特征,利用簡(jiǎn)單的像素灰度值比較構(gòu)建二進(jìn)制特征子,具備尺度與旋轉(zhuǎn)不變性,計(jì)算速度快,但魯棒性差.KAZE和AKAZE是基于非線性的特征提取與匹配算法,魯棒性強(qiáng),匹配率高.
由于KAZE算法在光照不變性、旋轉(zhuǎn)不變性、尺度不變性、穩(wěn)定性等方面具有較好的性能,本文針對(duì)其算法實(shí)時(shí)性較差,航拍圖像易受光照、旋轉(zhuǎn)變化、尺度變化等影響以及基于K近鄰(K-nearest neighbor,KNN)的特征匹配算法耗時(shí)較長(zhǎng)等問題,提出了一種基于改進(jìn)KAZE的無(wú)人機(jī)航拍圖像拼接算法.該方法首先利用加速的KAZE算法提取圖像的特征點(diǎn),使用二進(jìn)制特征描述子FREAK[21]對(duì)特征點(diǎn)進(jìn)行描述,然后采用Grid-KNN算法對(duì)特征點(diǎn)進(jìn)行粗匹配,使用隨機(jī)一致性算法(Random sample consensus algorithm,RANSAC)算法剔除錯(cuò)誤的匹配點(diǎn)對(duì)并計(jì)算幾何變換模型[22],最后采用加權(quán)平均算法對(duì)圖像進(jìn)行融合.為驗(yàn)證本文算法的有效性,將本文算法與SIFT算法,ORB算法和KAZE算法在Mikolajczyk和Schmid提供的數(shù)據(jù)集[23]與無(wú)人機(jī)航拍圖像上進(jìn)行了仿真實(shí)驗(yàn),并在特征點(diǎn)提取速度、特征匹配速度、匹配正確率和配準(zhǔn)精度四個(gè)方面進(jìn)行了評(píng)價(jià).實(shí)驗(yàn)結(jié)果表明,本文所提算法是一種穩(wěn)定、精確度高、拼接效果良好的無(wú)人機(jī)航拍圖像拼接方法.權(quán)衡特征點(diǎn)提取速度,特征匹配速度,匹配正確率和配準(zhǔn)精度四個(gè)方面,本文算法更適合無(wú)人機(jī)航拍影像的拼接.
KAZE算法是基于非線性尺度空間的特征檢測(cè)算法.該算法利用非線性擴(kuò)散濾波器構(gòu)建具有任意步長(zhǎng)的尺度空間,在該尺度空間內(nèi),圖像的灰度在平緩的區(qū)域能夠快速擴(kuò)散,在邊緣處以較慢的速度擴(kuò)散.因此,利用這種非線性方法處理圖像時(shí),能夠較好的保留細(xì)節(jié)與邊緣信息,同時(shí)模糊噪聲.
KAZE算法主要包括5個(gè)步驟[18]:
步驟1.非線性尺度空間構(gòu)造.利用可變傳導(dǎo)擴(kuò)散方法和加性算子分裂算法(Additive operator splitting,AOS)構(gòu)建一個(gè)呈金字塔型的非線性尺度空間,如式(1)所示.
式中,L為高斯濾波后的圖像,I為單位矩陣,t為時(shí)間,Al(Li)為圖像L在維度l上的傳導(dǎo)矩陣.
步驟2.特征點(diǎn)檢測(cè)與精確定位.在不同尺度空間中將每個(gè)點(diǎn)與其鄰域內(nèi)的所有點(diǎn)進(jìn)行比較,尋找歸一化后的Hessian矩陣局部極大值點(diǎn),獲得特征點(diǎn)對(duì)應(yīng)的位置和尺度,Hessian矩陣的計(jì)算公式如式(2)所示.
式中,σ為尺度參數(shù)σi的整數(shù)值;Lxx,Lyy,Lxy均為L(zhǎng)的二階微分.理論上,選擇當(dāng)前及其上下尺度上的大小為σi×σi的3個(gè)矩形窗口作為比較范圍.但為了提高搜索速度,通常情況下將矩形窗口的尺寸固定為3×3,即將每一個(gè)像素點(diǎn)與其同尺度上的8個(gè)相鄰點(diǎn),以及上下相鄰尺度上的各9個(gè)點(diǎn)進(jìn)行比較.在檢測(cè)到特征點(diǎn)的位置后,通過子像元插值精確定位特征點(diǎn).根據(jù)泰勒展開式求解亞像素的精確位置.
式中x為特征點(diǎn)的位置坐標(biāo),特征點(diǎn)的亞像素坐標(biāo)解為:
步驟3.特征點(diǎn)主方向確定.特征點(diǎn)的主方向由局部圖像結(jié)構(gòu)確定.在搜索半徑為6σi的圓內(nèi)對(duì)所有鄰點(diǎn)的一階微分值Lx和Ly高斯加權(quán),然后將所有的微分值作為向量空間中的點(diǎn)集,并在角度為60?的滑動(dòng)扇形窗口中疊加點(diǎn)集中的向量,對(duì)整個(gè)圓形區(qū)域進(jìn)行遍歷,以獲得最長(zhǎng)向量.該向量對(duì)應(yīng)的角度即為主方向.
步驟4.特征向量描述.在特征點(diǎn)的主方向確定后,使用M-SURF算法為每一個(gè)特征點(diǎn)構(gòu)建特征向量.若特征點(diǎn)的尺度參數(shù)為σi,則以特征點(diǎn)為中心,在其梯度圖像上取一個(gè)大小為24σi×24σi的矩形窗口,并將窗口劃分為大小為9σi×9σi的4×4個(gè)子區(qū)域.相鄰子區(qū)域有交疊,交疊區(qū)域的寬度為2σi.使用σ1=2.5σi的高斯核對(duì)每一個(gè)子區(qū)域進(jìn)行加權(quán),得到長(zhǎng)度為4的子區(qū)域描述量dv.
式中,Lx,Ly分別為高斯濾波后的圖像L在x,y處的微分.然后,使用尺寸為4×4的σ2=1.5σi的高斯核對(duì)每一個(gè)子區(qū)域的dv進(jìn)行加權(quán),并進(jìn)行歸一化處理.最終,特征點(diǎn)由一個(gè)64維的特征矢量表示.
步驟5.特征向量匹配.使用兩特征向量之間的歐氏距離對(duì)其進(jìn)行匹配,歐氏距離越小,兩個(gè)特征向量越相似,計(jì)算公式如下:
式中,(x1,y1)和(x2,y2)為兩特征向量的坐標(biāo).
KAZE算法雖然在光照不變性,旋轉(zhuǎn)不變性,尺度不變性及穩(wěn)定性上具有較好的性能,但實(shí)時(shí)性較差,難以滿足高分辨,大比例尺的航拍圖像拼接的速度要求.因此,本文對(duì)KAZE算法進(jìn)行了改進(jìn).首先,在非線性尺度空間構(gòu)建階段,采用快速顯式擴(kuò)散算法(Fast explicit diffusion,FED)算法代替AOS算法,加速非線性尺度空間圖像的生成[20].其次,在特征向量描述階段使用二進(jìn)制特征描述子FREAK代替浮點(diǎn)型描述子M-SURF,從而加速特征向量的生成與減少描述子所占內(nèi)存空間.最后,在特征向量匹配階段,使用Hamming距離替代原來(lái)的歐氏距離,從而減少計(jì)算時(shí)間提高特征向量的匹配速度.
非線性偏微分方程不存在解析解,因此KAZE算法采用了AOS算法求解方程的近似解.AOS算法在近似求解方程時(shí)需要在每個(gè)時(shí)間步長(zhǎng)上大量求解線性方程組才能獲得解集,計(jì)算消耗時(shí)間過多.文獻(xiàn)[20]采用了FED算法替代AOS算法近似求解非線性偏微分方程,從而提升算法速度.使用FED算法構(gòu)造非線性尺度空間不僅能夠避免AOS算法計(jì)算耗時(shí)問題而且能使構(gòu)造的尺度空間更加準(zhǔn)確.因此,本文在非線性尺度空間構(gòu)造階段將FED算法內(nèi)嵌到金字塔架構(gòu)框架結(jié)構(gòu)中,以加速尺度空間的構(gòu)造.
KAZE算法采用M-SURF算法對(duì)特征點(diǎn)進(jìn)行描述,最終生成一個(gè)64維的浮點(diǎn)型特征向量,該向量所占內(nèi)存較大,且生成時(shí)計(jì)算復(fù)雜,速度較慢.二進(jìn)制特征描述子根據(jù)關(guān)鍵點(diǎn)鄰域像素灰度值的比較生成,計(jì)算速度快,所占內(nèi)存空間小.因此,本文采用二進(jìn)制特征描述子代替浮點(diǎn)型描述子M-SURF,從而加速特征描述子的建立,同時(shí)減少對(duì)內(nèi)存空間的需求.常用的二進(jìn)制描述子主要包括BRIEF算子,ORB算子,BRISK算子和FREAK算子.其中,FREAK算子在光照,旋轉(zhuǎn)及尺度變化的情況下均能保持較好的性能[23].因此,本文選用FREAK算子對(duì)KAZE算法提取的特征點(diǎn)進(jìn)行描述.
FREAK算法是一種模擬人類視網(wǎng)膜結(jié)構(gòu)的快速二進(jìn)制描述子構(gòu)建方法.FREAK算法的采樣模式如圖1所示.其仿照視網(wǎng)膜中神經(jīng)節(jié)細(xì)胞的分布模式,位于最中心的為特征點(diǎn),其他圓心為采樣點(diǎn),離特征點(diǎn)中心越近,采樣點(diǎn)越密集,反之越稀疏.在采樣時(shí),需要對(duì)所有采樣點(diǎn)使用大小與當(dāng)前采樣點(diǎn)同心圓半徑成正比的高斯核進(jìn)行高斯平滑.
圖1 FREAK算法采樣模式Fig.1 FREAK algorithm sampling mode
采樣后,使用濾波后的圖像信息構(gòu)造FREAK描述子.FREAK描述子最終為一個(gè)二進(jìn)制序列,由采樣點(diǎn)對(duì)的強(qiáng)度比較結(jié)果級(jí)聯(lián)而成,用F表示,則:
式中,Pα表示感受域?qū)?N為特征向量的維數(shù),T(Pα)的定義如下:
FREAK采樣點(diǎn)雖然只有幾十個(gè),但其組合而成的采樣點(diǎn)對(duì)可能達(dá)到幾千個(gè),信息存在冗余.因此,需要使用類似ORB算子學(xué)習(xí)算法提取出相關(guān)性較小的點(diǎn)對(duì),最終選取前512位作為描述子.為確保描述子具有旋轉(zhuǎn)不變性,在構(gòu)造描述子時(shí)需要確定特征方向.如圖2所示,FREAK描述子的特征點(diǎn)周圍有43個(gè)采樣點(diǎn),可產(chǎn)生903個(gè)采樣點(diǎn)對(duì),主方向O將由45對(duì)中心對(duì)稱的采樣點(diǎn)確定,主方向O的計(jì)算公式如下:
式中,G為確定主方向的特征點(diǎn)對(duì)的集合,M是集合G中采樣點(diǎn)的對(duì)數(shù),是采樣點(diǎn)中心的坐標(biāo).
圖2 FREAK算法主方向確定Fig.2 Decision orientation of FREAK
由于使用FREAK算子對(duì)特征向量進(jìn)行描述,因此在特征向量匹配階段使用兩個(gè)特征向量間的漢明距離對(duì)向量進(jìn)行匹配.使用漢明距離進(jìn)行特征向量的匹配只需要進(jìn)行異或操作就可以計(jì)算出結(jié)果,計(jì)算速度快,能夠大大提升算法的效率.
在提取特征點(diǎn),建立特征向量描述后,需要對(duì)特征向量進(jìn)行匹配.基于KNN的匹配算法是一種常用的特征匹配方法.其首先在待配準(zhǔn)圖像的所有特征點(diǎn)中,依次為每一個(gè)參考圖像的特征點(diǎn)搜索出與之距離最近的2個(gè)點(diǎn);然后,將最近鄰距離與次近鄰距離的比值和設(shè)定的閾值進(jìn)行比較.若比值小于設(shè)定的閾值,則認(rèn)為該特征點(diǎn)與其距離最近的待配準(zhǔn)圖像中的特征點(diǎn)是一組匹配點(diǎn)對(duì).然而,這種方法需要每次都遍歷待配準(zhǔn)圖像中的所有特征點(diǎn),若參考圖像中的特征點(diǎn)數(shù)量為N,待配準(zhǔn)圖像中的特征點(diǎn)數(shù)量為M,則總的遍歷次數(shù)為M×N,耗時(shí)較長(zhǎng).因此,在特征匹配時(shí)增加運(yùn)動(dòng)平滑性約束,以縮小特征匹配區(qū)域.正確的匹配在運(yùn)動(dòng)空間中是平滑的,運(yùn)動(dòng)平穩(wěn)相鄰的特征在運(yùn)動(dòng)空間中具有一致性[24].因此,相鄰特征點(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)行搜索即可.匹配區(qū)域示意圖如圖3所示,若參考圖像區(qū)域a的首個(gè)匹配點(diǎn)出現(xiàn)在待配準(zhǔn)圖像區(qū)域b中,則區(qū)域a中的余下特征點(diǎn)均在區(qū)域b的3×3鄰域內(nèi)尋找匹配點(diǎn).因此,總的遍歷次數(shù)將遠(yuǎn)小于M×N,從而減少匹配時(shí)間,加快匹配速度.
圖3 Grid-KNN匹配區(qū)域示意圖Fig.3 The diagram of Grid-KNN matching area
為方便鄰域的選取,在特征點(diǎn)匹配時(shí)引入網(wǎng)格框架,將圖像均勻劃分為n×n的網(wǎng)格,然后以網(wǎng)格為單位,進(jìn)行特征匹配.基于Grid-KNN特征匹配算法主要包含以下步驟:
步驟1.劃分網(wǎng)格.將參考圖像與待配準(zhǔn)圖像均勻劃分為n×n個(gè)網(wǎng)格;
步驟2.尋找首個(gè)正確匹配點(diǎn)對(duì).選取參考圖像中的一個(gè)網(wǎng)格aij,并在aij中選取特征點(diǎn)Ak.采用基于KNN的搜索方法,找到Ak在待匹配圖的所有特征點(diǎn)中的最近鄰點(diǎn)Bk和次近鄰點(diǎn)Ck,若dAkBk與dAkCk(其中,d表示兩點(diǎn)間距離)比值小于設(shè)定閾值τ,則認(rèn)為Ak與Bk是正確的匹配點(diǎn)對(duì),此時(shí)結(jié)束搜索;否則,選取aij中的下一個(gè)特征點(diǎn),重復(fù)上述搜索過程,直到找到首個(gè)正確的匹配點(diǎn)對(duì);
步驟3.建立鄰域.求取步驟2找到的正確匹配點(diǎn)對(duì)中Bk所處網(wǎng)格bij的3×3鄰域R;
步驟4.尋找所有正確匹配點(diǎn)對(duì).依次選取網(wǎng)格aij內(nèi)剩余的特征點(diǎn),按照步驟2的搜索過程,找到網(wǎng)格aij和區(qū)域R中所有剩余的正確匹配點(diǎn)對(duì);
步驟5.對(duì)步驟1中參考圖像的剩余網(wǎng)格,重復(fù)步驟2~4,直至所有網(wǎng)格遍歷完畢.
無(wú)人機(jī)航拍圖像在特征匹配后,需要計(jì)算幾何變換參數(shù)進(jìn)行變換,并對(duì)配準(zhǔn)后的圖像做融合處理.本文在使用加速KAZE算法提取航拍圖像特征點(diǎn),并采用FREAK對(duì)提取的特征點(diǎn)進(jìn)行描述后,使用Grid-KNN算法對(duì)特征點(diǎn)搜索,進(jìn)行粗匹配,特征點(diǎn)匹配程度采用漢明距離進(jìn)行衡量.影像區(qū)域特征具有相似性,經(jīng)常會(huì)導(dǎo)致相鄰特征點(diǎn)的誤匹配,通過Grid-KNN算法對(duì)特征點(diǎn)進(jìn)行匹配后,往往會(huì)存在錯(cuò)誤的匹配點(diǎn)對(duì).因此,使用RANSAC算法剔除誤匹配點(diǎn)對(duì),對(duì)匹配結(jié)果進(jìn)一步提純.在獲得精匹配的特征點(diǎn)對(duì)后,使用RANSAC算法求解幾何變換矩陣,將待配準(zhǔn)圖像經(jīng)變換矩陣變換后與參考圖像進(jìn)行疊加.由于圖像之間存在亮度與色彩差異,需要對(duì)疊加后的圖像進(jìn)行融合,以消除拼接縫.使用加權(quán)平均融合算法對(duì)疊加的圖像進(jìn)行融合,計(jì)算公式如下:
式中,R1為圖像1的區(qū)域,R2為圖像2的區(qū)域,d1,d2為加權(quán)值,且d1+d2=1,0 步驟1.特征點(diǎn)檢測(cè).使用加速的KAZE算法檢測(cè)出航拍圖像的特征點(diǎn); 步驟2.特征點(diǎn)描述.采用二進(jìn)制特征描述子FREAK對(duì)檢測(cè)出的特征點(diǎn)進(jìn)行描述; 步驟3.特征點(diǎn)粗匹配.采用Grid-KNN算法搜索出參考圖像與待配準(zhǔn)圖像特征點(diǎn)中的正確匹配點(diǎn)對(duì); 步驟4.特征點(diǎn)精匹配.使用RANSAC算法對(duì)匹配的特征點(diǎn)對(duì)進(jìn)一步提純,將可信度較低的匹配對(duì)進(jìn)行過濾,得到精匹配結(jié)果; 步驟5.建立幾何變換模型.選取單應(yīng)性矩陣作為相鄰兩幅圖像間的變換模型,使用RANSAC算法求解其變換參數(shù); 步驟6.圖像融合.使用加權(quán)平均融合算法對(duì)配準(zhǔn)后的圖像進(jìn)行融合,使重疊區(qū)域的像素按照相應(yīng)的權(quán)重進(jìn)行疊加,以消除拼接圖像的拼接縫,使圖像色彩,亮度過度更加自然,真實(shí). 圖4 基于改進(jìn)KAZE算法無(wú)人機(jī)航拍圖像拼接流程Fig.4 The process of UAV aerial image mosaic based on improved KAZE algorithm 在圖像拼接中,衡量一種算法是否適合無(wú)人機(jī)航拍圖像的重要指標(biāo)包括特征點(diǎn)提取與匹配速度,匹配正確率和配準(zhǔn)精度.因此,針對(duì)本文提出的基于改進(jìn)KAZE的無(wú)人機(jī)航拍圖像拼接算法,采用了標(biāo)準(zhǔn)數(shù)據(jù)集和大量無(wú)人機(jī)航拍圖像進(jìn)行實(shí)驗(yàn),并將本文算法與SIFT算法,ORB算法和KAZE算法進(jìn)行比較,從特征點(diǎn)提取速度,特征匹配速度,匹配正確率和配準(zhǔn)精度四個(gè)方面對(duì)各算法進(jìn)行定量的評(píng)價(jià)與分析.實(shí)驗(yàn)運(yùn)行環(huán)境采用CPU為Intel core i3,3.50GHz,內(nèi)存為4GB,64位Win10操作系統(tǒng)的PC機(jī).本文實(shí)驗(yàn)的所有算法基于OpenCV2.4.10實(shí)現(xiàn),編程語(yǔ)言為C++語(yǔ)言,編程環(huán)境為Visual Studio 2010.實(shí)驗(yàn)數(shù)據(jù)采用Mikolajczyk和Schmid提供的數(shù)據(jù)集中的Leuven數(shù)據(jù),Boat數(shù)據(jù)和圖5中所示的無(wú)人機(jī)航拍圖像.Mikolajczyk和Schmid提供的數(shù)據(jù)集包含了具有不同幾何和光照強(qiáng)度變換的幾個(gè)圖像集,每個(gè)圖像集包含了6個(gè)圖像序列,每個(gè)序列的后5張圖像是對(duì)第1張圖像的變換.Leuven數(shù)據(jù)和Boat數(shù)據(jù)分別用于驗(yàn)證圖像在光照變化,旋轉(zhuǎn)變化和尺度變化下的算法性能;圖5所示的各組航拍圖像的分辨率均為4000×3000,分別對(duì)應(yīng)光照變化,旋轉(zhuǎn)變化和尺度變化的情形. 圖5 實(shí)驗(yàn)數(shù)據(jù)Fig.5 Experimental data 表1 特征點(diǎn)提取平均用時(shí)比較(ms)Table 1 The comparison of feature point extraction average time(ms) 特征點(diǎn)提取速度評(píng)價(jià)采用提取每個(gè)特征點(diǎn)的平均用時(shí)進(jìn)行比較,平均用時(shí)越短,速度越快.表1給出了分別使用SIFT算法,ORB算法,KAZE算法和本文所提算法對(duì)Leuven數(shù)據(jù),Boat數(shù)據(jù)和圖5所示的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行特征點(diǎn)提取的平均用時(shí)比較.從表中可以看出ORB算法特征點(diǎn)提取時(shí)間最少,本文算法次之,SIFT算法和KAZE算法特征點(diǎn)提取時(shí)間最長(zhǎng).這是因?yàn)镺RB算法采用FAST方法檢測(cè)特征點(diǎn),且在特征描述時(shí)只需對(duì)特征點(diǎn)的鄰域進(jìn)行二值測(cè)試,因此特征提取速度性能較好.SIFT算法構(gòu)造高斯尺度空間進(jìn)行特征點(diǎn)檢測(cè),KAZE算法構(gòu)造非線性尺度空間進(jìn)行特征點(diǎn)檢測(cè),且二者均采用浮點(diǎn)型描述子進(jìn)行特征描述,因此二者較為耗時(shí).本文算法,雖然需要構(gòu)造非線性尺度空間進(jìn)行特征點(diǎn)檢測(cè),但是采用二進(jìn)制描述子描述特征,因此速度與SIFT算法和KAZE算法相比得到了大幅提升. 特征匹配速度評(píng)價(jià)采用每個(gè)特征點(diǎn)的平均匹配用時(shí)進(jìn)行比較,平均用時(shí)越短,速度越快.表2給出了分別使用SIFT算法,ORB算法,KAZE算法和本文所提算法對(duì)Leuven數(shù)據(jù),Boat數(shù)據(jù)的前2個(gè)圖像序列和圖5所示的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行特征匹配時(shí)平均用時(shí)比較.其中,SIFT算法,ORB算法,KAZE算法均采用基于KNN的特征匹配算法,本文算法的網(wǎng)格大小選為10×10.從表中可以看出SIFT算法和KAZE算法耗時(shí)最長(zhǎng),ORB算法次之,本文算法耗時(shí)最短.SITF算法和KAZE算法使用歐氏距離進(jìn)行特征相似性度量,且使用基于KNN的特征匹配算法,因此,耗時(shí)較長(zhǎng).ORB算法雖然與本文算法一樣采用漢明距離進(jìn)行特征相似性度量,但其采用的基于KNN的特征匹配算法相較于本文的Grid-KNN算法遍歷次數(shù)較多,耗時(shí)較長(zhǎng). 表2 特征匹配平均用時(shí)比較(ms)Table 2 The comparison of feature matching average time(ms) 匹配正確率CMR(Correct matching rate)為匹配正確點(diǎn)對(duì)數(shù)與所有匹配點(diǎn)對(duì)數(shù)之比,其定義如下: 式中,N為所有匹配點(diǎn)對(duì)數(shù),Nc為匹配正確點(diǎn)對(duì)數(shù).CMR是一種客觀的評(píng)價(jià)指標(biāo),其值越大,匹配性能越好.圖6給出了使用4種算法對(duì)Leuven數(shù)據(jù)和Boat數(shù)據(jù)進(jìn)行匹配的匹配正確率結(jié)果.從圖中可以看出KAZE算法和本文算法在光照,旋轉(zhuǎn)和尺度變化下具有較好的性能,SIFT算法次之,ORB算法最差.因此,本文算法抗光照變化,抗旋轉(zhuǎn)和抗尺度變化性能更好,穩(wěn)定性更強(qiáng).表3給出了使用4種算法對(duì)圖5所示航拍圖像進(jìn)行匹配的匹配正確率的結(jié)果比較.從表中的結(jié)果可以看出ORB算法的匹配正確率最低,SIFT算法次之,KAZE算法和本文算法最好,進(jìn)一步驗(yàn)證了本文算法在光照,旋轉(zhuǎn)和尺度變化下具有較好的性能與穩(wěn)定性. 圖6 Leuven數(shù)據(jù)和Boat數(shù)據(jù)匹配正確率比較Fig.6 The comparison of correct matching rate for Leuven data and Boat data 配準(zhǔn)精度直接影響著最終的拼接結(jié)果,其采用參考圖像與待配準(zhǔn)圖像之間的距離均方根誤差RMSE(Root mean square error)進(jìn)行評(píng)價(jià),RMSE的計(jì)算公式如下: 式中,M為監(jiān)測(cè)點(diǎn)總數(shù),(xi,yi)為參考圖像中監(jiān)測(cè)點(diǎn)的坐標(biāo),為待配準(zhǔn)圖像中經(jīng)單應(yīng)性矩陣變換后的監(jiān)測(cè)點(diǎn)的坐標(biāo).RMSE的值越小,兩者間的距離越小,則配準(zhǔn)精度越高,拼接效果越好,反之,拼接效果越差. 表3 匹配正確率比較Table 3 The comparison of correct matching rate 圖7給出了使用4種算法對(duì)Leuven數(shù)據(jù)和Boat數(shù)據(jù)進(jìn)行配準(zhǔn)后的均方根誤差結(jié)果.從圖中可以看出KAZE算法和本文算法在光照,旋轉(zhuǎn)和尺度變化下均方根誤差最小,具有較好的配準(zhǔn)精度,SIFT算法略次之,ORB算法最差. 表4給出了使用4種算法對(duì)圖5所示航拍圖像配準(zhǔn)后的均方根誤差的結(jié)果比較.從表中的結(jié)果可以看出ORB算法的誤差最大,配準(zhǔn)精度最差,SIFT算法較好,KAZE算法和本文算法擁有最好的配準(zhǔn)精度.本文算法的配準(zhǔn)精度雖略低于KAZE算法,但略高于SIFT算法,同時(shí)遠(yuǎn)高于ORB算法,說明本文算法在光照,旋轉(zhuǎn)和尺度變化的情況下具有較好的配準(zhǔn)精度,能夠適用于無(wú)人機(jī)航拍圖像拼接.圖8給出了使用本文算法對(duì)圖5中的3組實(shí)驗(yàn)數(shù)據(jù)進(jìn)行配準(zhǔn)后的結(jié)果.從圖中可以看出配準(zhǔn)后的圖像無(wú)明顯的錯(cuò)位,配準(zhǔn)效果較好. 由上述實(shí)驗(yàn)結(jié)果可知,ORB算法雖具有較快的特征點(diǎn)提取速度,但其在追求特征點(diǎn)提取速度時(shí)大大犧牲了匹配正確率與配準(zhǔn)精度;SIFT算法和KAZE算法的匹配正確率與配準(zhǔn)精度較高,但其特征點(diǎn)提取速度與特征匹配速度過慢;本文算法在保持較高的匹配正確率與配準(zhǔn)精度的同時(shí)保持了一定的特征點(diǎn)提取速度,并且特征匹配速度較快.綜上所述,均衡特征點(diǎn)提取速度、特征匹配速度、匹配正確率與配準(zhǔn)精度四個(gè)方面,本文算法更具優(yōu)越性. 表4 配準(zhǔn)精度比較Table 4 The comparison of matching accuracy 圖7 Leuven數(shù)據(jù)和Boat數(shù)據(jù)匹配精度比較Fig.7 The comparison of matching accuracy for Leuven data and Boat data 圖8 圖像配準(zhǔn)結(jié)果Fig.8 The results of matching 使用本文算法對(duì)圖5中的三組圖像進(jìn)行配準(zhǔn),在使用加權(quán)平均算法對(duì)配準(zhǔn)后的圖像進(jìn)行融合,最終的拼接結(jié)果如圖9所示.從圖中可以看出,拼接后的圖像無(wú)鬼影、無(wú)拼接縫,且圖像亮度變化均勻,保真度高,拼接效果較好. 針對(duì)航拍圖像易受光照、旋轉(zhuǎn)變化、尺度變化等影響,KAZE算法實(shí)時(shí)性較差以及基于K近鄰的特征匹配算法耗時(shí)較長(zhǎng)等問題,本文提出了一種基于改進(jìn)KAZE的無(wú)人機(jī)航拍圖像拼接算法,并與SIFT算法,ORB算法和KAZE算法進(jìn)行了對(duì)比.該方法首先利用加速的KAZE算法提取圖像的特征點(diǎn),采用二進(jìn)制特征描述子FREAK進(jìn)行特征點(diǎn)描述,然后使用Grid-KNN算法對(duì)特征點(diǎn)進(jìn)行初步匹配,采用RANSAC算法對(duì)匹配的特征點(diǎn)對(duì)精匹配并計(jì)算幾何變換模型,最后使用加權(quán)平均算法對(duì)圖像進(jìn)行融合.實(shí)驗(yàn)結(jié)果表明,本文算法在特征匹配速度,匹配正確率和匹配精度上擁有較好的性能的同時(shí)保持了一定的特征點(diǎn)提取速度.與KAZE算法和SIFT算法相比,本文算法在保持匹配正確率和配準(zhǔn)精度的同時(shí)提升了特征點(diǎn)提取速度與匹配速度;與ORB算法相比,本文算法雖然在特征點(diǎn)提取速度上有所減慢,但是較大提高了特征匹配速度、匹配正確率和配準(zhǔn)精度.綜合特征點(diǎn)提取速度、特征匹配速度、匹配正確率與配準(zhǔn)精度四個(gè)方面,本文算法較上述算法更適合無(wú)人機(jī)航拍影像的拼接. 圖9 圖像拼接結(jié)果Fig.9 The results of stitching5 實(shí)驗(yàn)結(jié)果及分析
5.1 特征點(diǎn)提取速度對(duì)比
5.2 特征匹配速度對(duì)比
5.3 匹配正確率對(duì)比
5.4 配準(zhǔn)精度對(duì)比
5.5 圖像拼接結(jié)果
6 結(jié)論