王淼
【摘 要】随着遥感图像数据规模的不断扩大与融合算法计算复杂度的增大,遥感图像的快速融合成为很多遥感处理步骤的关键一环。计算机技术快速发展,CPU多核架构逐渐普及,为了充分利用多核处理器资源,Matlab提供了并行计算模型。本文选取了基于小波变换和IHS空间的图像融合算法进行并行化设计,利用Matlab并行计算工具箱与分布式计算服务器进行任务分割,实现了算法的并行化。实验结果表明,并行化处理可以有效缩短图像融合的时间,获得良好的加速比,验证了并行算法的高效性,对进一步研究并行图像处理有一定的指导意义。
【关键词】Matlab;图像融合;IHS;小波变换;并行计算
0 引言
随着遥感技术的飞速发展,由于信息获取的途径越来越多,从而得到了各式各样的遥感数据,而且数据量也越来越大。图像融合技术的诞生使多源遥感数据得到了充分的利用,产生了比单一信息源更精确、更可靠的估计和判断。由于数据规模的不断增大,基于单处理器的传统的串行图像融合算法已经无法满足计算量不断增加的需求,基于多处理器或集群的并行计算使图像的快速融合成为了可能,为高效地分析遥感图像提供了有效的解决途径。
当前流行的并行化工具与多核计算平台有很多,如OpenMP、MPI等[1],还有基于GPU并行计算的GUDA语言[2]。为高效利用多核处理器进行并行计算,增强计算能力,Mathwork 公司推出了Matlab 分布式计算服务器与并行计算工具箱[3],可以实现对大规模数据进行快速、便捷地并行任务划分,而且具有良好的可扩展性。
近年来,小波变换理论被广泛应用于图像融合并行处理当中,有基于MPI的复小波变换的遥感图像并行融合算法[4],有基于GPU的小波变换图像融合快速实现算法等[5]。本文在Matlab并行计算环境下,分析了基于小波变换与IHS空间的图像融合算法流程,将读入内存数据规模较大的遥感图像像元矩阵进行均等任务划分,分配给不同的处理单元进行融合计算,实现了算法的并行化,为提高大规模矩阵的计算速度与多核处理器的利用率提供了并行处理方法。
1 Matlab并行计算
Matlab并行计算架构主要依赖两个工具:并行计算工具箱(PCT)和分布式计算服务器(MDCS)[6],用户可以通过使用以上两个工具完成多种并行计算任务,例如基于多核平台、多处理器平台的并行计算以及基于集群平台的并行计算。PCT与MDCS可以自动帮助用户完成参与计算的多个核、多个处理器或多个集群节点之间的底层数据通信,用户则可以更加专注于并行算法的设计,于此同时,Matlab提供了各式各样的函数工具箱,以便用户高效便捷地完成并行计算任务。
典型的Matlab并行计算架构包含Client、Job Manager和Worker,它们既可以运行在网络中的多台计算机上,也可以运行在同一台计算机上。用户通过Client可以编辑代码,输入各种命令,将Job提交给Job Manager;Job Manager负责Worker的管理和Task分配,将Job中的Task分配到Worker上执行,并收集Worker的执行结果返回给Client;Worker负责执行由Job Manager分配的Task,并将执行结果返回Job Manager。其中,Job作为任务的基本单元,由Client向Job Manager提交,而Task则作为任务的基本单元被Job Manager分配到各个Worker中去,一个Job可以只包含一个Task,也可以包含多个Task。
2 IHS小波融合算法并行设计
2.1 基本原理
IHS小波融合算法1999年由Nunez 提出[7],通过将传统的IHS变换与小波变换相结合,既有效地增强了融合图像的空间分辨率,又较好的保持了融合图像的光谱特性,减小了光谱失真。该方法先将待融合多光谱图像作由RGB空间到IHS空间的转换,然后利用小波变换将得到的多光谱图像的I分量与全色图像进行小波分解、融合与重构,最后将得到的新的Inew分量与原先的H、S分量进行IHS逆变换得到最终的融合结果。
2.2 并行算法实现
在进行并行IHS小波融合算法设计之前,首先需要分析在整个串行算法中各个函数调用的频率以及函数执行消耗的时间,这个过程可以由Matlab提供的Profiler剖析器来完成,经过分析可知,程序中将多光谱图像的I分量与高分辨率全色图像进行小波融合花费处理器时间最多,这是由于进行逐层小波分解与重构时,计算复杂度不断升高,计算量不断加大。为了充分利用多核处理器资源,采用均等原则划分计算量较大的复杂计算任务,使这部分过程可以在Matlab环境下实现并行化,该算法并行化过程见图1。
本文将并行小波融合算法设计成一个独立的模块函数P-Fusion()[8],该模块函数主要完成的工作是:图像像元矩阵的小波分解与重构、由小波系数阵以3X3为窗口大小计算像元梯度矩阵和融合图像小波系数阵的计算。
作为实现并行计算的独立模块函数P-Fusion(),其输入参数为过IHS变换后提取的I分量像元矩阵与经配准后的全色图像像元矩阵,函数执行完成后,将输出参量作为新的Inew通道信息与H、S通道信息作IHS逆变换即可得到融合图像。在Matlab多核处理器并行计算平台下实现基于均等任务划分原则的并行计算,其主要步骤如下:
(1)调用FindResource()函数创建对象Job Manager,并将该对象命名为Jm,它作为一个调度器负责整个并行计算程序的调度工作。
(2)通过createJob()函数在对象Jm上创建一个作业,命名为Job,并完成定义并行小波融合模块函数P-Fusion()。
(3)设置该作业的文件关联,让所有Workers都可以找到原程序文件。
(4)通过createTask()函数将作业Job进行任务划分,P-Fusion()作为函数句柄,并设置好函数的输入参数与输出参数。
(5)利用Submit()函数完成作业Job的提交,Job Manager调度后台可用于计算的处理器核心完成作业任务的分配,各工作核获取任务后执行模块函数P-Fusion()完成各自计算任务,此时各个核同时工作,互不干扰,完成并行计算。
(6)当所有任务全部完成后,将计算结果通过GetAllOutputArguments()函数回收并整理后返回给客户端Client。
完成该并行计算过程的主要代码如下:
3 实验及结果分析
本文选择的实验数据为北京地区Landset8遥感影像,将2048X2048大小的空间分辨率为30m的多光谱图像与空间分辨率为15m的全色图像进行融合。
3.1 实验环境
硬件配置:节点Intel Core i5-4590 CPU,四核,4GB内存;
软件配置:Windows 7专业版64位操作系统,Matlab2010a(并行计算工具箱Parallel Computing Toolbox 4.3和分布式计算服务器Matlab Distributed Computing Server 4.3)。
3.2 结果分析
在多核处理器并行环境下完成了图像像元矩阵的小波分解与重构、像元梯度矩阵和融合图像小波系数阵的计算,且融合结果基本稳定,其结果如图2-4图所示:
通过对串行融合程序与并行融合程序的执行时间进行测试,对比分析了并行计算的优化效果,其测试性能对比如表1所示:
表1 IHS小波融合并行化性能对比
由表1可知:在进行相同任务量的计算时,参与计算的内核数不同,程序的执行时间也会随之改变,其具体表现为Worker数目增加,运行时间变短,但减小趋势变缓,这是因为计算机在执行并行程序时会产生额外的通讯开销。并行算法的加速比大致呈线性增长,当开启Worker数为4,即等于处理器的最大内核数时,并行程序加速比达到2.2。算法的并行化设计,能有效的缩短程序执行的时间,充分利用多处理器资源,满足了快速处理的需要。
4 结语
本文针对IHS小波融合算法,利用Matlab并行环境进行了算法并行化设计与实现,有效的提高了程序的运行速度并充分运用了多核处理器资源,均等的任务划分、模块化的处理方法为处理大规模遥感数据提供了可能。相较于其他并行模式,Matlab并行计算程序设计更为简便,丰富的函数工具箱能满足不同的应用需求,将会在不同的邻域有着广阔的应用前景。
【参考文献】
[1]王鹏,等.并行计算应用及实战[M].北京:机械工业出版社,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的可见光与红外图像融合快速实现[J].计算机工程.2013.39(11):249-253.
[6]刘维.实战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.
[责任编辑:张涛]