孫和利,彭政杰,李 娟,陳 鎮
(1. 武漢大學 遙感信息工程學院,湖北 武漢430079 ;2. 武漢市黃陂區木蘭房產測繪隊,湖北 武漢430300 ;3. 武漢市黃陂區木蘭房產測繪隊,湖北 武漢430300 ;4. 武漢市房產測繪中心,湖北 武漢430015)
基于GPU的無人機遙感影像快速拼接
孫和利1,彭政杰2,李 娟3,陳 鎮4
(1. 武漢大學 遙感信息工程學院,湖北 武漢430079 ;2. 武漢市黃陂區木蘭房產測繪隊,湖北 武漢430300 ;3. 武漢市黃陂區木蘭房產測繪隊,湖北 武漢430300 ;4. 武漢市房產測繪中心,湖北 武漢430015)

近年來,無人機遙感技術得到較快的發展,無人機遙感技術有著實時性強、靈活性強、低成本以及獲取影像分辨率高的特點,在處理應急響應任務時,運用無人機遙感技術,優勢極為明顯。在無人機進行對地航拍時,所獲取的是單張影像,由于像幅的限制,影像并不能覆蓋完整的目標區域,相鄰的多張影像都有著一定的重疊度,利用重疊區域來將多幅影像依次拼接,獲得目標區域的一幅完整影像。隨著各種傳感器技術的提升,無人機上的相機所獲取到的影像的分辨率越來越高,這對影像拼接的速度提出了新的要求。基于無人機遙感影像的特點,采用SIFT算子對無人機遙感影像進行拼接工作,并在CUDA平臺下對配準算法進行加速處理,從而提高影像拼接的速度。
無人機遙感;影像拼接;CPU;GPU;CUDA;影像配準
目前,根據無人機遙感技術的研究狀況分析來看,無人機遙感影像的像幅較小,需要大量的單幅影像才能完整地覆蓋整個研究區域,另外,如果要得到完整的正射影像,需要在拼接的過程中花費大量時間,所以,研究如何提高無人機遙感影像的拼接速度,對于各種災害的應急響應有著非常重要的意義。
影像匹配是進行影像拼接的前提,按照提取特征的層次來看,可以分為三大類:基于灰度,基于特征以及基于解譯的影像匹配[1]。無人機影像有幾個突出特點:很難精確計算相鄰兩幅影像之間的空間位置關系,各影像之間重疊度大小不一致,旋轉角變化沒有明顯規律,影像特征經常出現斷開情況,因此,基于尺度特征提取的影像匹配算法是相對而言最適合無人機遙感影像匹配的[2]。
2004年,LOWE正式提出一種基于尺度空間的、對圖像縮放、旋轉甚至仿射變換保持不變性的圖像局部特征描述算子——SIFT(scale invariant feature transform)算子,即尺度不變特征變換[3]。SIFT 算子有以下幾個特點:①特征點是在多尺度空間中提取出來的,因此實際影像在尺度發生變化時,不會影響特征點的提取;②計算特征點描述子的時候,計算了關鍵點的梯度主方向,因此SIFT算法具有了旋轉不變性;③對光照發生變化時并不敏感;④對仿射變換、噪聲等也有比較好的抗性。SIFT算子的基本流程是建立尺度空間,得到高斯金字塔影像,然后將相鄰高斯影像相減得到高斯差分尺度空間,在高斯差分尺度空間內,將每個點與相鄰所有點進行比較,從而得到備選的特征點[1],通過三維二次函數對關鍵點位置進行精確定位,把一個128維的特征向量作為特征點的描述符,從而提高了匹配的穩健性。
1.2 幾何變換模型求解
完成特征點匹配之后,就可以解算出影像之間的幾何變換模型。幾何變換模型的實質是單應矩陣。解算單應矩陣主要分為兩部分,一是解算相對單應矩陣,二是解算絕對單應矩陣。相對單應矩陣是指計算出相鄰兩幅影像的幾何變換模型,絕對單應矩陣是指得到每一幅影像在一個統一的坐標系中的幾何變換模型[4]。
2.1 CUDA平臺下SIFT算法設計
通過對基于SIFT算子的影像匹配算法的分析可知,在建立高斯金字塔影像、關鍵點探測、關鍵點主方向計算、相鄰兩幅影像關鍵點匹配這幾個計算步驟中,數據運算具有高度的并行性,相互之間的數據依賴程度很小,非常適合在CUDA平臺下進行并行計算的設計[5-6]。利用CPU-GPU對基于SIFT算子的影像匹配進行異構編程的算法流程如圖1所示。
推薦理由:本書從資深國際采購人員視角講解出口操作,在全球經濟環境嚴峻的當下,給予中國外貿人打破交易瓶頸的解決方案。本書的繁體版《外貿大神的32節客戶成交課》登陸香港書展,受到港澳臺讀者的認可與好評。
由圖1可知,在CUDA平臺下基于SIFT算子的影像配準主要分為以下幾個步驟:
1)將待配準的影像讀入到主存中,高斯核函數對應的卷積模板傳到GPU端的常數存儲器當中,在GPU端利用高斯模板對影像作卷積運算,生成高斯金字塔影像[7]。
2)將得到的高斯金字塔影像數據傳回到CPU端,將相鄰影像相減,生成高斯差分金字塔影像。繼續在CPU端進行極值點的檢測,并記錄所得到的極值點的坐標以及所在影像的尺度。

