Hadoop图像处理HIPI.docx

上传人:b****5 文档编号:7653988 上传时间:2023-01-25 格式:DOCX 页数:9 大小:132.95KB
下载 相关 举报
Hadoop图像处理HIPI.docx_第1页
第1页 / 共9页
Hadoop图像处理HIPI.docx_第2页
第2页 / 共9页
Hadoop图像处理HIPI.docx_第3页
第3页 / 共9页
Hadoop图像处理HIPI.docx_第4页
第4页 / 共9页
Hadoop图像处理HIPI.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

Hadoop图像处理HIPI.docx

《Hadoop图像处理HIPI.docx》由会员分享,可在线阅读,更多相关《Hadoop图像处理HIPI.docx(9页珍藏版)》请在冰豆网上搜索。

Hadoop图像处理HIPI.docx

Hadoop图像处理HIPI

毕业论文目录

1绪论1

2Hadoop平台介绍及HIPI介绍2

2.1Hadoop平台介绍2

2.2HIPI介绍2

3Hadoop平台的搭建与开发平台配置4

3.1实验平台及其基本配置4

3.2分布式搭建4

3.3开发平台配置6

4基于HIPI的图像处理实现6

4.1上传6

4.2HIB文件转换为图像束文件7

4.3灰度处理7

4.4下载8

4.5HIB文件转换为jpg文件9

5总结与展望9

致谢9

 

全文共10页4327字

基于Hadoop的图像处理研究

计算机与信息工程学院

指导教师讲师

摘要图像获取和存储技术的发展,使图像数据大量增加,如何应对日益增多的海量数据,并进行有效的存储和快速处理,成为我们面临的主要难题。

本文在Hadoop开源平台的基础上,利用分布式文件系统HDFS与分布式计算框架MapReduce,结合数字图像处理理论与HIPI开放式API,讨论了图像的分布式处理的相关技术,实现平台下海量图像数据的上传、下载、合并及灰度处理等功能。

关键词Hadoop;HIPI;图像处理;分布式

1绪论

图像作为一种信息媒介,它不仅没有语言的限制而且内容丰富。

各个应用领域图像数量增长十分迅速,从天文观测到对地遥感,从电子商务到社交网站,每天都在产生TB级的图像。

图像文件相比文本文件有占用空间大,处理速度慢的特点,因此提高图像的处理效率对于具体应用来讲,有着重要的理论意义和实用价值。

Hadoop默认处理文本文件,而图像文件的保存和处理方式与普通文本文件不一样,且Hadoop没有自带图像处理接口。

况且Hadoop框架很适合大文件的操作,我们平时使用的图片的文件都比较小,如果这种小文件不经过处理直接上传,会十分影响性能。

所以本文采用第三方开发的图像处理接口HIPI(HadoopImageProcessingInterface),它将来源的图像进行合并处理,并存储到HDFS上再进行MapReduce处理。

本文主要研究基于Hadoop的图像处理问题,重点在于实现基本的分布式图像处理,并减少图像处理的时间。

首先简单描述了图像处理和云计算的国内研究现状以及本文的主要研究内容;其次介绍了Hadoop平台、HIPI以及平台的搭建和配置;最后实现了HadoopHIPI图像处理,并做出总结和展望。

2Hadoop平台介绍及HIPI介绍

2.1Hadoop平台介绍

ApacheHadoop是一款支持数据密集型分布式应用并以Apache2.0许可协议发布的开源软件框架,它有很多分支,如HDFS、MapReduce和Hbase等,主要有可扩展性、低成本、高效性、可靠性等特点[]。

HDFS(HadoopDistributedFileSystem)是管理网络中跨多台计算机存储的文件系统,适合部署在廉价的普通商业机器上。

对外部客户机而言,HDFS跟传统的分级文件系统一样,可以进行文件的创建、删除、移动和重命名操作。

HDFS是一种基于一组特定的节点构建的架构,这些节点包括一个NameNode和多个DataNode,NameNode在HDFS内部提供元数据服务,DataNode为HDFS提供存储块。

文件被分成块存储在HDFS中,这些块存储在多个DataNode中。

