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