基于MapReduce数字图像处理研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MapReduce 数字图像处理研究
田进华,张韧志
(黄淮学院河南驻马店463000)
摘要:随着海量图像数据的增加,使得需要处理的数据规模越来越大,为了解决在处理海量数据信息时所面临的存取容量和处理速度的问题,在深入研究MapReduce 大规模数据集分布式计算模型的基础之上,本文设计了基于
MapReduce 实现对数字图像并行化处理。
实验结果表明:运行在Hadoop 集群上的基于MapReduce 并行化算法具有数
据节点规模易扩展、处理速度快、安全性高、容易实现等特点,能够较好地满足海量数据图像的处理的要求。
关键词:Hadoop 平台;海量数据;MapReduce ;图像处理;并行处理中图分类号:TN391.41
文献标识码:A
文章编号:1674-6236(2014)15-0093-03
Research of digital image processing based on MapReduce
TIAN Jin 鄄hua ,ZHANG Ren 鄄zhi
(Huanghuai University ,Zhumadian 463000,China )
Abstract:With the increase of mass image data ,makes the need to deal with the data size is bigger and bigger ,in order to solve the facing access when dealing with huge amounts of data information capacity and processing speed ,the further study of graphs large 鄄scale distributed computing model based on the data set ,in this paper ,based on graphs design for digital image parallel processing.Experimental results show that run on Hadoop cluster graphs based on parallel algorithm is data node size easy extension ,fast processing speed ,high security ,easy to implement ,can well meet the requirements of mass data processing of the image.
Key words:Hadoop plateform ;mass data ;MapReduce ;image processing ;parallel processing
收稿日期:2014-04-30
稿件编号:201404271
基金项目:河南省教育厅科学技术研究重点项目(13A520786)
作者简介:田进华(1982—),男,河南泌阳人,硕士,实验师。
研究方向:计算机应用。
以互联网为计算平台的云计算,将会涉及非常多的海量数据处理任务[1],海量数据处理是指对大规模数据的计算和分析,通常数据规模可以达到TB 甚至PB 级别。
当今世界最流行的海量数据处理可以说是MapReduce 编程模式。
MapReduce 分布式编程模型允许用户在不了解分布式系统
底层实现细节的情况下开发并行应用程序。
用户可以利用
Hadoop 轻松地组织计算机资源,进而搭建自己的分布式计算
云平台,并且可以充分利用集群的计算和存储能力,完成海量数据的处理。
1MapReduce 计算模型
Hadoop 是一个开源分布式计算平台。
以分布式文件系统HDFS 和MapReduce 为核心的分布式计算和分布式存储的编
程环境[2]。
MapReduce 是用于大规模数据集分布式的计算模型,实现一个MapReduce 应用,首先,通过Map 程序将数据切割成小块,然后,分配给大量服务器处理,最后,通过
Reduce 程序将处理后的结果汇整输出给客户端。
MapReduce
的整个架构是由Map 和Reduce 函数组成,当程序输入一大组Key/Value 键值对时,Map 负责根据输入的Key/Value (键值)对,生成中间结果,这生成中间结果同样采用Key/Value (键值)对的形式。
开发者只需要实现Map 和Reduce 函数的逻辑,然后提交给MapReduce 运行环境,计算任务便会在大量计算机组成的集群上被自动、并行地调度执行。
MapReduce 的运行环境是有两个不同类型的节点组成:Master 和Worker 。
Worker 负责数据处理,Master 主要负责任务分配和节点之间
数据共享。
需要实现或指定以下编程接口:
Map 函数:接收输入的键值对<kl ,vl>,计算生成一组中
间的键值对<k2,v2>
Reduce 函数:接收键值对集合<k2,v2的列表>,聚集计
算得到新键值对<k3,v3>。
Combiner 函数:它是对Map 函数输出的中间数据在本地
执行归并,将处理结果再传输给Reduce 节点。
Combiner 可以降低Map 任务节点和Reduce 任务节点之间的通信代价。
InputFormat ,OutputFormat :InputFormat 支持Hadoop 作
业输入数据键值对的转换;OutputFormat 表示Hadoop 作业计算结果存储在HDFS 中的格式。
Partitioner 函数:用于对Map 函数输出的中间结果进行
划分,Map 任务点根据所提供的Partition 函数,将数据结果划分给相应Reduce 任务节点。
电子设计工程
Electronic Design Engineering
第22卷Vol.22第15期No.152014年8月Aug.2014
-93-
《电子设计工程》2014年第15期
Hadoop 运行MapReduce 作业的流程图如图1所示。
MapReduce 作业包含四个相对独立的模块。
客户端主要负责MapReduce 作业代码的编写,配置作业相关参数,向JobClient
实体提交作业;JobTracker 节点主要负责用户提交作业的初始化,调度作业,与所有的TaskTracker 节点进行通信,协调用户提交作业的执行;TaskTracker 节点负责自主与
JobTracker 节点进行通信,根据所分配的数据块执行Map 或Reduce 任务,调用用户定义的Map 或Reduce 函数;HDFS 负
责保存作业的数据、配置信息和作业结果等。
2构建图像处理云平台
在MapReduce 计算框架中,Hadoop 将输入数据划分成
等长的作业分片,每个Map 任务处理一个作业分片,这些
Map 任务是并行执行的[3]。
Hadoop 又将每个作业分片划分为
多个相同的键值对,每个Map 任务对该分片中每个键值对再调用map 函数来进行处理。
本系统把一个图像文件作为一个作业分片,再把整个作业分片作为一个键值对来处理[4]。
这样每个Map 任务只需调用一次map 函数来处理一个图像文件,进而实现多个图像文件的并行化处理。
本系统只定义了一个
Reduce 任务,其调用reduce 函数对每个键值对进行简单的
输出操作。
1)键值对类型的设计
Hadoop 中map 和reduce 函数的输入和输出是键/值对
(Key/Valuepair ),MapReduce 框架并不允许任意的类作为键和值的类型,只有支持序列化的类才能够在这个框架中充当键或者值[5]。
Hadoop 有自己的序列化格式Writable ,实现
Writable 接口的类可以作为值类型。
Writable 接口定义了两个
方法:一个将其状态写到DataOutput 二进制流,另一个从
DataInput 二进制流读取其状态[6]。
实现WritableComparable<T>接口的类既可以作为键类型也可以作为值类型,该接口继
承自Writable 和parable 接口。
WritableComparator 是对继承自WritableComparable 类的RawComparator 类的一个通用实现,提供了两个主要功能:第
一,对原始compare ()方法的默认实现,能反序列化将在流中
进行比较的对象,并调用对象的compare ()方法;第二,充当的是RawComparator 实例的工厂。
Hadoop 自带的org.apache.
hadoop.io 包中有广泛的Writable 类,它们形成了如图2所示
的层次结构。
本系统使用的键类型为Text ,用来存储图像文件的名;值类型为Image ,实现了Writable 接口,用来存储图像文件的
内容。
本系统的键值对在Map 任务和Reduce 任务数据变化流程如图3所示。
任务调用map 函数对每个键值对进行处理,处理前后键Filename 的内容不会发生改变,而存储图像信息的值Image 的内容会发生变化。
Reduce 任务调用reduce 函数实现对其输入的键值对进行简单的键值对输出操作。
2)作业的输入格式设计
一个输入分片(split )就是由单个Map 任务处理的输入块,每个分片被划分为若干个记录,每条记录就是一个键值对,map 函数一个接一个处理每条记录。
map 函数用该实现从
InputSplit 中读取输入的键值对。
本系统设计了ImageFileInputFormat 类继承自FileInputFormat<Text ,Image>
类的实现,把一个图像文件作为一个输入分片,不进行文件分割;ImageRecordReader 类继承自RecordReader <Text ,
Image>类的实现,把输入分片转化为一个键值对,即图像文
件名作为键Text 类型的一个实例,图像文件内容作为值
Image 类型的一个实例。
ImageRecordReader 类实现解码读取
存储在HDFS 上作为输入分片的图像文件,获得其字节流,然后将字节流转化为上一节实现的值类型Image 的一个实例,图像文件的名字作为键类型Text 的一个实例,其核心代
图3
本系统Map 任务和Reduce 任务数据流
Fig.3
Map task and reduce task ’s data flow in this system Map
图1
Hadoop 运行MapReduce 作业流程图
Fig.1MapReduce job ’s flow chart on Hadoop 图2
Writable 类层次结构图
Fig.2Writable class's hierarchical structure
-94-
码如下:
FileSplit split=(FileSplit)genericSplit;
Configuration conf=context.getConfiguration();
Path file=split.getPath();
FileSystem fs=file.getFileSystem(conf);
FSDataInputStream fileIn=fs.open(split.getPath());
byte[]b=new byte[fileIn.available()];
fileIn.readFully(b);
image=new Image(cvDecodeImage(cvMat(1,b.length,CV_8UC1,
new BytePointer(b)),iscolor));
fileName=split.getPath().getName().toString();
3)作业的输出格式设计
MapReduce作业的输出样式用OutputFormat描述。
根据OutputFormat,MapReduce框架检验作业的输出;看作业初始化的配置与验证输出结果类型是否一致;通过RecordWriter 用来输出作业的结果,输出文件保存在Hadoop的文件系统上。
要定义OutputFormat抽象类。
FileOutputFormat是所有使用文件作为其数据源的OutputFormat实现的基类。
系统设计了ImageOutputFormat类继承自FileOutputFormat<Text,Image>类的实现,把一个键值对作为内容进行输出;ImageRecordWriter类继承自RecordWriter<Text,Image>类的实现,把键Text类型的实例作为图像文件名,值Image类型的实例作为图像文件内容,生成一个图像文件存入Hadoop 文件系统中。
ImageRecordWriter类实现编码值类型Image的一个实例,作为图像文件内容的字节流,根据作业初始化的输出目录,再结合值类型FileName的一个实例,作为图像文件的文件名,生成图像文件,存储在分布式文件系统HDFS中。
4)图像处理功能
网上的数字图像一般是一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值。
图像处理就是利用计算机对数字图像的灰度值信息进行处理,从中提取有用的信息或得到某种预期的效果。
数字图像处理的过程:首先是获取图像,对数字图像缩放处理和图像增强处理,图像缩放常用的插值方法有最近邻插值、双线性插值、使用象素关系重采样和立方插值。
本文使用双线性插值算法来实现在map 函数中对图像进行0.5倍的缩放。
然后进行图像复原和彩色图像处理,利用小波与多分辨率对图像处理,将一幅图像分割成小的图像,最后进行特征提取和目标识别。
对数字图像的边缘检测是进行图像分割、目标区域识别、区域形状提取等图像分析的技术基础。
对于连续图像f(x,y),边缘检测就是求梯度的局部最大值和方向。
利用Canny 边缘检测算子,在map函数中实现对图像的边缘检测,从而实现对图像文件的并行化边缘检测。
边缘检测步骤如下:首先用2D高斯滤波模板与原始图像进行卷积,以消除噪声。
其次利用导数算子,找到图像灰度沿着两个方向的导数G x G y,并求出梯度大小:|G|=G
x
+G
x
姨。
然后利用2)的结果
计算出梯度的方向:θ=tan-1(G y
G x
)。
求出了边缘的方向,就可以把边缘的梯度方向大致分为4种(0°、45°、90°、135°),并可以找到这个像素梯度方向的邻接像素。
接着遍历图像。
若某个像素的灰度值与其梯度方向上前后两个像素的灰度值相比不是最大的,那么将这个像素值置为0,即不是边缘。
最后使用累计直方图计算两个阈值。
凡是大于高阈值的一定是边缘;凡是小于低阈值的一定不是边缘。
如果检测结果在两个阈值之间,则根据这个像素的邻接像素中有没有超过高阈值的边缘像素,如果有,则它就是边缘,否则不是。
5)MapReduce程序的编写
为了使用Hadoop中MapReduce来进行海量图像数据挖掘,需要编写MapReduce程序。
目前大多数MapReduce程序的编写都可依赖于一个模板及其变种。
当撰写一个新的MapReduce程序时,通常会采用一个现有的MapReduce程序,并将其修改为所希望的样子。
编写MapReduce程序的第一步就是要了解数据流,设计所需的键值对类型。
Hadoop自身只提供处理简单数字或字符的键值对类型,根据实际的需要设计相应的类型。
例如本文第四章,设计了名为Image的值类型,而键类型采用Hadoop自带的Text类型。
MapReduce程序由三部分组成,分别是用户定义的map函数、用户定义的reduce函数和作业驱动程序;map函数在Map任务执行时被调用,reduce函数在Reduce任务执行时被调用,作业驱动程序用于初始化作业的配置。
3结束语
Hadoop[7]云平台的图像处理系统设计,把一个图像文件作为一个作业分片,再把整个作业分片作为一个键值对来处理。
这样每个Map任务只需调用一次map函数来处理一个图像文件,进而实现多个图像文件的并行化处理。
节点可以自由地扩充,通过键值对的设计、作业的输入与输出格式的设计,可以实现海量图像文件信息的并行化处理。
整个云平台提供的计算和存储能力近乎是无限的。
随着图像文件量的增加,MapReduce处理数据的最佳速度最好与数据在云平台中的传输速度相同,系统的利用率会有随之提高。
参考文献:
[1]刘鹏.云计算[M].2版.北京:电子工业出版社,2011.
[2]朱义明.基于Hadoop平台的图像分类[J].西南科技大学学
报,2011(2):70-73.
ZHU Yi鄄ming.Image classification based on hadoop platform[J].
Journal of Southwest University of Science and Technology,2011(2):70-73.
[3]CHUCK LAM.Hadoop in action[M].Manning,2010
[4]TOM WHITE.Hadoop the definitive guide[M].O'Reilly|
Yahoo!PRESS,2009.
(下转第100页)
田进华,等基于MapReduce数字图像处理研究
-95-
《电子设计工程》2014年第15期
[5]崔朝国,刘志明,李婧,等.一种基于Hadoop的Scool云存储
平台[J].电脑知识与技术,2013(2):405-408,411.
CUI Chao鄄guo,LIU Zhi鄄ming,LI Jing,et al.A scool cloud storage platform based on the hadoop[J].Computer Knowledge and Technology,2013(2):405-408,411.
[6]多雪松,张晶,高强.基于Hadoop的海量数据管理系统[J].
微计算机信息,2010(13):202-204.
DUO Xue鄄song,ZHANG Jing,GAO Qiang.A mass data
management system based on the hadoop[J].Microcomputer Information,2010(13):202-204.
[7]赵庆.基于Hadoop平台下的Canopy鄄Kmeans高效算法[J].电
子科技,2014(2):29-31.
ZHAO Qing.Canopy鄄Kmeans efficient algorithm based on Hadoop platform[J].Electronic Science and Technology,2014(2):29-31.
快,应用最多,但针对不同图像适用性不强;区域距离法对内部区域分割效果较好,对海岸线边缘不适用;梯度密度法能充分利用陆地区域梯度信息,但对平坦纹理区域不适用;纹理聚类法在纹理差异大的图像中分割效果好,但未考虑灰度信息,且计算复杂度高。
2存在的问题与发展趋势
1)虽然目前的海陆分离方法很多,但至今还没有找到对所有图像都很有效的分割算法。
分割效果好的方法,大多是在对图像进行分析的基础上得到的。
寻找适应性更强,针对性范围更广的海陆分离方法是图像智能化分割的发展趋势。
2)目前的大多数海陆分离方法中,大多数方法会将靠岸舰船与港口归为一类,只有基于先验信息的方法能将其与陆地隔离开,这样对舰船的检测就需要分海上和陆地两部分进行,降低了检测效率。
在未来的研究中,可以考虑直接在海陆分离算法中分离靠岸舰船与港口。
3)利用单一特征的海陆分离方法受成像条件、地物特征等方面的影响,分割效果不是很理想。
可以考虑将多特征进行融合,共同作用于海洋与陆地的分离,提高分割效率和分割准确性。
3结束语
在包含陆地或岛屿的遥感图像[9]中,海陆分离是检测与识别海上目标的前提和基础,快速准确的海陆分离能为情报信息的获取与整理争取时间,为后续图像的分析与应用提供技术支撑,因此,对其进行研究具有重要意义。
本文在总结国内外海陆分离方法的基础上,对各海陆分离方法进行整合分类,并将不同方法进行对比,分析其优势与不足,最后指出当前海陆分离方法存在的问题并展望未来的发展方向。
目前,在海陆分离方面还没有较完整的综述性文章,希望本文能对后续的工作开展与算法优化打下基础。
参考文献:
[1]Buch H,Sharghi E,Guilas C,et al.Enhanced ship detection
from overhead imagery[C]//Proceedings of SPIE,the
International Society for Optical Engineering,2008(6945): 1-12.
[2]Corbane C,Pecoul E,Demagistri L,et al.Fully automated
procedure for ship detection using optical satellite imagery[C]// Proceedings of the SPIE,Remote Sensing of Inland,Coastal,and Oceanic Waters,2008(7150):1-13.
[3]Corbane C,Marre F,Petit ing SPOT-5HRG data in
panchromatic mode for operational detection of small ships in tropical area[J].Sensors,2008(8):2959-2973.
[4]Pascal F,ChitourY.Covariance structures maximum鄄likelihood
estimates in compound Gaussian noise:existence and algorithm analysis[J].IEEE Transaction on Signal Processing,2008,56(1):34-48.
[5]CHU Zhao鄄liang,WANG Qing鄄hua,CHEN Hai鄄lin,et al.
Ship Auto Detection Method Based on Minimum Error Threshold Segmentation[J].Computer Engineering,2007,33(11):239-241.
[6]Borenstein E,Ullman bining top鄄down/bottom鄄up
segmentations[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2008,30(12):2109-2125.
[7]Zhu C M,Zhang X,Luo J C,et al.Automatic extraction of
coastline by remote sensing technology based on SVM and auto鄄selection of training samples[J].Remote Sensing for Land and Resources,2013,25(2):69-74.
[8]QU J S,WANG Chao,WANG Zhen鄄zhi.A multi鄄threshold
based morphological approach for extracting coastal line feature from remote sensed images[J].Journal of Image and Graphics,2003,8(7):805-509.
[9]阮涛,那彦,王澍.基于压缩感知的遥感图像融合方法[J].
电子科技,2012(4):43-46.
RUAN Tao,NA Yan,WANG Shu.Remote sensing image fusion method based on compressed sensing[J].Electronic Science and Technology,2012(4):43-46.
(上接第95页)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-100-
基于MapReduce数字图像处理研究
作者:田进华, 张韧志, TIAN Jin-hua, ZHANG Ren-zhi
作者单位:黄淮学院 河南 驻马店 463000
刊名:
电子设计工程
英文刊名:Electronic Design Engineering
年,卷(期):2014(15)
参考文献(7条)
1.刘鹏云计算 2011
2.朱义明基于Hadoop平台的图像分类[期刊论文]-西南科技大学学报 2011(2)
3.CHUCK LAM Hadoop in action 2010
4.TOM WHITE Hadoop the definitive guide 2009
5.崔朝国,刘志明,李婧,陈晓凡一种基于Hadoop的Scool云存储平台[期刊论文]-电脑知识与技术 2013(2)
6.多雪松,张晶,高强基于Hadoop的海量数据管理系统[期刊论文]-微计算机信息 2010(13)
7.赵庆基于Hadoop平台下的Canopy-Kmeans高效算法[期刊论文]-电子科技 2014(2)
引用本文格式:田进华.张韧志.TIAN Jin-hua.ZHANG Ren-zhi基于MapReduce数字图像处理研究[期刊论文]-电子设计工程 2014(15)。