摘 要: 基于通用GPU并行計算技術,結合遙感圖像數(shù)據(jù)融合處理特點,利用NVIDIA公司的CUDA編程框架,在其 GPU平臺上對BROVEY變換和YIQ變換融合算法進行了并行研究與實現(xiàn)。實驗結果表明,隨著遙感圖像融合算法的計算復雜度、融合處理的問題規(guī)模逐漸增加,GPU并行處理的加速性能優(yōu)勢也逐漸增大,GPU通用計算技術在遙感信息處理領域具有廣闊的應用前景。
關鍵詞: 遙感圖像融合; GPU; 并行; CUDA; 優(yōu)化
隨著遙感傳感器技術的發(fā)展,獲取遙感數(shù)據(jù)的方式已經(jīng)由單一可見光模式發(fā)展成多種傳感器模式。每一種傳感方式獲取的數(shù)據(jù)信息相對單一,融合不同傳感方式獲取的數(shù)據(jù)信息可以有效提高數(shù)據(jù)信息量,提供更為精確的遙感圖像信息。
POHL C和GENDEREN J L[1]對圖像融合給出了如下定義:通過特定算法將兩幅或多幅圖像合成一幅新的圖像。圖像融合可以分為像素級、特征級和決策級3個層次,其中像素級融合需要處理的數(shù)據(jù)量最大,計算過程也最復雜。隨著遙感圖像的時間、空間和光譜分辨率逐步提高,融合算法處理結果的精度要求同時在逐步提高,導致圖像融合的處理速度需求逐步增大,計算量大、計算過程復雜的遙感圖像融合在處理速度上面臨著新的問題與挑戰(zhàn)。近幾年來,基于GPU的異構平臺在通用計算領域得到快速發(fā)展,已經(jīng)在許多方面得到了有效應用[2-4],為遙感圖像融合快速處理技術研究提供了新的思路。
結合CPU-GPU異構平臺面向通用計算領域的性能優(yōu)勢,針對遙感圖像融合面臨的處理速度問題,通過分析圖像融合處理過程的特點,將像素級融合的BROVEY變換和YIQ變換融合算法在基于GPU平臺上進行了并行研究與實驗,獲得了突出的性能。
1 研究背景
1.1 CUDA編程模型
NVIDIA公司的CUDA[5]語言是基于C語言的擴展,主要使用API調(diào)用底層功能進行處理與計算,使熟悉C語言的編程人員能夠快速運用CUDA開發(fā)通用計算程序。在CUDA結構中, CPU端被稱為Host,GPU端被稱為Device,采用SIMT(Single Instruction Multiple Thread)模式執(zhí)行程序[5]。用戶把可以放在GPU上并行執(zhí)行的程序組織稱為Kernel內(nèi)核程序。在CPU端執(zhí)行的程序稱為Host宿主程序,控制Kernel的啟動、加載或保存與GPU的通信數(shù)據(jù),以及執(zhí)行部分的串行計算。Device端在執(zhí)行時創(chuàng)建很多的并行線程Thread,線程組織成線程塊Block,而Block再組成網(wǎng)格Grid。每個Thread執(zhí)行自己的程序Kernel,Block內(nèi)的線程通過共享存儲器(Shared Memory)分享數(shù)據(jù)。并行線程通過GPU上的眾多計算內(nèi)核實現(xiàn)并行處理,實現(xiàn)整個程序的性能加速[5]。
1.2 兩種典型的像素級融合算法
遙感圖像融合在遙感圖像配準基礎上進行,待融合的兩幅遙感圖像具有相同大小,每個像素點的融合或是獨立執(zhí)行,或者只需要少量周圍像素點數(shù)據(jù)協(xié)助執(zhí)行。
1.2.1 BROVEY變換融合算法
BROVEY變換融合算法[6]是一種基于色度的變換,屬于彩色空間的方法。它是將多光譜的色彩空間進行分解得到色彩與亮度,再用其全色圖像進行計算。這種算法像素點彼此單獨執(zhí)行,具有良好的并行性,算法執(zhí)行簡單,在保留了較多光譜信息的同時,也具有較快的處理速度。
1.2.2 YIQ變換融合算法
YIQ顏色系統(tǒng)是一種用于電視信號傳輸NTSC制式的彩色編碼系統(tǒng)。其中,Y對應亮度信息,I、Q分量反映圖像與硬件相關的彩色信息。YIQ變換融合算法[7]屬于彩色空間的方法,計算較為復雜,像素點在變換到YIQ分量后,需要使用直方圖匹配,具有一定的并行性。
2 并行設計及優(yōu)化實現(xiàn)
2.1 優(yōu)化策略
2.1.1 數(shù)據(jù)異步傳輸
遙感圖像融合CUDA并行計算程序在CPU-GPU異構平臺上執(zhí)行,該平臺上CPU與GPU工作任務不同。CPU為GPU準備執(zhí)行數(shù)據(jù),同時執(zhí)行邏輯控制等復雜事務。CPU加載數(shù)據(jù)時,采用同步方式啟動傳輸指令;傳遞數(shù)據(jù)時,CPU處于空閑狀態(tài),計算資源不能得到充分利用。優(yōu)化時CPU采用異步方式傳輸數(shù)據(jù),啟動傳輸指令后直接進行后續(xù)事務處理,使CPU執(zhí)行與加載數(shù)據(jù)重疊,提高資源利用率。
2.1.2 訪存優(yōu)化
GPU線程對全局存儲器(Global Memory)進行一次訪存需要400~600個時鐘周期,對共享存儲器(Shared Memory)、寄存器(Register)等快速存儲部件訪存一次只需要4個左右的時鐘周期。優(yōu)化時充分利用GPU顯存中的多層次存儲部件,發(fā)揮快速存儲部件讀取數(shù)據(jù)優(yōu)勢,最大化提高執(zhí)行性能。
2.2 融合算法的CUDA并行實現(xiàn)
綜合融合算法CUDA優(yōu)化策略,進行融合算法CUDA程序并行設計與實現(xiàn)時,重點研究以下問題。
2.2.1 線程塊參數(shù)與網(wǎng)格參數(shù)的設置
CPU-GPU異構計算模式中,每個線程塊只能擁有有限線程數(shù),每個流處理單元SP最多可同時執(zhí)行256整數(shù)倍線程,根據(jù)遙感圖像數(shù)據(jù)以二維方式組織的特點,將塊Block設置為16×16二維形式,每個塊有256個線程,使每個SP單元能夠滿負載執(zhí)行,最大限度地提高資源利用率。設計實現(xiàn)時,線程網(wǎng)格大小的設置與圖像大小有關,網(wǎng)格的寬度設置成(imagewidth+dimBlock.x-1)/dimBlock.x,高度設置成(imageheight+dimBlock.y-1)/dimBlock.y,保證線程塊是一個整數(shù)。線程塊規(guī)模與遙感圖像規(guī)模有關,與GPU處理核心數(shù)量無關。這樣同一問題能夠在不同型號的GPU上執(zhí)行,形成CUDA并行程序良好的可移植性。
2.2.2 線程網(wǎng)格規(guī)模大于圖像規(guī)模
令i為線程網(wǎng)格寬度索引號,j為線程網(wǎng)格高度索引號,imagewidth為圖像寬度,imageheight為圖像高度。通過加入if(i<imagewidth&&j< imageheight)語句控制線程執(zhí)行對應像素點。空執(zhí)行線程最多可以為255×I+255×J-255×255個,其中,I是線程網(wǎng)格的寬度,J是線程網(wǎng)格的高度。與具有的大量執(zhí)行線程相比,空執(zhí)行線程占很小比例,幾乎不需要執(zhí)行時間。與并行加速獲取的提升時間相比,空執(zhí)行少量線程浪費的時間可以忽略。
3 實驗與結果分析
實驗硬件為:Inter(CR) Core(TM) i5四核2.67 GHz CPU,2 GB內(nèi)存,NVIDIA GeForce GTX 460 GPU,1 GB顯存,336個SP計算單元。操作系統(tǒng)為Linux Ubuntu 10.10,串行程序為C語言實現(xiàn)的標準程序。融合的圖像是IKONOS掃描北京故宮的遙感衛(wèi)星圖像。
(3)在相同的計算復雜度下,圖像規(guī)模使GPU計算核心執(zhí)行達到飽和時,speedupexecute趨于穩(wěn)定甚至下降。但因為計算資源的優(yōu)勢,總加速性能仍有提升。
從圖中可以看出,圖像規(guī)模(如256×256和512×512)小時, Pexecute小,算法計算復雜度的不同導致加速比出現(xiàn)不同情況。因此,為進一步提升加速性能,融合算法CUDA并行執(zhí)行需要最大化地提高Pexecute。
從實驗結果可以得到,隨著算法計算復雜度與問題規(guī)模的增大,加速性能逐漸增加。實驗表明,GPU并行處理能夠很好地應用于遙感圖像融合的算法,將GPU應用到遙感加速處理領域具有很好的應用前景。
本文從遙感圖像融合處理背景出發(fā),闡述了研究融合處理加速的意義,然后針對近些年興起的CPU-GPU異構加速平臺,對BROVEY變換和YIQ變換遙感圖像融合算法進行了CUDA并行優(yōu)化實現(xiàn)。研究表明,GPU通用計算技術在遙感圖像融合領域具有廣闊的應用前景。
參考文獻
[1] POHL C, Van Genderen J L. Multisensor image fusion in remote sensing: concepts,methods and applications[J].International Journal of Remote Sensing, 1998,19(5):823-854.
[2] OWENS J, LUEBKE D,GOVINDARAJU N,et al. A survey of general-purpose computation on graphics hardware[J]. Computer Graphics Forum, 2007,26(1):80-113.
[3] GARLAND M, GRAND S, NICKOLLS J, et al. Parallel computing experiences with CUDA[J]. IEEE Micro, 2008,28(4):13-27.
[4] LAHABAR S, AGRAWAL P, NARAYANAN P J. High performance pattern recognition on GPU[J]. National Conference on Computer Vision Pattern Recognition Image Processing and Graphics, 2008:154-159.
[5] NVIDIA. NVIDIA CUDA compute unified device architecture,Programming Guide,Version 2.0.NVIDIA,2008.[EB/OL].http//www.nvidia.com/object/cude_home_new.html.
[6] GILLESPIE A R, KAHLE A B, WALKER R E. Color enhancement of highly correlated images-II. channel ratio and chromaticity transformation techniques[J]. Remote Sensing of Environment,1987,22:343-365.
[7] Dong Guangjun, Huang Xiaobo, Dai Chenguang. Comparison and analysis of fusion algorithms of high resolution Imagery[C].International Symposium on Photoelectronic Detection and Imaging: Related Technologies and Applications, Proceedings of SPIE, 2008,6625(66250H).