圖1 CUDA平臺下影像配準示意圖
3)得到備選的極值點坐標以及尺度信息之后,將這些數據傳入到GPU端,通過計算特征點的對比度,刪除一些低對比度的點,通過計算特征值比值去刪除一些邊緣響應點。去除掉這些多余的備選點之后,將剩下的特征點的坐標以及尺度記錄下來[8]。
4)在GPU端用另外一個內核函數繼續計算選出的關鍵點的主方向,得到每個關鍵點的梯度幅值以及方向角度。利用高斯權函數對關鍵點所在16×16領域的像素梯度信息進行加權運算,繪制成直方圖,得到關鍵點的主方向。
5)將關鍵點的信息以及主方向參數回傳到CPU端,在CPU端計算出關鍵點的描述子。由于在生成種子點以及特征向量長度歸一化計算過程中,存在較多的邏輯運算,數據之間存在較強的依賴性,計算強度也較小,利用GPU進行并行計算,效果并不好。因此關鍵點的描述子選擇在CPU端進行。
6)得到關鍵點的主方向以及描述子之后,接下來將這些數據傳入GPU端,進行特征點的匹配。通過將左影像的關鍵點的特征向量遍歷右影像的關鍵點,進行特征向量的歐氏距離運算,通過設定閾值,完成特征點的匹配。
CPU以及GPU二者有著各自的計算優勢,CPU更擅長邏輯性強的控制運算,GPU擅長高密度的并行運算,另外,由于CPU端與GPU端的數據傳輸速度較慢,因此,盡量將數據放在兩端進行計算,減少二者的數據訪問,縮短訪問延遲時間。若能充分利用CPU和GPU的計算優勢,那么影像拼接的速度就能大大提高。
2.2 GPU端并行計算實現
2.2.1 高斯金字塔影像生成
在CPU端將影像數據讀入到內存之后再傳入到GPU端的設備存儲器中,然后根據影像的分辨率確定并行計算所需要的網格數。利用GPU構建高斯金字塔影像需要設置6個內核函數,用于處理各個計算步驟。每一個內核函數需要分配相應的線程塊數以及線程塊內的線程數。線程塊數以及塊內線程數由所需要處理的影像數據的大小來決定。
根據對高斯濾波的特點分析可知,在對影像每個像素進行像素計算的時候,數據之間是相互獨立的,因此在進行高斯濾波計算時,可以將構建高斯金字塔的過程分解成一系列彼此獨立的卷積運算。卷積運算由兩部分組成:乘運算以及加和運算。
對影像進行高斯濾波計算,是分為行、列兩個維度進行的,設置兩個內核函數來完成行和列的卷積運算。對行和列進行卷積計算的過程是基本一致的,以行為例來說明。首先,將線程網格內的線程塊設置成二維,將影像數據分成多個部分映射到各個線程塊上,而線程塊內的每個線程分別去加權計算每一塊影像數據中的每個像素。當每個線程塊完成對影像的高斯濾波計算之后,得到了每個像素的卷積值,最后將計算結果組成高斯金字塔影像,并將該影像數據回傳到CPU端,用于高斯差分金字塔影像的生成。
2.2.2 關鍵點精確定位
特征點檢測完畢之后,會得到一個特征點的數據集合,該集合是線性結構的,可以通過設置一個內核函數,在每個線程塊內開辟512個線程,對特征點數據集合進行并行判斷計算,從而確定是否留下該備選點。
2.2.3 關鍵點匹配
關鍵點的匹配過程是將左影像的特征點的特征向量與右影像的特征點的特征向量進行歐氏距離運算。一般情況,影像上的特征點數目較多,影像分辨率越高,則數目會更多,同時每個特征向量有128維的數據,因此,如果用傳統的串行計算方法,速度會非常慢。根據對算法的分析可知,在進行特征點匹配的過程中,每個特征點之間沒有關聯,并且歐氏距離運算當中的差的平方計算也是獨立的。因此,可以分配線程塊來計算對應關鍵點間的歐氏距離,然后用線程來對應差的平方計算。最后通過三次歸約并行計算,得到累加結果,并對該結果進行開平方即可得到左右兩幅影像的歐氏距離。
2.3 實驗結果與分析
2.3.1 實驗環境
軟件環境:系統為Windows7,開發環境為Microsoft Visual Studio 2010,opencv 2.4,CUDA版本為5.0;
硬件環境:實驗機型為Lenovo E530,處理器為 Intel(R) Core(TM)i5-3210M CPU @2.50 GHz 2.50 GHz,內存為4.00 GB,64位操作系統,顯卡為NVIDIA GeForce GT 635M顯存為1 GB。
2.3.2 實驗結果
實驗一 通過不同大小的影像進行特征點提取以及特征匹配,將串行處理的計算結果與利用GPU加速后的結果進行對比,得到的數據如表1所示。

