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

和人民生活水平的提升,车辆数目不断增加,通过

的重点研究项目,得到了一些国际厂商的支持,

车牌识别来统计车辆轨迹的方法对于交通管制的

FaceBook

Yahoo

以及阿里巴巴等互联网巨头,

作用也变得愈发重要[1]。为了能够快速存储和处

这使得

Hadoop

迎来了它的快速发展[2]。

在短短的几年中,

Hadoop

成为了目前为止最

理庞大的车牌号信息数据,必须借助分布式处理平

台。

Hadoop

Apache

基金会所开发的一种分布式

为成功、最广泛使用的大数据处理主流技术和系

基础架构,具有尚可罪性、尚拓展性、尚效性、尚

统平台,并成为一种大数据处理事实上的工业标

容错性、低成本等一系列特性,用户可以轻松地

准[3],得到工业界大量的进一步开发和改进,并

Hadoop

上开发和运行处理海量数据的应用程

在业界和应用行业,尤其是互联网行业得到广泛

序。

Hadoop

框架最核心的设计

HDFS

MapRe

­

的应用。

由于在系统性能和功能方面存在不足,

Ha

-

duce

分别可以实现海量数据存储与海量数据计算。

2006年初,通过借鉴

Google

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


本文标签: 车牌 数据 识别