王淼
【摘 要】隨著遙感圖像數(shù)據(jù)規(guī)模的不斷擴大與融合算法計算復雜度的增大,遙感圖像的快速融合成為很多遙感處理步驟的關(guān)鍵一環(huán)。計算機技術(shù)快速發(fā)展,CPU多核架構(gòu)逐漸普及,為了充分利用多核處理器資源,Matlab提供了并行計算模型。本文選取了基于小波變換和IHS空間的圖像融合算法進行并行化設計,利用Matlab并行計算工具箱與分布式計算服務器進行任務分割,實現(xiàn)了算法的并行化。實驗結(jié)果表明,并行化處理可以有效縮短圖像融合的時間,獲得良好的加速比,驗證了并行算法的高效性,對進一步研究并行圖像處理有一定的指導意義。
【關(guān)鍵詞】Matlab;圖像融合;IHS;小波變換;并行計算
0 引言
隨著遙感技術(shù)的飛速發(fā)展,由于信息獲取的途徑越來越多,從而得到了各式各樣的遙感數(shù)據(jù),而且數(shù)據(jù)量也越來越大。圖像融合技術(shù)的誕生使多源遙感數(shù)據(jù)得到了充分的利用,產(chǎn)生了比單一信息源更精確、更可靠的估計和判斷。由于數(shù)據(jù)規(guī)模的不斷增大,基于單處理器的傳統(tǒng)的串行圖像融合算法已經(jīng)無法滿足計算量不斷增加的需求,基于多處理器或集群的并行計算使圖像的快速融合成為了可能,為高效地分析遙感圖像提供了有效的解決途徑。
當前流行的并行化工具與多核計算平臺有很多,如OpenMP、MPI等[1],還有基于GPU并行計算的GUDA語言[2]。為高效利用多核處理器進行并行計算,增強計算能力,Mathwork 公司推出了Matlab 分布式計算服務器與并行計算工具箱[3],可以實現(xiàn)對大規(guī)模數(shù)據(jù)進行快速、便捷地并行任務劃分,而且具有良好的可擴展性。
近年來,小波變換理論被廣泛應用于圖像融合并行處理當中,有基于MPI的復小波變換的遙感圖像并行融合算法[4],有基于GPU的小波變換圖像融合快速實現(xiàn)算法等[5]。本文在Matlab并行計算環(huán)境下,分析了基于小波變換與IHS空間的圖像融合算法流程,將讀入內(nèi)存數(shù)據(jù)規(guī)模較大的遙感圖像像元矩陣進行均等任務劃分,分配給不同的處理單元進行融合計算,實現(xiàn)了算法的并行化,為提高大規(guī)模矩陣的計算速度與多核處理器的利用率提供了并行處理方法。
1 Matlab并行計算
Matlab并行計算架構(gòu)主要依賴兩個工具:并行計算工具箱(PCT)和分布式計算服務器(MDCS)[6],用戶可以通過使用以上兩個工具完成多種并行計算任務,例如基于多核平臺、多處理器平臺的并行計算以及基于集群平臺的并行計算。PCT與MDCS可以自動幫助用戶完成參與計算的多個核、多個處理器或多個集群節(jié)點之間的底層數(shù)據(jù)通信,用戶則可以更加專注于并行算法的設計,于此同時,Matlab提供了各式各樣的函數(shù)工具箱,以便用戶高效便捷地完成并行計算任務。
典型的Matlab并行計算架構(gòu)包含Client、Job Manager和Worker,它們既可以運行在網(wǎng)絡中的多臺計算機上,也可以運行在同一臺計算機上。用戶通過Client可以編輯代碼,輸入各種命令,將Job提交給Job Manager;Job Manager負責Worker的管理和Task分配,將Job中的Task分配到Worker上執(zhí)行,并收集Worker的執(zhí)行結(jié)果返回給Client;Worker負責執(zhí)行由Job Manager分配的Task,并將執(zhí)行結(jié)果返回Job Manager。其中,Job作為任務的基本單元,由Client向Job Manager提交,而Task則作為任務的基本單元被Job Manager分配到各個Worker中去,一個Job可以只包含一個Task,也可以包含多個Task。
2 IHS小波融合算法并行設計
2.1 基本原理
IHS小波融合算法1999年由Nunez 提出[7],通過將傳統(tǒng)的IHS變換與小波變換相結(jié)合,既有效地增強了融合圖像的空間分辨率,又較好的保持了融合圖像的光譜特性,減小了光譜失真。該方法先將待融合多光譜圖像作由RGB空間到IHS空間的轉(zhuǎn)換,然后利用小波變換將得到的多光譜圖像的I分量與全色圖像進行小波分解、融合與重構(gòu),最后將得到的新的Inew分量與原先的H、S分量進行IHS逆變換得到最終的融合結(jié)果。
2.2 并行算法實現(xiàn)
在進行并行IHS小波融合算法設計之前,首先需要分析在整個串行算法中各個函數(shù)調(diào)用的頻率以及函數(shù)執(zhí)行消耗的時間,這個過程可以由Matlab提供的Profiler剖析器來完成,經(jīng)過分析可知,程序中將多光譜圖像的I分量與高分辨率全色圖像進行小波融合花費處理器時間最多,這是由于進行逐層小波分解與重構(gòu)時,計算復雜度不斷升高,計算量不斷加大。為了充分利用多核處理器資源,采用均等原則劃分計算量較大的復雜計算任務,使這部分過程可以在Matlab環(huán)境下實現(xiàn)并行化,該算法并行化過程見圖1。
本文將并行小波融合算法設計成一個獨立的模塊函數(shù)P-Fusion()[8],該模塊函數(shù)主要完成的工作是:圖像像元矩陣的小波分解與重構(gòu)、由小波系數(shù)陣以3X3為窗口大小計算像元梯度矩陣和融合圖像小波系數(shù)陣的計算。
作為實現(xiàn)并行計算的獨立模塊函數(shù)P-Fusion(),其輸入?yún)?shù)為過IHS變換后提取的I分量像元矩陣與經(jīng)配準后的全色圖像像元矩陣,函數(shù)執(zhí)行完成后,將輸出參量作為新的Inew通道信息與H、S通道信息作IHS逆變換即可得到融合圖像。在Matlab多核處理器并行計算平臺下實現(xiàn)基于均等任務劃分原則的并行計算,其主要步驟如下:
(1)調(diào)用FindResource()函數(shù)創(chuàng)建對象Job Manager,并將該對象命名為Jm,它作為一個調(diào)度器負責整個并行計算程序的調(diào)度工作。
(2)通過createJob()函數(shù)在對象Jm上創(chuàng)建一個作業(yè),命名為Job,并完成定義并行小波融合模塊函數(shù)P-Fusion()。
(3)設置該作業(yè)的文件關(guān)聯(lián),讓所有Workers都可以找到原程序文件。
(4)通過createTask()函數(shù)將作業(yè)Job進行任務劃分,P-Fusion()作為函數(shù)句柄,并設置好函數(shù)的輸入?yún)?shù)與輸出參數(shù)。
(5)利用Submit()函數(shù)完成作業(yè)Job的提交,Job Manager調(diào)度后臺可用于計算的處理器核心完成作業(yè)任務的分配,各工作核獲取任務后執(zhí)行模塊函數(shù)P-Fusion()完成各自計算任務,此時各個核同時工作,互不干擾,完成并行計算。
(6)當所有任務全部完成后,將計算結(jié)果通過GetAllOutputArguments()函數(shù)回收并整理后返回給客戶端Client。
完成該并行計算過程的主要代碼如下:
3 實驗及結(jié)果分析
本文選擇的實驗數(shù)據(jù)為北京地區(qū)Landset8遙感影像,將2048X2048大小的空間分辨率為30m的多光譜圖像與空間分辨率為15m的全色圖像進行融合。
3.1 實驗環(huán)境
硬件配置:節(jié)點Intel Core i5-4590 CPU,四核,4GB內(nèi)存;
軟件配置:Windows 7專業(yè)版64位操作系統(tǒng),Matlab2010a(并行計算工具箱Parallel Computing Toolbox 4.3和分布式計算服務器Matlab Distributed Computing Server 4.3)。
3.2 結(jié)果分析
在多核處理器并行環(huán)境下完成了圖像像元矩陣的小波分解與重構(gòu)、像元梯度矩陣和融合圖像小波系數(shù)陣的計算,且融合結(jié)果基本穩(wěn)定,其結(jié)果如圖2-4圖所示:
通過對串行融合程序與并行融合程序的執(zhí)行時間進行測試,對比分析了并行計算的優(yōu)化效果,其測試性能對比如表1所示:
表1 IHS小波融合并行化性能對比
由表1可知:在進行相同任務量的計算時,參與計算的內(nèi)核數(shù)不同,程序的執(zhí)行時間也會隨之改變,其具體表現(xiàn)為Worker數(shù)目增加,運行時間變短,但減小趨勢變緩,這是因為計算機在執(zhí)行并行程序時會產(chǎn)生額外的通訊開銷。并行算法的加速比大致呈線性增長,當開啟Worker數(shù)為4,即等于處理器的最大內(nèi)核數(shù)時,并行程序加速比達到2.2。算法的并行化設計,能有效的縮短程序執(zhí)行的時間,充分利用多處理器資源,滿足了快速處理的需要。
4 結(jié)語
本文針對IHS小波融合算法,利用Matlab并行環(huán)境進行了算法并行化設計與實現(xiàn),有效的提高了程序的運行速度并充分運用了多核處理器資源,均等的任務劃分、模塊化的處理方法為處理大規(guī)模遙感數(shù)據(jù)提供了可能。相較于其他并行模式,Matlab并行計算程序設計更為簡便,豐富的函數(shù)工具箱能滿足不同的應用需求,將會在不同的鄰域有著廣闊的應用前景。
【參考文獻】
[1]王鵬,等.并行計算應用及實戰(zhàn)[M].北京:機械工業(yè)出版社,2009.
[2]劉金碩,等.基于CUDA的并行程序設計[M].北京:科學出版社,2015.
[3]MathWorks. Matlab distributed computing server [EB/OL] [2009-10-01] http://www.mathworks.com/help/toolbox/mdce/index.html.
[4]王攀峰,杜云飛,周海芳,楊學軍.基于復小波變換的遙感圖像并行融合算法[J].計算機工程與科學.2008.30(3):35-39.
[5]閆鈞華,杭誼青,孫思佳. 基于GPU的可見光與紅外圖像融合快速實現(xiàn)[J].計算機工程.2013.39(11):249-253.
[6]劉維.實戰(zhàn)Matlab之并行程序設計[M].北京:北京航空航天大學出版社,2012.
[7]Jorge Nunez, Xavier Otazu, Octavi Fors. Multiresolution Based Image Fusion with Additive Wavelet Decomposition[J].IEEE Transactions on Geoscience and Remote-sensing.1999(3):1204-1211.
[8]鄭曉薇,于夢玲.基于Matlab多核集群的人臉識別算法的并行化設計[J].計算機應用.2011.31(10):2597-2599.
[責任編輯:張濤]