表1 不同大小的影像配準串并行計算對比
實驗二 將三條航帶共30張無人機影像分別在CPU端和CUDA平臺進行拼接(編號分別為 IMG_4903-IMG_4912,IMG_4966-IMG_4975,IMG_5027-IMG_5036),將串行拼接結果和利用CUDA平臺加速后的結果進行對比,得到的數據如表2所示。

表2 不同平臺下影像拼接耗時對比
2.3.3 實驗分析
通過實驗一可知,當影像像素較少時,串行計算和并行計算速度相差不大,但隨著影像像素的增加,經過GPU加速后的影像配準算法,速度有了明顯的提升,而且影像像素越多,所得到的加速效果也更加明顯。如今的無人機遙感影像的分辨率已經越來越高,需要處理的數據量也越來越大,而由實驗數據可知,當遙感影像的數據量足夠大的時候,僅僅是CPU端的串行處理,速度已經非常緩慢,而經過GPU加速后,速度有了明顯的提升,因此,可以得出結論,當需要處理的遙感影像數據越大的時候,GPU加速的效果就會更好。當影像像素較少的時候,CPU和GPU對影像拼接的速度相差并不是十分大,這是因為CPU端和GPU端進行數據傳輸會耗費一定量的時間,但是當數據量增大時,進行配準所耗費的時間逐步占據主導地位,因此,當數據量增大到一定程度時,通過CPU和GPU協同合作,可以有效提高對無人機遙感影像的配準速度。
通過實驗二可以看出,經過GPU加速后的無人機遙感影像拼接,時間上有了明顯的縮短。結合實驗一,隨著影像像素增加,對比串行處理和并行處理可知,利用GPU加速后的影像拼接所消耗的時間大大減少。
通過GPU的無人機遙感影像快速拼接技術,詳細介紹了無人機遙感影像拼接過程所需要的理論基礎,并在CPU端實現了無人機遙感影像的拼接,闡述了利用GPU對影像拼接過程中配準算法的加速原理,在CUDA平臺下,進行CPU-GPU異構編程,實現配準算法的加速,從而加速無人機遙感影像拼接。
[1] 張春美.特征點提取及其在影像匹配中的應用研究[D].鄭州:解放軍測繪學院,2008:4-7
[2] LOWE D G. Distinctive Image Features from Scale-invariant Keypoints[J].International Journal of Computer Vision, 2004,2(60): 91-110
[3] ZHANG Yongjun. Photogrammetric Processing of Low Altitude Image Sequences by Unmanned Airship[C].The International Archives of the Photogrammetry,Remote Sensing and Spatial Information Science,Beijing,2008:751-757
[4] 王勃.基于特征的無人機影像自動拼接技術研究[D].鄭州:解放軍測繪學院,2011
[5] HSU G S,LIN C Y ,WU J S.Real-time 3-D object Recognition Using Scale Invariant Feature Transform and Stereo vision [C].4th International Conference on Autonomous Robots and Agents,2009
[6] 蘇麗麗.基于CPU-GPU集群的分子動力學并行計算研究[D].大連:大連理工大學,2009
[7] KIM J,PARDK E,CUI Xuenan,et al.A Fast Feature Extraction in Object Recognition Using Parallel Processing on CPU and GPU[C]//IEEE International Conference on Systems, Man and Cybernetics,2009
[8] WARN S,EMENEKER W,COTHREN J,et al.Aceelerating SIFT on Parallel Architectures[C].IEEE International Conference on Cluster Computing and Workshops.2009
P237
B
1672-4623(2017)02-0009-03
10.3969/j.issn.1672-4623.2017.02.003
2016-09-27。
項目來源:國家自然科學基金資助項目(41101417)。
孫和利,副教授,研究方向為攝影測量與遙感。