第36卷第2期2016年5月
桂林理工大学学报
Journal of Guilin University of Technology
Vol. 36 No.2
May2016
文章编号:1674 -9057(2016)02 -0383 -05doi:10. 3969/j.issn. 1674 -9057. 2016. 02. 033基于 Hadoop 的Java调用 Matlab
混合编程的车牌识别
蔡春晓\李燕龙\陈晓2
(1.桂林电子科技大学教学实践部,广西桂林541004; 2.桂林电子科技大学信息科技学院,广西桂林541004)
摘要:在交通行业日益发展的今天,车牌识别技术对于公路车辆监管以及车辆轨迹跟踪越来越重要,
考虑到庞大的车辆信息数据量,单机处理数据能力已不能满足实时性的要求。本文在详细研究分布式处理平 台Hadoop的工作原理后,利用其强大的HDFS存储系统与MapReduce数据处理方案,通过Java对Matlab 的调用,简化了识别程序,搭建了分布式处理平台,即使在数据量庞大的情况下也能够进行车牌识别分布 式计算。实验结果表明,在处理2 000张以上的车牌图像时,运行效率提升了 2倍左右。
关键词:云计算;车牌识别;混合编程;分布式计算
中图分类号:TP391.9文献标志码:A
〇引言
近年来,随着我国公路交通事业的日益发展 和人民生活水平的提升,车辆数目不断增加,通过 车牌识别来统计车辆轨迹的方法对于交通管制的 作用也变得愈发重要[1]。为了能够快速存储和处 理庞大的车牌号信息数据,必须借助分布式处理平 台。Hadoop是Apache基金会所开发的一种分布式 基础架构,具有尚可罪性、尚拓展性、尚效性、尚容错性、低成本等一系列特性,用户可以轻松地 在Hadoop上开发和运行处理海量数据的应用程 序。Hadoop框架最核心的设计H D FS与MapReduce分别可以实现海量数据存储与海量数据计算。
2006年初,通过借鉴Google的G F S和Map Reduce技术,Nutch项目的开发团队解决了前期面 临的软件扩展性问题,实现了开源的Nutch分布式 文件系统(NDFS)和MapReduce计算框架。由于 NDFS和MapReduce具有较高的应用价值,而不仅限于搜索领域,开发团队将它们从Nutch项目中拆 分出来,组成一个新的开源项目Hadoop,NDFS随 即更名为HDFS。2008年初,Hadoop成为Apache 的重点研究项目,得到了一些国际厂商的支持,如FaceBook、Yahoo以及阿里巴巴等互联网巨头,这使得Hadoop迎来了它的快速发展[2]。
在短短的几年中,Hadoop成为了目前为止最 为成功、最广泛使用的大数据处理主流技术和系 统平台,并成为一种大数据处理事实上的工业标 准[3],得到工业界大量的进一步开发和改进,并 在业界和应用行业,尤其是互联网行业得到广泛 的应用。
由于在系统性能和功能方面存在不足,Ha-d〇〇P在发展过程中不断改进,自2007年推出首个 版本以来,目前已经先后推出数十个版本。Ha-d〇〇P系统在大规模数据分布存储和批处理能力[4],以及在系统的可扩展性和易用性上具有不少其他 系统难以具备的优点,并且由于近几年来业界和应
收稿日期:2015 -06 -16
基金项目:广西自然科学基金项目(2〇l3GXNSFAA019334)
作者简介:蔡春晓(1呢0—)男,硕士,讲师,研究方向:计算机控制、云计算、大数据,fjcainiao@guet.edu。
通讯作者:李燕龙,讲师,lylong@guet.edu。
引文格式:蔡春晓,李燕龙,陈晓.基于Hadoop的Java调用Matlab混合编程的车牌识别[J].桂林理工大学学报,2016,
36 (2) :383 -387.
384桂林理工大学学报2016 年
用行业在Hadoop开发和应用上已有大量的前期投 人和上线应用系统,以及Hadoop形成的包含各种 丰富的工具软件的完整生态环境,同时也随着Ha-d〇〇p自身向新一代系统的演进和不断改进,在今 后相当长一段时间内,Hadoop系统将继续发挥其 在大数据处理领域的重要作用,同时其他各种新 的系统也将逐步与Hadoop系统相互融合和共存[5-6]。改主机名(主机名和I P地址的映射),配置hosts文 件(在/etc/hosts中添加机器名和相应的IP);③创 建用户;④配置ssh,使mastei•主机与每台slave 主机实现无密码登陆;⑤安装JD K;⑥安装Hadoop;⑦在 mastei•主机上配置好,再分发到各台 slave主机。此外,安装Hadoop后需修改环境变 量,加人Hadoop路径,为方便统一管理,在Hadoop 根目 录下建立文件夹:mkdir tmp、mkdir
Hadoop的底层框架由Ja v a编写,考虑到各种 计算情况下,有些Ja va代码实现的运算并不高效,而利用Matlab写好相应的函数,再由Ja v a将其调 用会显得更加方便[7]。Ja v a语言具有跨平台性、可移植性、多线程、分布式、安全可靠等优点。但Ja v a程序设计语言对一些较为复杂的数值计算 的编程较繁琐,编程效率较低。对于较为复杂的 分析与处理可以采用Ja v a及Matlab的混合编程,实现二者的优势互补。
1H ado op平台以及e c lip se开发环境 的搭建
1.1 Hadoop平台介绍
分布式文件系统HDFS和分布式计算框架MapReduce是 Hadoop 的两大 核心组 成部分。其 中,HDFS负责大规模数据集的分布式存储,是一个典 型的主从式体系结构,由1个主节点(NameNode)和多个从节点(DataNode)构成;整个Hadoop集 中,只允许同时存在一个NameNode节点,它是整 个系统的主控服务器,用于管理H D FS的命名空 间和协调客户端的文件访问。MapReduce构建在hdfsN mkdir logs>mkdir hdfs/name N mkdir hdfs/da-ta,可将文件夹权限修改为可读写;再修改/Ha-doop/conf/ 目录下的配置文件:hadoop-env.sh、core-site,xml、l^masters^slaves;配置 masters 和 slaves:分别用gedit 打开masters和slaves,前者加人hadoopm,后者加 人hadoops即可;将配置文件hosts、bashrc同步到 集各个节点中,并把配置好的hadoop发送到集 中各个节点;对集的分布式文件系统进行格 式化,并检查系统启动情况。
1.2开发环境安装
① 在Linux下安装eclipse;
② 安装eclipse-hadoop插件;
③ 配置eclipse;
④ 测试插件是否安装成功。
由于本文所论述的识别车牌方法涉及Hadoop 内部HDFS文件系统的工作原理,而开发环境的 安装只为了能够让开发者运用自己所擅长的语言 编译出适用于某种特定功能的代码,故关于开发 环境的具体安装方法及步骤本文不再赘述。
至此,系统环境搭建已完成[8]。
HDFS之上,为存储在HDFS上的数据提供分布式 计算框架,由1个JobTrackei•和多个TaskTracker 组成;JobTrackei•负责整个MapReduce的资源监控 和作业调度,TaskTrackei•负责执行JobTrackei•分配下来的计算任务;用户通过客户端将编写好的 MapReduce程序提交到JobTrackei•端,之后MapReduce作业被分解为若干个 Map Task 和 Reduce Task,任务调度器按照一定的调度策略(可配置)
将任务分配到适当的TaskTrackei•上执行。两者紧 密结合、相互协调,为Hadoop高效、可靠地处理 大数据提供了保障。
分布式计算的简略实施步骤如下:①集下 每台计算机安装Lmux操作系统;②每台计算机修2 M a tla b的调用与M ap R ed u ce的运算执行
2. 1Matlab车牌识别算法
车牌识别需经过触发拍照、图像采集、图像 预处理、车牌定位、字符分割、字符识别、输出 结果等一系列过程,其中字符识别为核心内容。目前,用于车牌字符识另|J(OCR)的算法已经有很 多种,主要有基于模板匹配的O CR算法[9]、基于 特征分析的字符识别算法及基于人工神经网络的 OCR算法[1°]。本文以基于模板匹配车牌识别Mat-la b算法为例,实现在Hadoop云计算平台上Java 调用Matlab 混合编程的车牌识别处理过程。
第2期
蔡春晓等:基于Hadoop 的Java 调用Matlab 混合编程的车牌识别
385
如图1所示,基于模板匹配的O CR 算法过程 为:首先对待识别字符进行二值化,并将其尺寸 大小缩放为字符数据库中模板的大小,然后与所
有的模板进行匹配,最后选最佳匹配作为结果。 模板匹配是图像识别方法中最具代表性的基本方 法之一[11],它是将从待识别的图像或图像区域中 提取的若干特征量与模板相应的特征量逐个进行 比较,计算它们之间规化的互相关量,其中互相 关量最大的一^个就表期间相似程度最局,可将 图像归于相应的类。通常情况下用于匹配的图像 各自成像条件存在差异,本文采用相减的方法求 得字符与模板中最相似的字符,然后到相似度 最大的输出[12]。
图1
车牌识别算法
Fig. 1
License plate recognition algorithm
2. 2 Java 对于Matlab 的调用
考虑到计算的各种情况,有些用Ja v a 代码实 现的计算难免会显得不够高效。而利用Matlab 写 好相应的计算函数,然后打包成jar •包供Ja v a 调 用,在某些情况下会更加方便。以下说明如何实 现这一过程:
(1)
确定计算机上已安装Matlab 或者Matlab
动态链接库,并且完成J a v a 的运行环境配置, Matlab 的版本必须为2006b + (包括2006b 或更高 版本),因为只有在这些版本中才有Matlab Builder for Java (也叫 Java Builder ) [13]。
(2) 打开 Matlab ,在 Command Window 框中输入deploytool ,在Name 中输入名字,在Location
中选择路径,最后在Type 中选择Java Package 。
(3) 在 Matlab 中到 Java Package 窗口,加class 文件,因为此文件就是以后导入到Ja v a 中
要作为一个对象的名字,故当命名class 文件的时 候需要注意,其本身即为放在new 后面作为构造 函数的类名,本文命名为test 。(4) 点击类名下的Add files ,将刚才编辑
的m 文件test ,
m 等相关函数文件加到test , p r j 当 中。(5)
打包:在Matlab 安装的目录中到“ 一
toolbox
\javabuilder \ jar \ javabuilder . jar ’’ 白勺文件,在 刚刚打包的文件夹中到对应的包,本文为
test , jar •,将这两个jar •包导入到Ja va 项目当中,新 建Ja va 类文件test , java ,这个Matlab 文件转为了
Java 类就可以直接被Java 项目调用。
2. 3 MapReduce 执行流程
借助Hadoop 框架及云计算核心技术MapRe
duce 来实现数据的计算和存储, 并且将 HDFS 分
布式文件系统和HBase 分布式数据库很好地融入 到云计算框架中,从而实现云计算的分布式、并 行计算和存储,并具有很好的处理大规模数据的 能力。
MapReduce 的任务可分为两个阶段:M ap 阶
段和Reduce 阶段。每个阶段都使用键值对作为输 入和输出,1〇类型可由程序员进行选择。一个 MapReduce 工作单兀,包括输入数据、MapReduce 程序和配置信息。作业控制由J 〇bTmC ker (l 个)和
TaskTmcker (多个)执行。MapReduce 程序执行时,
输入的数据会被分成等长的数据块,这些数据块
即为分片。M ap 任务运行在本地存储数据的节点
上,才能获得最好的效率。M ap 的结果只是用于
中间过渡,这个中间结果要传给Reduce 任务执 行,Reduce 任务的结果才是最终结果,M ap 中间 值最后会被删除。
一个MapReduce 工作(job )会将文件系统中的 数据输入并分隔为多个独立的分块(split );每个 分块都会被提交给一个Map 任务处理;经Map 任
零基础学java编程务处理后,所有具有相同属性的数据会被提交给
一个Reduce 任务处理;Reduce 任务将处理结果输
回文件系统。而本文使用到MapReduce 最核心的
功能则需通过对Map 任务与Reduce
任务的编程实
386桂林理工大学学报2016 年
100 500 1 000 2 000
图像数量/张
图3
图像识别系统耗时
Fig. 3
Time used in image recognition system
可知,在单机和1个节点的情况下,系统耗
时接近,且单机处理速度稍快,这是由于单机环 境下省去了主机与节点间通信和数据交换的时间
开销。随着节点数的增加,系统处理速度显著提 升,同时由于采用Ja v a 调用Matlab 处理,处理过 程更加灵活,并且图像数据量越大,分布式并行 处理的优势越明显。实验结果显示,当图像达到
2 000张时,基于云架构的系统较单机系统的处理 速度快了2倍左右。因此,基于云平台的车牌识
别系统在处理海量图像数据时,性能优于传统单
数据集合(类型为Itemble 〈Text 》,作为value 输入)
进行归类合并,并按照时间顺序进行排序后输出
(类型为Text ,作为value 输出)。实验中具体的识别过程为:首先取字符I 旲板, 接着依次取待识别字符与模板进行匹配,将其与 模板字符相减,得到的〇越多就越匹配。把每一 幅相减后图〇值最多个数对应的模板保存下来,
即为识别出来的结果[14]。识别结果如图2所示。设置4组分别包含有100、500、1 000、 2 000张车牌信息的随机图像,测试系统在单机情 况和分布式情况下的处理耗时,其中分布式又分
为单节点(
slave_l )、双节点(slave _2)和三节点 (slave _3)3种情况。在得到相同输出结果的情况 下,系统耗时如图3所示_
车牌号码:苏
FA5 5 5 5
5555
图2
识别结果
Fig. 2
Recognition results
现。
进行任务配置:job . setOutputKeyClass ( key 3_T . class ) ; job . setOutputValueClass ( value 3 _T . class ); 编写Map extends Mapper •类时实现数据映射过程
“〈key 1,value 1》一key 2,value 2〉” ;编写 Reduce ex tends Reducer •类 时实现 数据归 约过程 “ 〈 key 2 , list (value 2 ) ) —>►〈 key 3,value 3》” Q
数据输入方法:数据在进入Map 任务前首先需 要经过分隔和格式化的过程;输入数据经过分隔形 成若干个相互无关的输入分片(Input Split ),各个 输入分片中的每条数据记录都会被格式化为〈key , value 〉的形式传递给M ap 任务;输入方法由Input - Format 接口类的实现定义 #
3实验结果与分析
本文搭建的Hadoop 云平台由4台普通P C 组
成,其中1台作为NameNode 节点(Master ),其余 3 台作为 DateNode 节点(Slave)。NameNode 节点用 于存放系统目录和分配计算任务等,DateNode 节 点用于存储实际数据和提供计算资源_
本文所实现的车牌识别系统能从车牌图像中 自动提取车牌区域,自动分隔字符,进而对字符 进行识别,得到车牌号码。整个车牌识别系统的 核心功能为车牌定位与字符识别,但其他功能也 是重要组成部分,关系着整个系统的准确性与效 率。在切割过程中会有对中文单个字符进行切割 的现象,可以通过修改配置参数或者用基于距离
的分割方法对车牌进行切割解决,主要需要完成 MapReduce 处理过程设计、InputFormat 功能设计、
Map 任务功能设计、Reduce 任务功能设计等。
MapReduce 处理过程的设计:输入文件为带
有元数据和图像数据的车牌消息源文件;Map 任务 为从车辆照片中识别获得数字化车牌;Reduce 任
务为对具有相同车牌的元数据进行归类和排序; 输出文件为含有车牌轨迹和定位信息的结果文件。Map 任务功能的设计:对图像数据(类型为 Bufferedlmage ,作为Value 输人)进行检测,测定车 牌位置,
并进行倾斜校正;再将车牌分隔为宇符后 对字符进行模板对比识别;得出数字化的车牌序列 (类型为Text ,作为K ey 输出)。
Reduce 任务功能的设计:对具有相同序列化 车牌(类型为Text ,作为K e y 输入和输出)的元O I O I O I O I 8
6
4
2
第2期蔡春晓等:基于H adoop的Ja v a调用M atlab混合编程的车牌识别387
机识别系统。
4结束语
由于目前技术限制,文中所阐述的车牌识别 技术还有一些问题,其解决方案如下:(1)本程序 使用的是投影法进行车牌字符切割,会有对中文单 个字符进行切割的现象,可以通过修改配置参数或 者用基于距离的分割方法对车牌进行切割解决;
(2)文件调用,程序本身不能识别HDFS文件系统 路径,所以程序运行时调用的是本地系统的模板 文件,这样会降低效率。解决方法有两个:第一 是将程序中的路径替换成H D FS文件路径;第二 是将模板文件放到每一台机器的统一路径下。
采用Ja v a与Matlab混合编程来实现MapReduce 功能不仅在识别 车牌的效率有 了大幅提升,在其他图像处理、通信、计算领域都具有很好的 应用前景,同时易于开发者编写、更改代码来实 现功能的调整,如此一来,极大促进了云计算的 应用和推广。
参考文献:
[1]何苏勤,杨美荟.嵌人式视频监控系统实时性研究[J].
计算机工程,2009, 35 (4):235 -237,240.
[2]董西成.H a d o o p技术内幕:深人解析M a pR edu ce架构设
计与实现原理[M].北京:机械工业出版社,2013.[3]Zhao X M, Ma H D, Zhang H T, et al. Metadata extraction
and correction for large-scale traffic surveillance videos
[C ] //2014IEEE International Conference on Big Data,
2014:412-420.
[4]罗军舟,金嘉晖,宋爱波,等.云计算:体系架构与关键
技术[J].通信学报,2011,32 (7):3-21.
[5]王鹏,黄华峰,曹珂.云计算:中国未来的I T战略
[M].北京:人民邮电出版社,2010.
[6]张建勋,古志民,郑超.云计算研究进展综述[J].计
算机应用研究,2010, 27 (2):429 -433.
[7]E c h e lB. Ja va编程思想[M].4版.陈昊鹏,译.北京:
机械工业出版社,2007.
[8]M e ts k e rS J,W a k e W C. Java 设计模式[M]. 2 版.张
逸,史磊,译.北京:电子工业出版社,2012
[9]刘佐濂,邓荣标,孔嘉圆.一种车牌识别算法的实现
[J].中国科技信息,2005, 23 (2):56 -57.
[10] Yoshida T, Kagesawa M, Ikeuchi K, Local-feature based
vehicle recognition system using parallel vision board [ J ].
Elecironic and Communication in Japan, 2003, 86 (5):1
-10.
[11]史绍强,王英健,唐贤瑛.基于整形特征与模糊识别的手写
体汉字识别[J ].微机发展,2004,14 (1) : 114 -116.
[12]叶晨洲,杨杰,宣国荣.字符识别[J].上海
交通大学学报,2000, 34 (5):672 -675.
[13]张银鹤,唐有明,王俊伟.点石成金:JSP +A ja x网站开
发典型实例[M].北京:电子工业出版社,2009.
[14 ] Ching Y T. Detecting line segments in an image :A new im
plementation for Hough Transform [ J ].Pattern Recognition
Letters, 2001, 22 (3):421 -429.
Effective recognition of license plate
based on invoking of Matlab from Java in Hadoop
CAI Chun-xiao1, LI Yan-long1, CHEN Xiao2
(1.Department of Experiential Practice, Guilin University of Electronic Technology, Guilin 541004, China;
2. Institute of Information Technology of Guilin University of Electronic Technology, Guilin 541004, China) Abstract:With the development of transportation industry, the technology of license plate rec
ognition plays a more important role in the traffic regulation and vehicle tracing than before. Present bulkiness of vehicle information and the capacity of stand-alone data processing can not meet the real-time requirements. The powerful storage system of HDFS and data solution of Map Reduce are used to improve license plate recognition algorithm after studying the principle of Hadoop (a platform of distributed data processing) . By Java of Matlab calls, the recognition procedure is simplified, and a distributed processing platform is set up. The license plate recognition can be distributed in computing with a large amount of data. Experimental results show that when dealing with more than 2 000 images of license plates, operating efficiency improved about 2 times.
Key words:cloud computing;license plate recognition;hybrid programming;distributed computing
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论