張戰(zhàn)偉,劉培明,趙 熹
(1.山東明嘉勘察測繪有限公司,山東 淄博 255086; 2.中國礦業(yè)大學環(huán)境與測繪學院,江蘇 徐州 221116)
遙感技術在多個方面得到了應用,特別是近年來衛(wèi)星遙感的快速發(fā)展,衛(wèi)星傳感器采樣精度、細度、頻率不斷提升[1]。衛(wèi)星遙感數據的應用不斷拓展,多源衛(wèi)星遙感數據的融合應用需求及場景也越來越多[2]。這些遙感數據的應用需要統(tǒng)一的空間數據基準,遙感影像的幾何校正是其中一項重要的處理任務,基于三角網進行遙感影像幾何校正是常有方式[3-4]。伴隨長時間序列、高分辨率影像及實時性強的處理需求,快速的遙感影像幾何校正處理算法的重要性更加突出。
遙感數據的處理效率提升的手段可以概括為兩個方面:一是增加硬件計算資源,目前云計算、超級計算機、計算機集群等技術均是該范疇;二是提高算法并行度及代碼質量,主要包括多核CPU并行、GPU并行、代碼優(yōu)化、算法優(yōu)化等方法。本文從第二個角度開展研究,采用的具體技術包括OpenMP,GPU通用計算、代碼優(yōu)化等。OpenMP是一種編程模型,其具有復雜度低、移植性好等優(yōu)點,可方便的實現代碼并行及多線程化。隨著多核CPU的應用,很多研究人員選擇OpenMP實現遙感數據多核CPU并行處理算法[5-6]。圖形處理單元(GPU)具有算力強、體積小、能耗低等優(yōu)點,目前是遙感數據處理優(yōu)先選擇的計算機硬件,GPU在遙感數據校正、融合、識別、分類等諸多方面得到廣泛應用[7-9]。為了推動GPU在通用計算中的應用,Nvidia在2006年推出CUDA編程框架并進行了持續(xù)完善,使其成為通用GPU編程的主要工具,此外OpenCL,C++AMP也可用于通用GPU編程。代碼優(yōu)化,通過高效的編碼語句、合理的數據結構、科學的邏輯控制來提升代碼質量,常有的代碼優(yōu)化方法包括代碼外提、變量歸納、循環(huán)展開、常量合并、數據重用[10],其不依賴具體計算機硬件,優(yōu)化方法可以在算法運行全流程中發(fā)揮作用[11]。
目前針對基于三角網遙感影像幾何校正并行算法設計及優(yōu)化相關的研究較少,因此為了提升遙感影像幾何校正的處理效率,本文從CPU并行、GPU并行、數據結構優(yōu)化、處理算法編碼優(yōu)化等角度對基于三角網遙感影像幾何校正算法進行了研究。
基于三角網的遙感影像幾何校正算法核心步驟包括三個部分:點坐標初始化、三角網變換參數計算、坐標關系映射,算法其他主要流程還包括影像基本信息獲取、坐標經度值及緯度值獲取、目標(成果)影像參數計算、影像坐標信息計算、目標影像文件寫入。
本文并行算法圍繞著基于三角網遙感影像幾何校正算法的三個核心步驟設計,根據計算硬件特點,面向多核CPU及GPU分別設計,圖1為算法設計的整體框架。
1)多核CPU采用OpenMP編程接口實現算法并行,本文設計了點坐標初始化、三角網變換參數計算、坐標關系映射三個函數,每個函數均根據影像特點采用兩層for循環(huán)結構,在外層循環(huán)嵌入for循環(huán)并行控制語句。2)GPU采用CUDA實現算法并行,算法包括數據拷貝(主機到設備、設備到主機)及三個核函數。算法并行設計體現在三個核函數中,包括點坐標初始化、三角網變換參數計算、坐標關系映射三個函數。
基于三角網遙感影像幾何校正算法的實現,關鍵算法包括三角網生成、幾何變換關系計算、像素點歸屬判斷、像素值計算、影像生成等。
1)三角網生成:根據不同坐標系統(tǒng)下的控制點坐標信息,采用Delaunay三角剖分算法構建三角網。2)幾何變換關系計算:基于生成的三角網,使用仿射變換分別計算每個三角形的幾何變換關系。每個三角形具有唯一的變換關系,可以將衛(wèi)星影像上的像素點映射到地理坐標系中的對應位置。3)像素點歸屬判斷:遍歷衛(wèi)星影像上的每個像素點,采用重心法確定其歸屬于哪個三角形。4)像素值計算:根據像素點所屬的三角形,將該三角形的變換關系應用于該像素,計算其在目標坐標系中的對應位置,采用雙線性插值計算像素值。5)校正影像生成:將變換后的像素點坐標和像素值填充到新的柵格數據中,生成校正后的衛(wèi)星影像利用基于三角網進行遙感影像幾何校正的方法,針對不同的區(qū)域具有不同的變換關系,由于每個三角形都有獨立的變換關系,因此該方法能夠應用于不規(guī)則形變的影像。
本文基于CUDA實現基于三角網遙感影像幾何校正GPU并行算法,算法1為偽代碼,見圖2。
1)定義控制點和三角網結構:ControlPoint和Triangle結構用于存儲控制點以及它們之間的三角網關系。2)實現并行變換核函數:核函數(apply_transformation_kernel)并行處理影像中的每個像素。基于線程索引計算像素坐標,然后遍歷三角剖分,尋找包含當前像素坐標的三角形。找到對應三角形后,計算仿射變換關系并應用于當前像素坐標,得到新的坐標。最后,使用插值方法計算像素值。3)設置參數:設置核函數參數,包括blockDim和gridDim,合理的設置參數能夠充分利用GPU資源,提高影像幾何校正的執(zhí)行速度。4)設計輔助函數:包括像素點歸屬判斷函數(is_point_inside_triangl)、仿射變換計算函數(compute_affine_transformation)和像素插值計算函數(interpolate_pixel_value)。
不同的代碼編寫方法會導致算法執(zhí)行時間的明顯區(qū)別,代碼優(yōu)化策略需要根據不同算法進行有針對性的設計。本文從訪問及存儲優(yōu)化、代碼邏輯優(yōu)化兩個方面進一步對并行算法的代碼進行優(yōu)化。
1)訪問及存儲優(yōu)化。采用結構體及嵌套來描述及傳遞坐標點及三角網信息值,通過精簡算法過程數據的結構,降低內存占用量和傳輸量,從而減少無效信息、降低冗余。此外,在內存組織形式上進行了優(yōu)化,采用同類數據就近聚合策略,實現內存合并訪問,從而進一步降低訪存成本。2)代碼邏輯優(yōu)化。代碼邏輯優(yōu)化是針對具體處理方法編碼進行的優(yōu)化,優(yōu)化策略更有針對性,雖然優(yōu)化方法可移植性價值不高,但是優(yōu)化邏輯可以作為其他處理方法的參考。在點坐標與三角網空間位置關系判斷實現過程中,采用同類項合并設計方案,具體包括函數合并及循環(huán)合并優(yōu)化,降低循環(huán)復雜度及計算復雜度,從而減少冗余操作。
實驗使用MODIS(Moderate-resolution Imaging Spectroradiometer)數據,MODIS是美國宇航局研制的大型空間遙感儀器,包括Terra,Aqua衛(wèi)星,該數據具有廣泛的用途,可用于地球表面溫度、陸地覆蓋、云層、氣溶膠、水蒸氣、溫度分布和森林火災等方面。圖3為本文實驗使用的MODIS遙感影像數據,其中圖3(a)為原始影像,圖3(b)為幾何校正后的影像。
實驗投入的計算機硬件具體配置:CPU為Intel Core i7-9700 (3.0 GHz, 8 CPUs);顯卡為NVIDIA GeForce GTX 1660,顯存容量6 GB;內存容量為8 GB;磁盤分別為HDD及SSD,其中HDD轉速7 200 rpm,SATA3.0接口、緩存64MB,SSD讀取速度3 500 MB/S、寫入速度3 000 MB/S。
本文針對不同的影像大小進行了實驗,影像大小介于33 MB~864 MB之間。對多核CPU及GPU并行計算運行時間進行了統(tǒng)計,并與單線程算法進行了對比。本文采用加速比評價并行算法的加速效果,加速比計算如式(1)所示。
(1)
其中,S為加速比;T1為單線程算法的執(zhí)行時間;T為并行算法的執(zhí)行時間。
表1為不同影像大小在不同硬件方案下的運行時間及多核CPU,GPU相對單線程的加速比結果,圖4為不同影像大小情況下影像計算時間及總體處理時間的統(tǒng)計及對比結果。
表1 不同計算方案統(tǒng)計結果 s
從表1,圖4可以看出,當采用8核CPU時,多核CPU并行算法獲得了4.35x-6.43x的加速比;GPU并行算法獲得了1.32x-15.93x的加速比,且隨著影像大小的增加,加速效果越明顯,其中當影像大小為863 MB時,獲得了15.93x的加速比。此外,從圖4可以看出計算部分的加速效果要明顯優(yōu)于數據處理整體時間的加速效果,主要原因是讀、寫部分執(zhí)行時間的影響,為了系統(tǒng)分析讀、寫及計算的時間成本,本文進行了多組實驗,如表2所示。
表2 不同方案數據處理時間對比結果
表2為影像大小486 MB時不同硬件方案數據處理時間的統(tǒng)計結果。從表2可以看出讀(I)、寫(O)的執(zhí)行時間占比相對較大,因此造成整體加速效果不是非常明顯,主要原因是影像校正算法屬于訪存密集型任務,主要瓶頸受制于內存帶寬及I/O效率,大量耗時操作用于數據傳遞。從表2可以看出SSD相對HDD在I/O方面具有明顯優(yōu)勢,因此在并行算法執(zhí)行時可以優(yōu)先選擇SSD。雖然I/O影響了基于三角網的遙感影像幾何校正并行算法的加速效果,但是相對單線程算法,多核CPU及GPU并行算法仍獲得了明顯的加速效果,特別是GPU并行算法,影像數據量越大加速效果越明顯。
本文以提升遙感影像幾何校正的處理效率為目標,從并行算法設計、代碼優(yōu)化角度對基于三角網的遙感影像幾何校正算法進行了研究,經過多組實驗分析,得到了較為理想的加速效果。本文的主要貢獻如下:
1)基于CUDA實現了基于三角網遙感影像幾何校正GPU并行算法,當影像大小為863 MB時,獲得了15.93x的加速比。
2)基于OpenMP實現了基于三角網遙感影像幾何校正多核CPU并行算法,當采用8核CPU時,獲得了4.35x-6.43x的加速比。
3)在數據結構體優(yōu)化、常量合并、循環(huán)體優(yōu)化等方面對算法代碼進行了優(yōu)化,獲得了較為明顯的加速效果。
由于遙感影像幾何校正計算復雜度相對較低,數據的I/O成本相對計算成本比例較高,從而導致并行算法加速的綜合效率提升并不明顯,因此如何縮短遙感數據的I/O時間,降低I/O成本是需要研究的內容。下一步,本文將基于GPU多流、疊加I/O及計算等技術或策略開展相關研究,以進一步提升遙感數據處理的整體效率。