admin 管理员组文章数量: 1086019
2024年3月13日发(作者:nodejs部署到服务器)
第36卷第2期
2016年5月
Journal
of
Guilin
University
of
Technology
桂林理工大学学报
Vol
. 36
No
. 2
May
2016
文章编号:1674 -9057(2016)02 -0383 -05
doi
:10. 3969/
j
.
issn
. 1674 -9057. 2016. 02. 033
基于 Hadoop 的 Java 调用 Matlab
混合编程的车牌识别
蔡春晓
(1.
桂林电子科技大学教学实践部,广西桂林
李燕龙陈晓2
西桂林
541004; 2.
桂林电子科技大学信息科技学院,广
541004)
摘要:
在交通行业日益发展的今天,车牌识别技术对于公路车辆监管以及车辆轨迹跟踪越来越重要,考
虑到庞大的车辆信息数据量,单机处理数据能力已不能满足实时性的要求。本文在详细研究分布式处理平
台
Hadoop
的工作原理后,利用其强大的
HDFS
存储系统与
MapReduce
数据处理方案,通过
Java
对
Matlab
的调用,简化了识别程序,搭建了分布式处理平台,即使在数据量庞大的情况下也能够进行车牌识别分布
式计算。实验结果表明,在处理2 000张以上的车牌图像时,运行效率提升了 2倍左右。
关键
词:云计算;车牌识别;混合编程;分布式计算
中图分类号:
TP
391.9 文献标志码
:A
〇引言
限于搜索领域,开发团队将它们从
Nutch
项目中拆
分出来,组成一个新的开源项目
Hadoop
,
NDFS
随
近年来,随着我国公路交通事业的日益发展
即更名为
HDFS
。2008年初,
Hadoop
成为
Apache
和人民生活水平的提升,车辆数目不断增加,通过
的重点研究项目,得到了一些国际厂商的支持,
车牌识别来统计车辆轨迹的方法对于交通管制的
如
、
Yahoo
以及阿里巴巴等互联网巨头,
作用也变得愈发重要[1]。为了能够快速存储和处
这使得
Hadoop
迎来了它的快速发展[2]。
在短短的几年中,
Hadoop
成为了目前为止最
理庞大的车牌号信息数据,必须借助分布式处理平
台。
Hadoop
是
Apache
基金会所开发的一种分布式
为成功、最广泛使用的大数据处理主流技术和系
基础架构,具有尚可罪性、尚拓展性、尚效性、尚
统平台,并成为一种大数据处理事实上的工业标
容错性、低成本等一系列特性,用户可以轻松地
准[3],得到工业界大量的进一步开发和改进,并
在
Hadoop
上开发和运行处理海量数据的应用程
在业界和应用行业,尤其是互联网行业得到广泛
序。
Hadoop
框架最核心的设计
HDFS
与
MapRe
的应用。
由于在系统性能和功能方面存在不足,
Ha
-
duce
分别可以实现海量数据存储与海量数据计算。
2006年初,通过借鉴
的
GFS
和
Map
d
〇〇
P
在发展过程中不断改进,自2007年推出首个
Reduce
技术,
Nutch
项目的开发团队解决了前期面
版本以来,目前已经先后推出数十个版本。
Ha
-
临的软件扩展性问题,实现了开源的
Nutch
分布式
d
〇〇
P
系统在大规模数据分布存储和批处理能力[4],
文件系统(
NDFS
)和
MapReduce
计算框架。由于
以及在系统的可扩展性和易用性上具有不少其他
NDFS
和
MapReduce
具有较高的应用价值,而不仅
收稿日期:2015 -06 -16
基金项目:广西自然科学基金项目(2〇3
通讯作者:李燕龙,讲师,
系统难以具备的优点,并且由于近几年来业界和应
lGXNSFAA
019334)
作者简介:蔡春晓(1呢0—)男,硕士,讲师,研究方向:计算机控制、云计算、大数据,
lylong
@
guet
.
edu
.
cn
。
引文格式:蔡春晓,李燕龙,陈晓.基于
Hadoop
的
Java
调用
Matlab
混合编程的车牌识别[
J
].桂林理工大学学报,2016,
36 (2) : 383 -387.
fjcainiao
@
guet
.
edu
.
cn
。
384
桂林理工大学学报
2016 年
用行业在
Hadoop
开发和应用上已有大量的前期投 改主机名(主机名和
IP
地址的映射),配置
hosts
文
人和上线应用系统,以及
Hadoop
形成的包含各种 件(在/
etc/hosts
中添加机器名和相应的
IP
);③创
丰富的工具软件的完整生态环境,同时也随着
Ha
-
建用户;④配置
ssh
,使
mastei
•主机与每台
slave
d
〇〇
p
自身向新一代系统的演进和不断改进,在今
主机实现无密码登陆;⑤安装
JDK
;⑥安装
Ha
⑦在
mastei
•主机上配置好, 再分发到各台
后相当长一段时间内,
Hadoop
系统将继续发挥其
doop
;
在大数据处理领域的重要作用,同时其他各种新
slave
主机。此外,安装
Hadoop
后需修改环境变
的系统也将逐步与
Hadoop
系统相互融合和共
量,加人
Hadoop
路径,为方便统一管理,在
Ha
存[5-6]。
doop
根目 录下建立文件夹:
mkdir
tmp、mkdir
Hadoop
的底层框架由
Java
编写,考虑到各种
hdfsN
mkdir
logs
>
mkdir
hdfs/name
N
mkdir
hdfs
/
da
-
计算情况下,有些
Java
代码实现的运算并不高效,
ta
,可将文件夹权限修改为可读写;再修改/
Ha
-
目录下的配置文件:
hadoop
-
env
.
sh
、
而利用
Matlab
写好相应的函数,再由
Java
将其调
doop
/
conf
/
xml
、
hdfs
-
site
.
xml
^
mapred
-
site
.
xml
^
mas
用会显得更加方便[7]。
Java
语言具有跨平台性、
core
-
site
,
^
slaves
;配置
masters
和
slaves
:分别用
gedit
可移植性、多线程、分布式、安全可靠等优点。
ters
但
Java
程序设计语言对一些较为复杂的数值计算
打开
masters
和
slaves
,前者加人
hadoopm
,后者加
的编程较繁琐,编程效率较低。对于较为复杂的
人
hadoops
即可;将配置文件
hosts
、
bashrc
同步到
分析与处理可以采用
Java
及
Matlab
的混合编程,
集群各个节点中,并把配置好的
hadoop
发送到集
实现二者的优势互补。
群中各个节点;对集群的分布式文件系统进行格
式化,并检查系统启动情况。
1.2开发环境安装
① 在
Linux
下安装
eclipse
;
② 安装
eclipse
-
hadoop
插件;
③ 配置
eclipse
;
④ 测试插件是否安装成功。
由于本文所论述的识别车牌方法涉及
Hadoop
1
Hadoop
平台以及
eclipse
开发环境
的搭建
1.1 Hadoop平台介绍
分布式文件系统
HDFS
和分布式计算框架
Ma
pReduce
是
Hadoop
的两大 核心组 成部分。其 中,
HDFS
负责大规模数据集的分布式存储,是一个典
型的主从式体系结构,由1个主节点(
NameNode
)
内部
HDFS
文件系统的工作原理,而开发环境的
和多个从节点(
DataNode
)构成;整个
Hadoop
集群
安装只为了能够让开发者运用自己所擅长的语言
中,只允许同时存在一个
NameNode
节点,它是整
编译出适用于某种特定功能的代码,故关于开发
个系统的主控服务器,用于管理
HDFS
的命名空
环境的具体安装方法及步骤本文不再赘述。
间和协调客户端的文件访问。
MapReduce
构建在
HDFS
之上,为存储在
HDFS
上的数据提供分布式
至此,系统环境搭建已完成[8]。
计算框架,由1个
JobTrackei
•和多个
TaskTracker
组成;
JobTrackei
•负责整个
MapReduce
的资源监控
配下来的计算任务;用户通过客户端将编写好的
MapReduce
程序提交到
JobTrackei
•端,之后
Ma
2
Matlab
的调用与
MapReduce
的运
算执行
车牌识别需经过触发拍照、图像采集、图像
预处理、车牌定位、字符分割、字符识别、输出
和作业调度,
TaskTrackei
•负责执行
JobTrackei
•分
2. 1 Matlab车牌识别算法
pReduce
作业被分解为若干个
Map
Task
和
Reduce
结果等一系列过程,其中字符识别为核心内容。
Task
,任务调度器按照一定的调度策略(可配置)
目前,用于车牌字符识另|
J
(
OCR
)的算法已经有很
将任务分配到适当的
TaskTrackei
•上执行。两者紧
多种,主要有基于模板匹配的
OCR
算法[9]、基于
密结合、相互协调,为
Hadoop
高效、可靠地处理
特征分析的字符识别算法及基于人工神经网络的
OCR
算法[1°]。本文以基于模板匹配车牌识别
Mat
-
大数据提供了保障。
分布式计算的简略实施步骤如下:①集群下
lab
算法为例,实现在
Hadoop
云计算平台上
Java
每台计算机安装
Lmux
操作系统;②每台计算机修
调用
Matlab
混合编程的车牌识别处理过程。
第2期
蔡春晓等:基于
Hadoop
的
Java
调用
Matlab
混合编程的车牌识别
385
如图1所示,基于模板匹配的
OCR
算法过程
输入
deploytool
,在
Name
中输入名字,在
Location
为:首先对待识别字符进行二值化,并将其尺寸
中选择路径,最后在
Type
中选择
Java
Package
。
(3) 在
Matlab
中找到
Java
Package
窗口,
大小缩放为字符数据库中模板的大小,然后与所
有的模板进行匹配,最后选最佳匹配作为结果。
加
class
文件,因为此文件就是以后导入到
Java
中
模板匹配是图像识别方法中最具代表性的基本方
要作为一个对象的名字,故当命名
class
文件的时
法之一[11],它是将从待识别的图像或图像区域中
候需要注意,其本身即为放在
new
后面作为构造
提取的若干特征量与模板相应的特征量逐个进行
函数的类名,本文命名为
test
。
比较,计算它们之间规化的互相关量,其中互相
(4) 点击类名下的
Add
files
,将刚才编辑
m
等相关函数文件加到
test
,
prj
当
关量最大的一^个就表期间相似程度最局,可将
的
m
文件
test
,
图像归于相应的类。通常情况下用于匹配的图像
各自成像条件存在差异,本文采用相减的方法求
得字符与模板中最相似的字符,然后找到相似度
最大的输出[12]。
图1车牌识别算法
Fig. 1 License plate recognition algorithm
2. 2 Java对于Matlab的调用
考虑到计算的各种情况,有些用
Java
代码实
现的计算难免会显得不够高效。而利用
Matlab
写
好相应的计算函数,然后打包成
jar
•包供
Java
调
用,在某些情况下会更加方便。以下说明如何实
现这一过程:
(1) 确定计算机上已安装
Matlab
或者
Matlab
动态链接库,并且完成
Java
的运行环境配置,
Matlab
的版本必须为2006
b
+ (包括2006
b
或更高
版本),因为只有在这些版本中才有
Matlab
Builder
for
Java
(也叫
Java
Builder
) [13]。
(2) 打开
Matlab
,在
Command
Window
框中
中。
(5) 打包:在
Matlab
安装的目录中找到“
toolbox
javabuilder
jar
javabuilder
.
jar
’’ 白勺文件,在
刚刚打包的文件夹中找到对应的包,本文为
test
,
jar
•,将这两个
jar
•包导入到
Java
项目当中,新
建
Java
类文件
test
,
java
,这个
Matlab
文件转为了
Java
类就可以直接被
Java
项目调用。
2. 3 MapReduce执行流程
借助
Hadoop
框架及云计算核心技术
MapRe
duce
来实现数据的计算和存储, 并且将
HDFS
分
布式文件系统和
HBase
分布式数据库很好地融入
到云计算框架中,从而实现云计算的分布式、并
行计算和存储,并具有很好的处理大规模数据的
能力。
MapReduce
的任务可分为两个阶段:
Map
阶
段和
Reduce
阶段。每个阶段都使用键值对作为输
入和输出,1〇类型可由程序员进行选择。一个
MapReduce
工作单兀,包括输入数据
、MapReduce
程序和配置信息。作业控制由
J
〇
bTmCker
(
l
个)和
TaskTmcker
(多个)执行。
MapReduce
程序执行时,
输入的数据会被分成等长的数据块,这些数据块
即为分片。
Map
任务运行在本地存储数据的节点
上,才能获得最好的效率。
Map
的结果只是用于
中间过渡,这个中间结果要传给
Reduce
任务执
行,
Reduce
任务的结果才是最终结果,
Map
中间
值最后会被删除。
一个
MapReduce
工作(
job
)会将文件系统中的
数据输入并分隔为多个独立的分块(
split
);每个
分块都会被提交给一个
Map
任务处理;经
Map
任
务处理后,所有具有相同属性的数据会被提交给
一个
Reduce
任务处理;
Reduce
任务将处理结果输
回文件系统。而本文使用到
MapReduce
最核心的
功能则需通过对
Map
任务与
Reduce
任务的编程实
一
386
桂林理工大学学报
2016 年
现。
数据集合(类型为
Itemble
〈
Text
》,作为
value
输入)
进行任务配置:
job
.
setOutputKeyClass
(
key
3_
T
.
进行归类合并,并按照时间顺序进行排序后输出
class
) ;
job
.
setOutputValueClass
(
value
3 _
T
.
class
);
(类型为
Text
,作为
value
输出)。
编写
Map
extends
Mapper
•类时实现数据映射过程
实验中具体的识别过程为:首先取字符
I
旲板,
接着依次取待识别字符与模板进行匹配,将其与
模板字符相减,得到的〇越多就越匹配。把每一
幅相减后图〇值最多个数对应的模板保存下来,
“〈key
1
,value
1》一
key
2,
value
2〉” ;
编写
Reduce
ex
tends
Reducer
•类 时实现 数据归 约过程 “
〈
key
2 ,
list
(
value
2 ) ) —>►〈
key
3,
value
3》”
Q
数据输入方法:数据在进入
Map
任务前首先需
即为识别出来的结果[14]。识别结果如图2所示。
设置4组分别包含有100、500、1 000、
要经过分隔和格式化的过程;输入数据经过分隔形
成若干个相互无关的输入分片
(Input
Split
),各个
2 000张车牌信息的随机图像,测试系统在单机情
输入分片中的每条数据记录都会被格式化为〈
key
,
况和分布式情况下的处理耗时,其中分布式又分
slave_l
)、双节点(
slave
_2)和三节点
value
〉的形式传递给
Map
任务;输入方法由
Input
-
为单节点(
Format
接口类的实现定义 #
(
slave
_3)3种情况。在得到相同输出结果的情况
下,系统耗时如图3所示_
车牌号码:苏
3实验结果与分析
本文搭建的
Hadoop
云平台由4台普通
PC
组
成,其中1台作为
NameNode
节点(
Master
),其余
3 台作为
DateNode
节点(
Slave)。NameNode
节点用
于存放系统目录和分配计算任务等,
DateNode
节
点用于存储实际数据和提供计算资源_
本文所实现的车牌识别系统能从车牌图像中
自动提取车牌区域,自动分隔字符,进而对字符
进行识别,得到车牌号码。整个车牌识别系统的
核心功能为车牌定位与字符识别,但其他功能也
是重要组成部分,关系着整个系统的准确性与效
率。在切割过程中会有对中文单个字符进行切割
的现象,可以通过修改配置参数或者用基于距离
2
8
5555
识别结果
FA5 5 5 5
图2
Fig. 2 Recognition results
OI
OI
OI
6
OI
4
的分割方法对车牌进行切割解决,主要需要完成
MapReduce
处理过程设计、
InputFormat
功能设计、
Map
任务功能设计、
Reduce
任务功能设计等。
MapReduce
处理过程的设计:输入文件为带
100 500 1 000 2 000
图像数量/张
图3
Fig. 3
图像识别系统耗时
Time used in image recognition system
有元数据和图像数据的车牌消息源文件;
Map
任务
为从车辆照片中识别获得数字化车牌;
Reduce
任
可知,在单机和1个节点的情况下,系统耗
务为对具有相同车牌的元数据进行归类和排序;
时接近,且单机处理速度稍快,这是由于单机环
输出文件为含有车牌轨迹和定位信息的结果文件。
境下省去了主机与节点间通信和数据交换的时间
Map
任务功能的设计:对图像数据(类型为
开销。随着节点数的增加,系统处理速度显著提
Bufferedlmage
,作为
Value
输人)进行检测,测定车
升,同时由于采用
Java
调用
Matlab
处理,处理过
牌位置,并进行倾斜校正;再将车牌分隔为宇符后
程更加灵活,并且图像数据量越大,分布式并行
对字符进行模板对比识别;得出数字化的车牌序列
处理的优势越明显。实验结果显示,当图像达到
2 000张时,基于云架构的系统较单机系统的处理
(类型为
Text
,作为
Key
输出)。
Reduce
任务功能的设计:对具有相同序列化
速度快了2倍左右。因此,基于云平台的车牌识
车牌(类型为
Text
,作为
Key
输入和输出)的元
别系统在处理海量图像数据时,性能优于传统单
第2期
蔡春晓等:基于
Hadoop
的
Java
调用
Matlab
混合编程的车牌识别387
机识别系统。
[3] Zhao X M, Ma H D, Zhang H T, et al. Metadata extraction
and correction for large-scale traffic surveillance videos
4结束语
由于目前技术限制,文中所阐述的车牌识别
[C ] //2014 IEEE International Conference on Big Data,
2014
:
412-420.
[4]
罗军舟,金嘉晖,宋爱波,等
.
云计算:体系架构与关键
技术还有一些问题,其解决方案如下:(1)本程序
使用的是投影法进行车牌字符切割,会有对中文单
个字符进行切割的现象,可以通过修改配置参数或
者用基于距离的分割方法对车牌进行切割解决;
(2)文件调用,程序本身不能识别
HDFS
文件系统
路径,所以程序运行时调用的是本地系统的模板
文件,这样会降低效率。解决方法有两个:第一
是将程序中的路径替换成
HDFS
文件路径;第二
是将模板文件放到每一台机器的统一路径下。
采用
Java
与
Matlab
混合编程来实现
MapRe
duce
功能不仅在识别 车牌的效率有 了大幅提升,
技术
[J].
通信学报,
2011,32 (7): 3-21.
[5]
王鹏,黄华峰,曹珂
.
[M].
云计算:中国未来的
IT
战略
云计算研究进展综述
[J
].计
版
.
陈昊鹏,译
.
北京:
计模式
[M]. 2
版.张
北京:人民邮电出版社,
2010.
[6]
张建勋,古志民,郑超
.
算机应用研究,
2010, 27 (2): 429 -433.
[7] EchelB. Java
编程思想
[M]. 4
机械工业出版社,
2007.
[8] MetskerSJ
,
WakeWC. Java
设
逸,史磊,译
.
北京:电子工业出版社
,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
].上海
点石成金
:JSP +Ajax
网站开
交通大学学报,
2000, 34 (5): 672 -675.
参考文献:
[1]
何苏勤,杨美荟
.
[13]
张银鹤,唐有明,王俊伟
.
嵌人式视频监控系统实时性研究
[J].
发典型实例
[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.
计算机工程,
2009, 35 (4): 235 -237, 240.
[2]
董西成
.Hadoop
技术内幕:深人解析
MapReduce
架构设
计与实现原理
[M].
北京:机械工业出版社,
2013.
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 recognition plays a
more important role in the traffic regulation and vehicle tracing than before. Present bulkiness of vehicle informa
tion and the capacity of stand-alone data processing can not meet the real-time requirements. The powerful stor
age system of HDFS and data solution of Map Reduce are used to improve license plate recognition algorithm af
ter 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
版权声明:本文标题:基于Hadoop的Java调用Matlab混合编程的车牌识别 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1710332223a568104.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论