收藏 分销(赏)

Hadoop图像处理(HIPI).doc

上传人:仙人****88 文档编号:9397558 上传时间:2025-03-24 格式:DOC 页数:11 大小:1.04MB
下载 相关 举报
Hadoop图像处理(HIPI).doc_第1页
第1页 / 共11页
Hadoop图像处理(HIPI).doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述
毕 业 论 文 目 录 1 绪论 1 2 Hadoop平台介绍及HIPI介绍 2 2.1 Hadoop平台介绍 2 2.2 HIPI介绍 2 3 Hadoop平台的搭建与开发平台配置 4 3.1 实验平台及其基本配置 4 3.2 分布式搭建 4 3.3 开发平台配置 6 4 基于HIPI的图像处理实现 6 4.1 上传 6 4.2 HIB文件转换为图像束文件 7 4.3 灰度处理 7 4.4 下载 8 4.5 HIB文件转换为jpg文件 9 5 总结与展望 9 致谢 9 全文共 10 页 4327 字基于Hadoop的图像处理研究 计算机与信息工程学院 指导教师 讲师 摘要 图像获取和存储技术的发展,使图像数据大量增加,如何应对日益增多的海量数据,并进行有效的存储和快速处理,成为我们面临的主要难题。本文在Hadoop开源平台的基础上,利用分布式文件系统HDFS与分布式计算框架MapReduce,结合数字图像处理理论与HIPI开放式API,讨论了图像的分布式处理的相关技术,实现平台下海量图像数据的上传、下载、合并及灰度处理等功能。 关键词 Hadoop;HIPI;图像处理;分布式 1 绪论 图像作为一种信息媒介,它不仅没有语言的限制而且内容丰富。各个应用领域图像数量增长十分迅速,从天文观测到对地遥感,从电子商务到社交网站,每天都在产生TB级的图像。图像文件相比文本文件有占用空间大,处理速度慢的特点,因此提高图像的处理效率对于具体应用来讲,有着重要的理论意义和实用价值。 Hadoop默认处理文本文件,而图像文件的保存和处理方式与普通文本文件不一样,且Hadoop没有自带图像处理接口。况且Hadoop框架很适合大文件的操作,我们平时使用的图片的文件都比较小,如果这种小文件不经过处理直接上传,会十分影响性能。所以本文采用第三方开发的图像处理接口HIPI(Hadoop Image Processing Interface),它将来源的图像进行合并处理,并存储到HDFS上再进行MapReduce处理。 本文主要研究基于Hadoop的图像处理问题,重点在于实现基本的分布式图像处理,并减少图像处理的时间。首先简单描述了图像处理和云计算的国内研究现状以及本文的主要研究内容;其次介绍了Hadoop平台、HIPI以及平台的搭建和配置;最后实现了Hadoop HIPI图像处理,并做出总结和展望。 2 Hadoop平台介绍及HIPI介绍 2.1 Hadoop平台介绍 Apache Hadoop是一款支持数据密集型分布式应用并以Apache2.0许可协议发布的开源软件框架,它有很多分支,如HDFS、MapReduce和Hbase等,主要有可扩展性、低成本、高效性、可靠性等特点[[1] 邓自立,云计算中的网络拓扑设计和Hadoop平台研究[D].中国科学技术大学.2009. ]。 HDFS(Hadoop Distributed File System) 是管理网络中跨多台计算机存储的文件系统,适合部署在廉价的普通商业机器上。对外部客户机而言,HDFS跟传统的分级文件系统一样,可以进行文件的创建、删除、移动和重命名操作。HDFS是一种基于一组特定的节点构建的架构,这些节点包括一个NameNode和多个DataNode,NameNode在 HDFS 内部提供元数据服务,DataNode为HDFS 提供存储块。文件被分成块存储在HDFS中,这些块存储在多个DataNode中。块的大小(通常为64MB)和副本的数量可以在部署集群时设定。NameNode可以控制所有文件操作。 在Hadoop上开发运行应用程序对于用户来讲并不难,处理海量数字图像更不在话下。任何MapReduce应用程序至少包含三个函数:一个Map函数、一个Reduce函数和一个main函数。main函数将作业控制和文件的输入和输出结合起来。Hadoop 提供了为Hadoop应用程序开发人员提供许多工具,如大量的接口和抽象类,降低了调试和性能度量的难度。 2.2 HIPI介绍 图像处理方法可以分为两大类,即光学图像处理和数字图像处理[2] 余松煜,周源华,张瑞.数字图像处理[M].上海:上海交通大学出版社.2007. 。本文中所指图像处理为后者,是用计算机对各种数字图像信息进行处理,来得到某种预期的效果或者从图像中提取有用的信息。 要想完成数字图像处理,首先要将图像文件存储于HDFS系统中。Hadoop默认处理的是大数据的文本文件[[3] 张学浪.基于Hadoop的海量图像检索关键技术研究[D].西北农林科技大学.2013. ],而图像文件保存和处理方式与普通文本文件不一样,Hadoop没有自带的图像处理接口。由于Hadoop框架对大文件的操作有优势,而我们平时使用的图片的文件都比较小,如果这种小文件不经过处理直接上传,会十分影响性能。 HIPI[[4] Chris Sweeney,Liu Liu ,Sean Arietta等.HIPI: A Hadoop Image Processing Interface for Image-based MapReduce Tasks[EB/OL]. http://cs.ucsb.edu/~cmsweeney/papers/ undergrad_thesis.pdf.2014.5 ]是基于Hadoop MapReducede平台的一个大型的图像处理和计算机视觉库。它的设计是为了使大型的图像处理变得简单,提高图像处理的效率。HIPI由弗吉尼亚大学(The University of Virginia)的Chris Sweeney等人编写。它提供了分布式计算环境中执行数字图像处理任务所需要API,用于合并及切割图像文件。 HIPI中提供了图像的数据类型、文件输入格式和片段读取方式,HIPI中最基本的类是HipiImageBundle类、FloatImage类和CullMapper类。HIPI使用的输入类型被称为HipiImageBundle(HIB)[[5] HIPI.http://hipi.cs.virginia.edu.2014.5 ]。 ImageHeader和FloatImage分别是一个图像文件的元数据信息和数据信息,ImageBundleInputFormat和ImageBundleRecordReader分别是文件的输入格式和片段读取方式。 图2-1 HIPI图像处理流程图 为了提高某些程序的效率,HIPI允许用户指定一个挑选功能,用来剔除不符合标准的图像,如剔除大于1000万像素的图像或者长宽超过限制的图像。如图2-1所示,调用用户指定的CullMapper类对每个测试图像进行挑选。用户可以在安装过程中通过重新更改HipiJob对象来修改图像处理的执行参数,并以此来修改MapReduce过程。 3 Hadoop平台的搭建与开发平台配置 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安装的配置文件有很多[[6] 张良将.基于Hadoop云平台的海量数字图像数据挖掘的研究[D].上海交通大学.2013. Research on Image Processing of Hadoop Computer and Information Engineering College Zhou Jiaqi 20101104119 Directed by Meng Fanjun Lecturer Abstract With the development of image acquisition and storage technology, there is a significant increase in image data. What the major challenges we faced is how to deal with the growing number of huge amounts of data, and efficient storage and fast processing. Based on the open source platform Hadoop, use of HDFS distributed file system and distributed computing framework MapReduce, combined with digital image processing theory and HIPI open API, discussed the images distributed processing technologies to achieve massive image data under the platform upload, download, mergers and gray-processing and other functions. Keywords Hadoop;HIPI;Image Processing;Distributed ],这些配置文件都在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 -zxvf eclipse-standard-luna-M2-linux-gtk.tar.gz -C /home/Hadoop/ (2) 复制Hadoop-eclipse-plugin-2.3.0.jar到eclipse安装目录/plugins/下。 (3) 重启eclipse,配置Hadoop installation directory。 打开Window-->Preferens,选择Hadoop Map/Reduce选项,在这个选项里配置Hadoop installation directory。配置完成后退出。 (4) 配置Map/Reduce Locations。 在Window-->Show View中打开Map/Reduce Locations。 在Map/Reduce Locations中新建一个Hadoop Location。在这个View中,右键-->New Hadoop Location。在弹出的对话框中配置Location name为Hadoop,Map/Reduce Master Host为210.31.181.211,Port为10020;DFS Master Port为9000。 (5) 新建Map/Reduce项目,验证Hadoop插件是否安装成功。 File-->New-->Other-->Map/Reduce Project项目名取为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上新建一个HipiImageBundle hib,并将本地文件夹下所有图片通过文件遍历方法(共123.5M,297项)上传,合并为一个hib文件,生成test.hib(2.4K)和test.hib.dat(117.8M)(图4-2中input文件夹下)。hib文件存储所有图像的元数据信息,而hib.dat文件存储图像数据。 该方法实现代码如下: public static void ReadAllFile() throws IOException { Configuration conf=new Configuration(); HipiImageBundle hib=new HipiImageBundle(new Path("hdfs://210.31.181.211:9000/input/test.hib"), conf); hib.open(AbstractImageBundle.FILE_MODE_WRITE,true); File f = null; f = new File("/home/hadoop/input/test/"); File[] files = f.listFiles(); List<File> list = new ArrayList<File>(); for (File file : files) { FileInputStream fis=new FileInputStream(file); hib.addImage(fis,ImageType.JPEG_IMAGE); } 4.2 HIB文件转换为图像束文件 图4-1 参数设置 图4-2 DFS视图 设置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-3 Downloader.java数据处理过程 运行Downloader.java可以从互联网下载图片,输入三个参数,第一个参数是存有待下载图片URL的文本文件,第二个参数是输出路径,下载的图像文件合并后将存放在这个文件夹,第三个参数是参与下载任务的节点数。如图4-3所示,该过程分四步来完成:首先,指定图像下载列表;其次,将待下载的RUL分成几组,并发送给Mapper;然后集群从互联网下载图像;最后将图像存储为HIPI图像束文件。 4.5 HIB文件转换为jpg文件 运行JpegFromHib.java,输入有两个参数,第一个参数是输入的hib文件的路径,第二个参数为jpg文件的输出路径。 5 总结与展望 本文针对海量图像处理的问题,在高性能计算平台上搭建Hadoop集群环境,采用分布式计算技术来达到减少图像处理时间的目的,并实现了图像的基本的分布式处理,取得一定效果,在此过程中体现了Hadoop处理数据的优越性,但离预期的效果还有很大的差距,需要改进地方有很多: (1) 由于 HDFS 适合处理大数据文件,而一个图像文件的大小有限,为了处理大量图像数据,每次都要合并成一个序列化文件,这样做有很多弊端。所以需要学习HIPI的实现过程,并且修改及完善其功能。 (2) 本文实现了简单的图像处理,这些简单的处理并没有什么实际应用意义,只是作为了解Hadoop图像处理的途径。今后应逐步加强和完善这个图像处理系统的功能,并提高其效率。 致谢 在这里我要感谢孟繁军老师,过去的四年中,孟老师不仅教会了我很多科学知识和学习方法,还深深地影响了我的人生观。 感谢智敏老师,感谢我同学、朋友和家人支持我、鼓励我。 10
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服