块的大小(通常为64MB)和副本的数量可以在部署集群时设定。

NameNode可以控制所有文件操作。

在Hadoop上开发运行应用程序对于用户来讲并不难,处理海量数字图像更不在话下。

任何MapReduce应用程序至少包含三个函数:

一个Map函数、一个Reduce函数和一个main函数。

main函数将作业控制和文件的输入和输出结合起来。

Hadoop提供了为Hadoop应用程序开发人员提供许多工具,如大量的接口和抽象类,降低了调试和性能度量的难度。

2.2HIPI介绍

图像处理方法可以分为两大类,即光学图像处理和数字图像处理。

本文中所指图像处理为后者,是用计算机对各种数字图像信息进行处理,来得到某种预期的效果或者从图像中提取有用的信息。

要想完成数字图像处理,首先要将图像文件存储于HDFS系统中。

Hadoop默认处理的是大数据的文本文件[],而图像文件保存和处理方式与普通文本文件不一样,Hadoop没有自带的图像处理接口。

由于Hadoop框架对大文件的操作有优势,而我们平时使用的图片的文件都比较小,如果这种小文件不经过处理直接上传,会十分影响性能。

HIPI[]是基于HadoopMapReducede平台的一个大型的图像处理和计算机视觉库。

它的设计是为了使大型的图像处理变得简单,提高图像处理的效率。

HIPI由弗吉尼亚大学(TheUniversityofVirginia)的ChrisSweeney等人编写。

它提供了分布式计算环境中执行数字图像处理任务所需要API,用于合并及切割图像文件。

HIPI中提供了图像的数据类型、文件输入格式和片段读取方式,HIPI中最基本的类是HipiImageBundle类、FloatImage类和CullMapper类。

HIPI使用的输入类型被称为HipiImageBundle(HIB)[]。

ImageHeader和FloatImage分别是一个图像文件的元数据信息和数据信息,ImageBundleInputFormat和ImageBundleRecordReader分别是文件的输入格式和片段读取方式。

图2-1HIPI图像处理流程图

为了提高某些程序的效率,HIPI允许用户指定一个挑选功能,用来剔除不符合标准的图像,如剔除大于1000万像素的图像或者长宽超过限制的图像。

如图2-1所示,调用用户指定的CullMapper类对每个测试图像进行挑选。

用户可以在安装过程中通过重新更改HipiJob对象来修改图像处理的执行参数,并以此来修改MapReduce过程。

3Hadoop平台的搭建与开发平台配置

3.1实验平台及其基本配置

整个实验平台由5台普通pc机和一个交换机构成,4个slave节点,内存为1G,磁盘31.7G。

1个master节点,内存8G,磁盘38.3G。

操作系统为ubuntu-12.04,Hadoop软件版本为Hadoop-2.3.0,java环境为jdk-6u41。

为了方便运行,在master节点安装了Eclipse。

3.2分布式搭建

各节点在集群中的角色,机器名,用户名及IP如下表所示:

表3-1集群网络配置

hostname

角色

登录用户

IP

网关

hapmaster

master

Hadoop

210.31.181.211

210.31.181.1

hapslave1

slave

Hadoop

210.31.181.216

210.31.181.1

hapslave2

slave

Hadoop

210.31.181.217

210.31.181.1

hapslave3

slave

Hadoop

210.31.181.218

210.31.181.1

hapslave4

slave

Hadoop

210.31.181.219

210.31.181.1

具体部署步骤如下:

(1)安装ubuntu12.04系统,更新源,初始化root用户,关闭防火墙,按表3-1中个节点的配置修改IP,更改hostname和hosts,重启电脑使更改生效。

表3-2配置hadoo-env.sh和yarn-env.sh的参数

参数

取值

说明

JAVA_HOME

/home/hadoop/jdk1.6.0_41

设置Java安装目录

表3-3配置core-site.xml的参数

参数

取值

说明

fs.defauleFS

hdfs:

//210.31.181.211:

9000

设置文件系统

hadoop.tmp.dir

file:

