摘 要:分析了MATLAB并行计算工具箱中各部件的关系,在Windows环境下搭建了并行计算集群;采用滑动邻域操作对声纳图像进行了对比度增强处理;重点介绍了MATLAB下的数据并行编程,利用分布式数组设计了集群环境下的图像增强并行算法。实验结果表明,MATLAB强大的内部函数使得并行计算易于实现,有效地提高了图像处理的实时性。
关键词:对比度增强;并行计算工具箱;滑动邻域;声纳图像;数据并行编程;分布式数组
随着声成像技术的发展,声图像在海洋开发领域的应用日益广泛,利用声图像进行目标识别已经成为数字图像处理领域的一个重要课题。声纳图像的增强应在保持图像边缘的前提下提取特征信息,增强处理的目的是改善原图像的“视觉效果”。智能水下机器人通过对声纳图像的不断滤波、平滑和分割等处理,提取出目标点特征和线特征,构建基于环境特征的特征地图仿真平台,使用同时定位与地图创建(SLAM)算法实现机器人的自主定位和导航[1]。随着声纳图像尺寸和数量的不断增加,矩阵计算需要消耗更多的时间,从而很难满足图像处理的实时性要求,严重影响了机器人导航定位的精度。而并行处理技术的发展和多核计算机的普及,加快了数据处理的速度,能有效处理大量数据,克服了上述问题。
并行计算是指将一个应用分解成多个子任务,分配给不同的处理器,各个处理器之间相互协同,并行地执行子任务,从而达到加快求解速度[2]或者提高求解应用问题规模的目的。基于集群的并行图像处理系统价格低廉、性能较高、可扩展性好,具有广阔的前景和重要的实用价值。
1 MATLAB集群的搭建
MATLAB并行计算就是把一个大规模的工作分解为若干小任务让不同的计算机去处理,最后把计算结果回收,从而提高计算效率。
1.1 PCT和MDCS
在集群中利用MATLAB进行并行计算需要并行计算工具箱PCT (Parallel Computing Toolbox)和MATLAB分布式计算服务器MDCS(MATLAB Distributed Computing Service)两个必备的产品。PCT保证用户利用MATLAB进行应用程序编写并与MATLAB进行交互,给用户提供了一个平台。PCT支持全部MATLAB的M语言特性,同时支持大多数的工具箱语法。MDCS是在集群环境中实现并行计算的前提条件,使PCT的应用程序得到扩展,使其可以运行在任意数量计算机的任意数量节点上。只要保证MDCS正确安装,在使用过程中用户不需要再对MDCS进行任何操作。这对用户是透明的,它可以看作是在后台为机群中的PC提供一种连接通信支持。
1.2 MATLAB并行集群的搭建和配置
一个简单的MATLAB集群模型如图1所示,集群中所有PC存在于一个局域网中。
图1中,每个方框代表一台PC,节点机1作为客户机负责把一个大的工作分解成若干小任务分配给节点机2、3、4来处理。Schedule和Job Manager起着资源调度和管理作用,可以指定集群中的任意一台PC来完成这个角色。
License Manager是一个许可管理服务[3],装有License Manager的PC为头节点机(即Client),机群中其他利用License Manager生产的License许可的PC为Worker节点机。MATLAB的安装分为头节点的安装和Worker节点的安装,为保证配置的稳定性,所有节点都安装MATLAB(R2010b)。各个Worker节点激活时需选择头节点机生成的license.dat许可文件,该文件位于头节点机MATLAB安装路径的etc文件中。
2 滑动邻域操作
邻域运算是一种重要的空间域图像增强方法。滑动邻域操作每次处理一个像素,输出图像中任何给定像素的值,都通过给输入图像中对应像素邻域内像素值应用一个算法来确定。邻域是一个矩形块,当图像矩阵中从一个元素向下一个元素移动时,邻域块向相同方向滑动。采用滑动邻域操作来增强灰度图像的对比度,即输入图像将以像素为单位进行处理, 邻域块空白的地方补0,对输入图形的每一个像素, 指定的滑动邻域操作将决定输出图像相应的像素值。
本文使用双频数字机械扫描式前视声纳作为水下探测工具,根据回波强度的不同生成声纳图像。声纳图像中强度比较大的回波形成图像的白色区域,弱的回波形成图像的黑色区域。根据声纳图像的特点,选择非线性变换来增强灰度图像的对比度。MATLAB中nlfilter( )函数可实现多种滑动邻域操作,其用法为:
x=nlfilter(x, [3,3], @enhance);
3个输入参数分别为待处理的图像、邻域大小和一个返回标量的图像处理函数,输出为一幅大小与输入图像相同的图像。输出图像中的每个像素的值通过将对应输入像素的邻域传递给返回标量的那个函数来进行计算。
3 并行算法研究
3.1 数据并行编程
MATLAB并行编程可分为任务并行和数据并行两种方式。当有大数据量需要同时处理,而单机又无法存储大数据量时,可考虑使用数据并行编程方法。数据并行是将大量的数据包分割成小的数据片段,再将这些片段分配给计算节点进行存储和交互计算,提高了大数据量同时处理的能力。
使用SPMD(Single Program Multiple Data)结构,可以指定代码的区段以在所有参与并行计算的Worker间并行运行。程序执行过程中,该结构会自动将在其内部使用的数据和代码传输给Worker,并在执行完毕后将结果返回给MATLAB客户端会话。SPMD结构内部可以是分布式数组、并行函数以及消息传递函数。其中,“Single Program”指的是同一段代码运行在多个Worker上,在MATLAB客户端上运行一段程序,被标志为SPMD的模块运行在各自的Worker上。“Multiple Data”是指虽然SPMD语句在所有的Worker上运行相同的代码,但每一个Worker可以有独有的数据,所以多数据集可以在多个Worker上同时被容纳。
3.2 并行算法的执行步骤
实验在客户机(Client)上定义了作业管理器(Job Manager)和工作(Job),通过分布式数组将Client内部使用的数据和代码传输给Worker,程序执行的流程图如图2所示。读入原始图像,进行灰度处理,先在Client机上进行串行计算,再判断是否存在作业管理器,若没有则创建,然后打开MATLAB进程池,利用distributed函数生成分布式数组发送给4个Worker进行各自的滑动邻域操作,再将处理结果返回到Client中,合成一幅完整的图像。最后Client机串行处理图像,4个SPMD Worker滤波后的图像在一幅图中显示出来,以便将处理结果进行比较。
4 算法的实现及实验结果
4.1 算法的编译环境
实验中操作系统为Windows 7,集群系统由两台计算机通过路由器来构建,可在DOS命令行下打开图形用户界面Admin Center 来管理集群机器。两台计算机的CPU配置分别为:Intel Core i3 CPU 2100 3.10 GHz(四核)和Intel Core i5 CPU 2320 3.0 GHz(四核),内存都为4 GB。
4.2 实验结果与分析
根据配置的环境运行程序,经过4个SMPD Worker滤波后的效果如图3所示。其中,3条白线将图像平均分为4部分,严重影响了图像的完整性。这是因为在图像分割的过程中,distributed函数向4个Worker发送分布式数组时,各个Worker间的数据相互独立,因而没有捕捉到前一个Worker数据的最后1列和下一个Worker数据的第1列。
为解决上述问题,MATLAB通过labSend-Receive命令来实现各个Worker间的通信,从而实现数据的交换。labSendReceive的用法为:
Received = labSendReceive (labto, labfrom, data);
其中,data为发送lab中将要发送的数据,received为接收lab中保存的数据。利用labSendReceive命令重新修改程序后的运行效果如图4所示。其中,图4(a)是经Client主机串行滤波后的图像,右图是改进算法后4个SMPD Worker滤波后的图像。图4(b)可见,并行图像增强算法和串行算法处理效果一样,但前者在处理大量数据时具有明显的优势。
为了检测并行优化效果,分别进行了串并行的时间测试,实验性能对比结果如表1 所示。从表1可看出,算法由单线程改为不同数量的多线程并行执行时,加速比随着节点数的增加而上升。随着节点数的增加,并行加速比增加趋于缓慢,并行计算效率下降。这主要是由于随着节点数量增加,节点间通信开销变大,工作机之间可能出现负载不平衡等因素引起的。
本文搭建了MATLAB并行计算集群,详细介绍了安装步骤和编译环境的配置。根据滑动邻域原理设计了前视声纳图像对比度增强的并行算法,总体达到了预期效果。MATLAB提供的分布式数组机制缩短了并行程序开发的周期,为海量数据进行交互处理提供了可能[4]。本文对MATLAB并行算法做了一些尝试性工作,获得了很好的效果,提出的方法对其他MATLAB并行相关问题的研究有实际的借鉴作用。
参考文献
[1] 张洁.基于声纳的水下机器人同时定位与地图构建技术研究[D].青岛:中国海洋大学,2008.
[2] Gao Wenjing, Qian Kemao, Wang Haixia, et al. Parallel computing for fringe pattern processing: a multicore CPU approach in MATLAB environment[J].Optics And Lasers In Engineering,2009,47(11):1286-1292.
[3] 钱巍,吕晶,李晗静. 一种机群系统下的并行图像处理环境[J].哈尔滨师范大学学报(自然科学版),2005,21(2):61-65.
[4] GORYAWALA M, GUILLEN M R. A comparative study on the performance of the parallel and distributing computing operation in Matlab[C]. Proceedings of 24th IEEE International Conference on Advanced Information Networking and Applications,2010:150-157.