羅 凱,徐俊武,楊 敏
武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,湖北 武漢430205
隨著時(shí)間推移,無人機(jī)技術(shù)和遙感技術(shù)發(fā)展迅速,利用無人機(jī)航拍遙感圖像對(duì)病蟲害治理已成為人們熟用的手段。由于無人機(jī)具有較強(qiáng)的靈活性、拍攝清晰等特點(diǎn),可馬上為災(zāi)情調(diào)查和病害防控提供資料。但同時(shí)無人機(jī)航拍存在視角小、易受天氣和地貌等因素的影響的問題,導(dǎo)致拍攝無法看清其全貌,單張圖像往往無法展示全部的目標(biāo)區(qū)域,或者目標(biāo)區(qū)域較為模糊,通常是拍攝多幅圖像進(jìn)行圖像拼接。圖像拼接是將兩幅或者多幅圖像拼成一幅清晰度較高的全景圖像。其中圖像拼接最重要的步驟就是圖像配準(zhǔn)。
Harris于1988年提出了Harris角點(diǎn)檢測(cè)算法[1],采用角點(diǎn)響應(yīng)函數(shù)R并提取R的局部最大值來提取特征點(diǎn)。潘梅等[2]改進(jìn)了Harris算法,利用無人機(jī)技術(shù)實(shí)現(xiàn)了圖像拼接,拼接質(zhì)量得到提升。2004年Lowe提出的尺度不變特征變換算法[3](scale-invariant feature transform,SIFT)對(duì)圖像縮放、旋轉(zhuǎn)有強(qiáng)適應(yīng)性。后來Bay在SIFT算法的基礎(chǔ)上,提出了加速健壯特征算法[4](speeded-up robust features,SURF),加入Hessian矩陣快速選取候選點(diǎn),并對(duì)其進(jìn)行非極大抑制。
針對(duì)KNN算法特征匹配耗時(shí)慢等問題提出一種基于圖像像素點(diǎn)經(jīng)緯度改進(jìn)KNN的無人機(jī)航拍圖像特征點(diǎn)配準(zhǔn)算法。首先利用SIFT算法提取圖像的特征點(diǎn)然后對(duì)其進(jìn)行描述,然后提取出無人機(jī)機(jī)載系統(tǒng)里拍攝的數(shù)據(jù)信息計(jì)算出圖像像素點(diǎn)的經(jīng)緯度,然后計(jì)算出兩張圖像重合部分,由于兩張圖像重合部分特征點(diǎn)經(jīng)緯度大致相似,因此利用這一特點(diǎn)加快KNN算法匹配特征點(diǎn)的時(shí)間,然后使用隨機(jī)抽樣一致算法(random sample consensus,RANSAC)算法[12]篩選出錯(cuò)誤匹配點(diǎn),最后圖像融合利用最佳縫合線算法。實(shí)驗(yàn)結(jié)果表明,本文所提出的算法是一種能夠快速匹配到正確特征點(diǎn)、效率高并且能夠得到一副清晰全景圖的航拍圖像拼接方法。
KNN匹配算法通過兩點(diǎn)向量之間的距離來判斷這兩個(gè)向量是否相似,一般選取K個(gè)與特征點(diǎn)相似的點(diǎn),K通常取2,如果選取的點(diǎn)相似度低,那么其中最相似的點(diǎn)為最近鄰匹配點(diǎn)。在進(jìn)行配準(zhǔn)時(shí),將配準(zhǔn)圖像中提取出來的特征向量與待配準(zhǔn)圖像中提取的特征向量求距離,找到兩個(gè)向量間最近的距離,將兩個(gè)匹配向量距離的比值與閾值進(jìn)行比較,判斷是否正確。由于無人機(jī)拍攝角度小,低高度飛行,相鄰拍攝圖像間存在大面積的重疊區(qū)域,并且正確的特征匹配對(duì)都在該重疊區(qū)域內(nèi),所以對(duì)全圖進(jìn)行特征提取,計(jì)算量非常大,效率也因此降低。
為了加快KNN算法的匹配時(shí)間,本課題組從無人機(jī)機(jī)載系統(tǒng)里提取出無人機(jī)拍攝時(shí)的經(jīng)緯度坐標(biāo)、高度和飛行速度等信息,通過這些信息計(jì)算出相鄰圖像的重疊區(qū)域和圖像像素點(diǎn)的經(jīng)緯度數(shù)據(jù),那么就可以通過計(jì)算出來的重疊區(qū)域,對(duì)該區(qū)域進(jìn)行特征提取,在特征匹配時(shí),只對(duì)該區(qū)域進(jìn)行匹配點(diǎn)對(duì)的判斷,由于相鄰圖像間重疊區(qū)域里的特征點(diǎn)經(jīng)緯度數(shù)據(jù)是大致相同的,可以很快地定位到待配準(zhǔn)圖像匹配點(diǎn)所在的位置,那么在該匹配點(diǎn)鄰域內(nèi)的其他特征點(diǎn)就可以快速匹配成功,從而不僅使得匹配成功的概率大幅提升,匹配的時(shí)間也將縮短。
1.1.1 重疊區(qū)域計(jì)算 在本次實(shí)驗(yàn)中無人機(jī)飛行時(shí)間為20 m/s,利用飛行航向偏角和成像中心點(diǎn)經(jīng)緯度數(shù)據(jù)建立相鄰圖像的位置關(guān)系,以此估計(jì)重疊區(qū)域大小,確定特征提取區(qū)域,計(jì)算具體步驟如下:
步驟1:設(shè)兩張相鄰照片為P和Q,圖像P中心點(diǎn)經(jīng)度為x1,緯度為y1;圖像Q中心點(diǎn)經(jīng)度為x2,緯度為y2,那么兩點(diǎn)之間距離l為:
其中地球半徑R=6 371.01 km,π取3.141 59。
2)注漿壓力變化。注漿過程中,壓力要在控制范圍內(nèi),防止出現(xiàn)過大或過小現(xiàn)象,若壓力過低,要檢查是否漏漿或查找漿液是否通過地下某管道流走;壓力過大,應(yīng)檢查是否管路或混合器被堵塞,施工時(shí)需要控制注漿壓力小于規(guī)定的注漿壓力值。
步驟2:根據(jù)每張圖像經(jīng)緯度數(shù)據(jù),通過代碼模擬出無人機(jī)飛行軌跡。
步驟3:圖像拍攝間隔為3 s,兩張圖像間轉(zhuǎn)向角度不會(huì)太大,從飛行軌跡可以發(fā)現(xiàn),拍攝圖片按照設(shè)定好的運(yùn)行軌跡飛行,從兩張圖像的航向偏角可知圖像走勢(shì)在既定航線上平移,將圖像放到同一坐標(biāo)系中,以P作為參考,圖像P中心點(diǎn)向下平移了l的距離到了Q的位置,重疊區(qū)域如圖1所示的區(qū)域S:
圖1 重疊區(qū)域Fig.1 Overlapping area
至此重疊區(qū)域?yàn)镻縮小寬度l的下半部分區(qū)域以及Q縮小寬度l的上半部分區(qū)域,重疊區(qū)域計(jì)算出來后,實(shí)驗(yàn)就只需要在該區(qū)域里進(jìn)行特征提取。
1.1.2 計(jì)算像素點(diǎn)經(jīng)緯度 每張圖片的圖像坐標(biāo)與其對(duì)應(yīng)的地面坐標(biāo)的相對(duì)位置關(guān)系是不變的。已知每張圖片的尺寸,機(jī)載系統(tǒng)數(shù)據(jù)里包含攝影中心的坐標(biāo)、攝像頭拍攝角度和拍攝高度,從而計(jì)算出圖像像素點(diǎn)經(jīng)緯度坐標(biāo)。利用經(jīng)緯度數(shù)據(jù)找到特征點(diǎn)所在區(qū)域,使用KNN算法快速匹配,完成圖片的拼接。計(jì)算圖像各點(diǎn)到圖像中心的距離,公式如下:
其中H為圖像拍攝高度,θ為拍攝角度,A為拍攝照片實(shí)際長(zhǎng)度,M為圖像像素長(zhǎng)度,N為圖像像素寬度,k為長(zhǎng)度與圖像像素的比例,以此計(jì)算出拍攝照片實(shí)際寬度,運(yùn)用勾股定理,根據(jù)k計(jì)算出每個(gè)像素點(diǎn)到中心像素點(diǎn)的橫向距離x和豎向距離y。
保持緯度大小不變,兩條距離為1 m的經(jīng)線之間經(jīng)度的間隔為0.000 05°,同理,保持經(jīng)度大小不變,兩條距離為1.1 m的緯線之間緯度的間隔為0.000 05°,這樣我們能通過每個(gè)像素點(diǎn)到中心像素點(diǎn)的距離計(jì)算出每個(gè)像素點(diǎn)的經(jīng)緯度。
那么基于經(jīng)緯度數(shù)據(jù)改進(jìn)的KNN算法主要過程為:計(jì)算兩張圖片重疊區(qū)域,在重疊區(qū)域進(jìn)行特征配準(zhǔn),選取特征點(diǎn)a,利用其經(jīng)緯度數(shù)據(jù)找到待配準(zhǔn)圖像中相同經(jīng)緯度數(shù)據(jù)的特征點(diǎn)b,因?yàn)橛?jì)算出來的經(jīng)緯度數(shù)據(jù)存在誤差,所以需要利用算法對(duì)像素點(diǎn)鄰域內(nèi)的所有特征點(diǎn)進(jìn)行匹配,找到特征點(diǎn)a在待配準(zhǔn)圖像中特征點(diǎn)b鄰域內(nèi)的最近鄰點(diǎn)m和次近鄰點(diǎn)n,如果兩點(diǎn)距離dam和dan的比值小于閾值τ,那么a和m特征點(diǎn)匹配成功。因此根據(jù)該改進(jìn)的算法,可以很快的將重疊區(qū)域內(nèi)的特征點(diǎn)匹配成功,極大地提高了效率。
本文選取SIFT算法進(jìn)行特征點(diǎn)粗提取,使用經(jīng)緯度數(shù)據(jù)加快KNN算法對(duì)特征點(diǎn)的粗匹配,通過歐式距離度量特征點(diǎn)是否匹配成功。再使用RANSAC算法監(jiān)測(cè)錯(cuò)誤匹配點(diǎn),該算法在最小二乘法的基礎(chǔ)上對(duì)一個(gè)樣本集合計(jì)算出能夠擬合樣本分布的模型,主要過程為隨機(jī)抽取匹配成功的特征點(diǎn)集合里n個(gè)匹配點(diǎn)對(duì),計(jì)算出這n個(gè)點(diǎn)對(duì)的初始變換矩陣M,然后將M驗(yàn)證集合里的其他點(diǎn)對(duì),如果大部分匹配點(diǎn)對(duì)滿足該矩陣模型,那么該模型是正確的,然后將滿足該模型的點(diǎn)記為內(nèi)點(diǎn),不滿足的記為外點(diǎn)。重復(fù)此操作就可以找到正確模型,篩選出最終準(zhǔn)確的匹配點(diǎn)對(duì)。
由于每張圖像拍攝時(shí)受外部因素影響,導(dǎo)致拼接出來的圖片存在鬼影和縫隙,因此需要選取合適的融合算法進(jìn)行拼接,以消除鬼影和拼接縫,最佳縫合線融合方法能使圖像達(dá)到無縫或者逼近無縫合成,使圖像合成的效果最佳??p合線檢測(cè)的公式如下[13-15]:
其中,Ecolor(x,y)代表圖像重疊區(qū)域像素點(diǎn)的顏色強(qiáng)度差值,Egeometry(x,y)代表圖像重疊區(qū)域像素點(diǎn)的結(jié)構(gòu)差值。其中Egeometry(x,y)采用改進(jìn)的梯度算子:
基于經(jīng)緯度的圖像拼接流程步驟如下:
步驟1:計(jì)算重疊區(qū)域,使用SIFT算法對(duì)該區(qū)域進(jìn)行特征提取;
步驟2:計(jì)算像素點(diǎn)經(jīng)緯度數(shù)據(jù),減小相鄰圖片特征點(diǎn)匹配區(qū)域,利用經(jīng)緯度數(shù)據(jù)加快KNN算法匹配時(shí)間,搜索出正確的匹配點(diǎn)對(duì);
步驟3:使用RANSAC算法對(duì)匹配的特征點(diǎn)對(duì)進(jìn)一步提純,篩選出錯(cuò)誤匹配點(diǎn),得到精匹配點(diǎn);
步驟4:使用最佳縫合線算法對(duì)配準(zhǔn)后的圖像進(jìn)行融合,可以很好的消除圖像之間的拼接縫,拼接完成后的全景圖會(huì)顯得更加自然。
選取某處松樹林的航拍圖像作為數(shù)據(jù)源,圖像由大疆無人機(jī)的拍攝所得,型號(hào)為DJIFC6310,測(cè)試平臺(tái)為CPU型號(hào)為AMD Ryzen 5@3.40 GHz,內(nèi)存為16 GB,軟件開發(fā)環(huán)境為VS Code1.47+OpenCV3.4.2,圖片分辨率為4 864×3 648,航拍高度H為113 m左右。
無人機(jī)機(jī)載系統(tǒng)里包含了每張圖像相對(duì)應(yīng)的Exif信息,比如拍攝時(shí)間,經(jīng)緯度信息和無人機(jī)飛行角度等多種信息,如表1所示。
為了驗(yàn)證改進(jìn)的KNN匹配算法效果,使用傳統(tǒng)SIFT算法與改進(jìn)的SIFT提取算法和KNN匹配算法分別做實(shí)驗(yàn)對(duì)照,本次實(shí)驗(yàn)使用匹配準(zhǔn)確率來評(píng)價(jià)算法是否適合無人機(jī)航拍圖像拼接,匹配準(zhǔn)確率通常采用均方誤差(RMSE)來評(píng)價(jià),公式如下:
表1 無人機(jī)POS信息Tab.1 UAV POSinformation
其中R代表均方誤差值,(xi,yi)為匹配圖像第i個(gè)匹配點(diǎn)的坐標(biāo),(x'i,y'i)為待匹配圖像對(duì)應(yīng)匹配點(diǎn)的坐標(biāo),N表示正確匹配對(duì)的數(shù)量。當(dāng)RMSE值越小,準(zhǔn)確度越高,反之準(zhǔn)確度越低。通過對(duì)無人機(jī)拍攝的10組航拍圖像進(jìn)行實(shí)驗(yàn),分別記錄圖像特征點(diǎn)匹配的正確率。
如圖2匹配結(jié)果所示,傳統(tǒng)算法全圖提取的特征點(diǎn)很多,存在許多錯(cuò)誤的匹配點(diǎn),通過本文的改進(jìn)算法對(duì)重疊區(qū)域進(jìn)行特征配準(zhǔn)實(shí)驗(yàn),特征點(diǎn)匹配對(duì)明顯變少,特征點(diǎn)分布基本集中在重疊區(qū)域里,匹配特征點(diǎn)大幅減少,這間接降低了誤匹配現(xiàn)象發(fā)生的概率。
圖3中實(shí)線代表SIFT算法RMSE值,虛線代表本文算法,可以對(duì)比看出,改進(jìn)的算法配準(zhǔn)精度比傳統(tǒng)算法高,結(jié)合圖3中的配準(zhǔn)結(jié)果,本文改進(jìn)算法配準(zhǔn)精度得到了明顯提升,配準(zhǔn)效率也提高了很多。
圖3 RMSE對(duì)比Fig.3 RMSE comparison
為了進(jìn)一步驗(yàn)證改進(jìn)后的算法相較于傳統(tǒng)SIFT算法在無人機(jī)林區(qū)航拍圖像拼接上的優(yōu)勢(shì),本次實(shí)驗(yàn)選取無人機(jī)飛行軌跡中的多幅圖像進(jìn)行拼接實(shí)驗(yàn),實(shí)驗(yàn)圖像如圖4所示,通過圖4的6張圖像進(jìn)行地理坐標(biāo)計(jì)算,通過飛行軌跡計(jì)算圖像間重疊區(qū)域,使用改進(jìn)算法對(duì)重疊區(qū)域進(jìn)行特征配準(zhǔn),再使用最佳縫合線算法對(duì)配準(zhǔn)后的圖像進(jìn)行融合,拼接結(jié)果如圖5所示。從圖5中可以看出:本文改進(jìn)的配準(zhǔn)算法結(jié)合最佳縫合線算法在很大程度上消除了圖像拼接誤差,融合效果好,沒有明顯的鬼影和拼接縫,進(jìn)一步證明了本文算法的可行性。
圖4 實(shí)驗(yàn)圖像Fig.4 Experimental images
圖5 圖像融合結(jié)果Fig.5 Image fusion result
松材線蟲病治理的關(guān)鍵在于病蟲的監(jiān)測(cè),目前許多松林區(qū)依然依靠人工檢查的方式,效率不高,因此利用無人機(jī)技術(shù)以及圖像拼接技術(shù)已成為防治松材線蟲病的重要手段。針對(duì)航拍圖像易受旋轉(zhuǎn)、尺度變化的影響,本文使用傳統(tǒng)的SIFT算法提取特征點(diǎn),結(jié)合無人機(jī)POS系統(tǒng)存儲(chǔ)的地理數(shù)據(jù)改進(jìn)KNN算法,特征點(diǎn)匹配效率變高,然后利用RANSAC算法對(duì)特征匹配點(diǎn)進(jìn)一步提純,實(shí)現(xiàn)了局部松樹林區(qū)域圖像拼接技術(shù),更加方便了樹林管理員采集得了松材線蟲病的松樹數(shù)量和具體地理位置,能夠更加快速治理好這一傳染病。