/home/hadoop/hadoop-2.3.0/tmp

hadoop的临时目录

(2)安装SSH,并检查是否安装成功。

(3)安装JDK,修改环境变量,使更改生效,查看java版本。

(4)安装Hadoop,配置环境变量,重载source/etc/profile,查看Hadoop版本,Step赋予用户对Hadoop安装目录可写的权限。

(5)控制Hadoop安装的配置文件有很多[],这些配置文件都在Hadoop根目录下etc/hadoop/文件夹中,最重要的是以下几个配置文件:

hadoop-env.sh为Bash脚本格式文件,用于记录运行Hadoop脚本要用的环境变量;core-site.xml为Hadoop配置XML格式文件,用于配置HadoopCore的配置项,如HDFS和MapReduce常用的I/O设置。

上述配置文件的内容如上表3-2、表3-3。

hdfs-site.xml为Hadoop配置XML格式文件,用于配置Hadoop守护进程的配置项,包括Namenode、辅助Namenode和Datanode等;mapred-site.xml为Hadoop配置文件XML格式,用于配置MapReduce守护进程的配置项,包括jobtracker和tasktracker;slaves文件为纯文本格式,用于配置运行Datanode和tasktracker的机器列表,每行一个Datanode的hostname。

上述配置文件的内容如下表3-4、表3-5和表3-6所示:

表3-4配置hdfs-site.xml的参数

参数

取值

说明

dfs.namenode.name.dir

file:

/home/hadoop/hadoop-2.3.0/dfs/name

Namenode工作目录

dfs.namwnode.data.dir

file:

/home/hadoop/hadoop-2.3.0/dfs/data

Datanode工作目录

dfs.replication

3

文件块的副本数

表3-5配置mapred-site.xml的参数

参数

取值

说明

mapreduce.framework.name

yarn

map-reduce运行框架

表3-6配置slaves节点名

参数

取值

说明

slaves

hapslave1

hapslave2

hapslave3

hapslave4

所有slave节点的hostname

(6)使用将hapmaster的所有文件及配置复制到hapslave,并修改IP和hostname。

(7)生成新公钥,并复制到其他节点,重启SSH服务使其生效,并登陆。

(8)启动Hadoop集群,查看集群状态。

3.3开发平台配置

(1)进入安装包所在的文件夹,并解压安装包到Hadoop用户文件夹下。

tar-zxvfeclipse-standard-luna-M2-linux-gtk.tar.gz-C/home/Hadoop/

(2)复制Hadoop-eclipse-plugin-2.3.0.jar到eclipse安装目录/plugins/下。

(3)重启eclipse,配置Hadoopinstallationdirectory。

打开Window-->Preferens,选择HadoopMap/Reduce选项,在这个选项里配置Hadoopinstallationdirectory。

配置完成后退出。

(4)配置Map/ReduceLocations。

在Window-->ShowView中打开Map/ReduceLocations。

在Map/ReduceLocations中新建一个HadoopLocation。

在这个View中,右键-->NewHadoopLocation。

在弹出的对话框中配置Locationname为Hadoop,Map/ReduceMasterHost为210.31.181.211,Port为10020;DFSMasterPort为9000。

(5)新建Map/Reduce项目,验证Hadoop插件是否安装成功。

File-->New-->Other-->Map/ReduceProject项目名取为WordCount。

复制Hadoop-2.3.0-src/Hadoop-mapreduce-project/Hadoop-mapreduce-examples/src/main/java/org/apache/Hadoop/examples/WordCount.java到workspace刚刚新建的的项目文件夹下。

(6)把hipi-dev.tar.gz中3rdparty中的metadata-extractor-2.3.1.jar导入的到项目中去。

(7)将junit-4.11.jar导入到项目中。

由于现在HIPI还有一些BUG,所以把hipi-dev.tar.gz中src的源码和experiments源码引入到eclipse的jar项目中,一方面便于学习源码,另一方面便于修改其中的问题。

4基于HIPI的图像处理实现

4.1上传

通过MyAddImage.java在HDFS上新建一个HipiImageBundlehib,并将本地文件夹下所有图片通过文件遍历方法(共123.5M,297项)上传,合并为一个hib文件,生成test.hib(2.4K)和test.hib.dat(117.8M)(图4-2中input文件夹下)。

hib文件存储所有图像的元数据信息,而hib.dat文件存储图像数据。

该方法实现代码如下:

publicstaticvoidReadAllFile()throwsIOException{

Configurationconf=newConfiguration();

HipiImageBundlehib=newHipiImageBundle(newPath("hdfs:

//210.31.181.211:

9000/input/test.hib"),conf);

hib.open(AbstractImageBundle.FILE_MODE_WRITE,true);

Filef=null;

f=newFile("/home/hadoop/input/test/");

File[]files=f.listFiles();

Listlist=newArrayList();

for(Filefile:

files){

FileInputStreamfis=newFileInputStream(file);

hib.addImage(fis,ImageType.JPEG_IMAGE);

}

4.2HIB文件转换为图像束文件

图4-1参数设置

图4-2DFS视图

设置CreareSequenceFile.java运行的输入路径和输出路径,参数有两个,第一个参数为待转换的hib文件路径,第二个参数为输出路径。

参数设置如图4-1所示。

使用CreareSequenceFile.java将上一步生成的hib文件(117.8M)转换成SequenceFile文件(39.9M,图4-2中part-r-00000)。

4.3灰度处理

通过Img2Gray.java可以处理SequenceFile文件,输入有三个参数,第一个参数为输入文件路径,第二个参数是输出文件路径,输出文件为jpg格式,第三个参数是输入文件的格式。

该方法可以处理的图像文件格式有四种:

hib、har、small_files、sequence。

相同情况下处理sequence文件(即图像束文件)的速度较快。

运行该程序得到经过灰度处理并且用hashcode存储的jpg文件,这一步通过convert(FloatImage.RGB2GRAY)和hashCode()实现。

输出的文件名为hashCode+".jpg"。

将上一步生成的图像束文件进行灰度处理,处理结果及比较如表4-1所示。

表4-1图像处理前后比较

项目

图4-4处理前

图4-5处理后

文件

(缩放10%)

文件名

a1.jpg

22511833.jpg

大小

527,630字节

282,025字节

原始尺寸

高度:

42.33cm宽度:

67.73cm

高度:

31.75cm宽度:

50.8cm

4.4下载

图4-3Downloader.java数据处理过程

运行Downloader.java可以从互联网下载图片,输入三个参数,第一个参数是存有待下载图片URL的文本文件,第二个参数是输出路径,下载的图像文件合并后将存放在这个文件夹,第三个参数是参与下载任务的节点数。

如图4-3所示,该过程分四步来完成:

首先,指定图像下载列表;其次,将待下载的RUL分成几组,并发送给Mapper;然后集群从互联网下载图像;最后将图像存储为HIPI图像束文件。

4.5HIB文件转换为jpg文件

运行JpegFromHib.java,输入有两个参数,第一个参数是输入的hib文件的路径,第二个参数为jpg文件的输出路径。

5总结与展望

本文针对海量图像处理的问题,在高性能计算平台上搭建Hadoop集群环境,采用分布式计算技术来达到减少图像处理时间的目的,并实现了图像的基本的分布式处理,取得一定效果,在此过程中体现了Hadoop处理数据的优越性,但离预期的效果还有很大的差距,需要改进地方有很多:

(1)由于HDFS适合处理大数据文件,而一个图像文件的大小有限,为了处理大量图像数据,每次都要合并成一个序列化文件,这样做有很多弊端。

所以需要学习HIPI的实现过程,并且修改及完善其功能。

(2)本文实现了简单的图像处理,这些简单的处理并没有什么实际应用意义,只是作为了解Hadoop图像处理的途径。

今后应逐步加强和完善这个图像处理系统的功能,并提高其效率。

致谢

在这里我要感谢孟繁军老师,过去的四年中,孟老师不仅教会了我很多科学知识和学习方法,还深深地影响了我的人生观。

感谢智敏老师,感谢我同学、朋友和家人支持我、鼓励我。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1