基于matlab车牌识别系统设计与实现.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南阳理工学院本科生毕业设计(论文)
学院:电子与电气工程学院
专业:电气工程及其自动化
学生:
指导教师:
完成日期2014 年 5 月
南阳理工学院本科生毕业设计(论文)
车牌识别系统设计与实现
Design and Implementation of License Plate Recognition System
总计:30页
表格:1个
插图:19幅
南阳理工学院本科毕业设计(论文)
车牌识别系统设计与实现
Design and Implementation of License Plate Recognition System
学院:电子与电气工程学院
专业:电气工程及其自动化
学生姓名:
学号:
指导教师(职称):
评阅教师:
完成日期:
南阳理工学院
Nanyang Institute of Technology
车牌识别系统设计与实现
[摘要]汽车车牌的识别系统是现代智能交通管理的重要组成部分之一。

车牌识别系统使车辆管理更智能化,数字化,有效的提升了交通管理的方便性和有效性。

车牌识别系统主要包括了图像采集、图像预处理、车牌定位、字符分割、字符识别等五大核心部分。

本文主要介绍图像预处理、车牌定位、字符分割三个模块的实现方法。

本文的图像预处理模块是将图像灰度化和用Roberts算子进行边缘检测的步骤。

车牌定位和分割采用的是利用数学形态法来确定车牌位置,再利用车牌彩色信息的彩色分割法来完成车牌部位分割。

字符的分割采用的方法是以二值化后的车牌部分进行垂直投影,然后在对垂直投影进行扫描,从而完成字符的分割。

[关键词]:MATLAB;图像预处理;车牌定位;字符分割
Design and Implementation of License Plate Recognition System Electrical Engineering and Automation Specialty Yang Hui-bin Abstract:Car license plate recognition system is an important part of the modern intelligent traffic management. The vehicle license plate recognition system management more intelligent, digital, effectively improve the convenience and effectiveness of traffic management. License Plate Recognition system includes five core part of the image acquisition, image preprocessing, license plate location, character segmentation and character recognition.
This paper describes the image preprocessing, license plate location, character segmentation method of three modules. Image pre-processing module of this article is to image gray and step by Roberts operator edge detection. Plate positioning and segmentation using mathematical morphology is used to determine the license plate location method, and then use the color information of the license plate color segmentation method to complete the license plate parts division. The method used is based on the character segmentation plate after binarizing the vertical projection, the projection and the vertical scanning, to complete split characters.
Keywords:MATLAB softwar; image preprocessing; license plate localization;character segmentation
目录
1 引言 (1)
1.1车牌号识别系统概述 (1)
1.2 MATLAB介绍 (2)
2 车牌识别系统整体方案设计 (2)
2.1 系统的基本原理 (2)
2.2 系统硬件设计 (3)
2.3 系统软件设计 (4)
2.3.1 图像预处理及其MATLAB实现 (5)
2.3.2 车辆号码牌定位 (6)
2.3.3车辆号码牌的字符分割 (6)
2.3.4 车辆号码牌的识别 (6)
3 图像预处理及其MATLAB实现 (7)
3.1 图像的读取 (7)
3.2 图像的灰度化处理 (8)
3.3 图像的边缘检测及提取 (9)
3.4 图像的平滑处理 (10)
4 车辆号码牌定位 (12)
4.1 车辆号码牌的区域分割 (12)
4.2车牌号码的初定位 (13)
4.2.1 图像二值化的基本原理 (14)
4.2.2 车辆号码牌的二值化 (15)
5 车辆号码牌的字符分割 (17)
5.1字符分割 (17)
5.2 字符归一化 (18)
6 车辆号码牌的识别 (18)
结束语 (20)
参考文献 (21)
附录 (22)
致谢 (30)
1 引言
1.1车牌号识别系统概述
(1)车牌号识别系统的研究背景
随着经济社会的迅猛发展,人们的生活水平的提高,私有车辆不断增多,公路上的车辆超速,超载以及日常丢车的现象越来越严重,尤其在高速公路的出口或者进口处,由现在的科技的限制无法采用自动计费方式,所以就造成了收费缓慢,造成了交通的堵塞,严重影响了社会的安定和人们的日常生活,为了提高车辆的管理效率,缓解公路上的交通压力,我们必须找到一种解决方案。

汽车车牌是每辆车的名片,在生活中每辆车的车牌是不同的,因此车牌是确定每辆车的依据。

而城市尤其是大中城市的公路交通管理变得越来越复杂,智能交通管理系统的设计和实施因而受到大众和政府的重视,汽车牌照自动识别可用于公路路口,停车场,高速公路收费站以及收费公路路段(如隧道)等场合,车辆号码牌识别系统,对现在人们的生活有着极大的现实意义,它大大提高了交通管理水平,为人们的出行带来了便利[1]。

(2)选题的目的与意义
随着人们生活水平的逐渐提高,私家车的出现越来越多,城市交通的压力扩大,如何高效进行交通管理也成为现在生活中所关注的焦点问题,于是各种各样的交通道路监视、管理的系统出现在了人们的视线当中,这些系统主要是通过对其过往的车辆进行检测,提取中间的交通数据,以达到监控,管制,指挥调度的目的。

汽车车牌的识别是当中的重要环节,是实现现代化交通管理和智能化的关键,也是现今交通工程研究领域的重点。

识别算法的好坏关系到识别的正确性好高效性。

而传统设备如IC卡识别因价格昂贵,设备复杂无形中增加了企业的成本,因此基于图像处理的车牌识别方法,努力提高车牌识别系统的性能是有非常重要的现实意义。

(3)国内外发展状况
在上个世纪人们就开始了对车牌识别技术的开发和应用。

车牌识别系统最主要的就是怎样获得车牌图片并自动从图像中分析出车辆号码牌。

在车牌识别系统研究中,许多的新技术和新方法被不断地提出并应用,例如图像处理技术、模糊数学理论、神经元网络算法等等,也有人将一些传统方式和高新技术相结合来进行应用,但到目前为止在车牌识别的过程中,虽然运用了很多的技术方法,但由于外界环境光线变化、光路中有灰尘、季节环境变化及车牌本身被污染而模糊等条件的影响,使得车牌识别系统一直处于实验室阶段,得不到很好的应用;而且,很多的方法都需要大量的数值计算,不能很好地满足实时性要求。

由于各种客观的不利环境因素存在,还没有一种解决办法可以作为最有效的方式来解决应用中的所有技术难题。

所以车辆号码牌识别系统的研究具有非常重
要的现实意义。

国外在这方面的研究工作开展较早。

早在上世纪70年代,英国就在实验室中完成了"实时车牌检测系统,的广域检测和开发。

同时代,还诞生了面向被盗车辆的第一个实时自动车牌监测系统。

直至今日,国外对车牌检测的研究已经取得了一些令人瞩目的成就,如YuniaoCul提出了一种车牌识别系统,在车牌定位以后,利用马尔科夫场对车牌特征进行提取和二值化,对样本的识别达到了较高的识别率。

关于车牌识别技术及定位系统研究,在我国已经有了十几年的发展历程,目前系统的应用还处于起步阶段,大规模投入使用的成熟系统还没有出现,汽车牌照识别系统作为改进交通管理的有效工具,技术水平仍需完善。

由于我国汽车车牌识别的特殊性, 采用任何一种单一识别技术均难以奏效。

目前正在研制的无源型汽车牌照智能识别系统综合利用了车辆检测技术、计算机视觉(Computer Vision) 技术、图象处理技术、人工智能技术和人工神经网络技术等, 是一个比较有发展前途的车牌识别系统。

1.2 MATLAB介绍
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。

是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。

它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平[2]。

MATLAB和Mathematica、Maple并称为三大数学软件。

它在数学类科技应用软件中在数值计算方面首屈一指。

MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连matlab开发工作界面接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

2 车牌识别系统整体方案设计
2.1 系统的基本原理
车辆牌照识别系统的基本工作原理为:将摄像头或其它图像采集装置采集到的包含车辆牌照的图像输入到计算机中进行图像预处理,再经过定位,并分割出包含牌照字符的矩形区域,最后对牌照字符进行二值化并将其分割成单个字符并输出车牌号码的数字。

我们知道采集的彩色图像包含大量颜色信息,会占用计算机较多的存储空间,并且会降低图像处理速度,因此对图像进行识别等处理时,通常将彩色图像转换为灰度图像,
以加快处理速度。

对图像进行灰度化处理、边缘提取、再对车牌进行定位。

然后字符分割、车牌识别[3]。

具体步骤如图1所示:
采集
图片
图片
预处理
车牌
定位
字符
分割
车牌
识别
车牌
显示
图1 系统基本原理示意图
2.2 系统硬件设计
系统的硬件主要是对车辆号码牌进行图像采集的设备,其主要作用就是对车辆号码牌进行采集和存储,车牌识别系统的基本硬件配置由摄像机、主控机、采集卡和照明装置等组成。

例如在十字路口车辆管理系统中,系统硬件主要包括车辆传感探测器、高性能工控计算机、高分辨率CCD摄像机、CCD自动亮度控制器、高放大倍数镜头和视频采集卡等。

在此系统中首先是探测车辆的所在位置和行驶状况等。

常用的有微波雷达通过型探
测器、测速雷达探测器、声探测器、光探测器、红外探测器、电磁感应探测器和压敏探测器等。

应用场合较多的是红外探测器和电磁感应环探测器。

它们利用编码调制信号,主要特点是增强抗干扰的能力,具有较强的可靠性。

当车辆通过时,前端工控机利用红外线探测到车辆经过的信号时,控制图像采集卡抓拍图像,并对抓拍的汽车图像进行牌照识别,同时控制摄像机光圈的大小,以适应外界环境不同的光照条件。

这样就完成了图像的采集过程。

本课题主要软件的研究即对matlab的运用,主要工作是设计软件,对已摄取到的车辆照片进行一系列处理,实现车辆号码牌的识别。

2.3 系统软件设计
本课题软件方面主要采用MATLAB对硬件设备采集到的图像进行全面处理,进而达到识别车牌号码的目的。

硬件设备采集到图片后首先要考虑图像的格式。

目前比较常用的图像格式有 *.BMP、*.JPG、 *.JPEG、 *.GIF、 *.TIF 、*.TIFF、 *.PNG 、*.PCX、 *.XWD、 *.HDF、*.ICO 、*.CUR 等,MATLAB 的图像处理工具箱,功能十分强大,支持的图像文件格式丰富,如*.PNG、*.JPG、*.GIF、*.PCX、*.BMP等。

软件系统的编写大多采用C语言或者MATLAB语言,本课题选用了 MATLAB语言。

因为MATLAB具有以下优点[4]:
(1) 用户使用方便
MATLAB语言是一种解释执行的语言(在没被专门的工具编译之前),它灵活、方便,其调试程序手段丰富,调试速度快,需要学习时间少。

人们用任何一种语言编写程序一般都要经过四个步骤:编辑、编译、链接,以及执行和调试。

各个步骤之间是顺序关系,编程的过程就是在它们之间做瀑布型的循环。

MATLAB语言与其他语言相比,较好的解决了上述问题,把编辑、编译、链接和执行融为一体。

它能在同一画面上进行灵活操作,快速排除输入程序中的书写错误、语法错误以及语义错误,从而加快了用户编写、修改和调试程序的速度,可以说在编程和调试过程中它是一种比VB还要简单的语言。

具体的说,MATLAB运行时,如直接在命令行输入MATLAB语句(命令),包括调M文件的语句,每输入一条语句,就立即对其进行处理,完成编译、链接和运行的全过程。

又如,将MATLAB源程序编辑为M文件,由于MATLAB磁盘文件也是M 文件,所以编辑后的源文件就可以直接运行,而不需要进行编译和链接。

在运行M文件时,如果有错,计算机屏幕上会给出详细的出错信息,用户经修改后再执行,直到正确为止。

所以说,MATLAB语言不仅是一种语言,广义上讲是一种该语言的开发系统,即语言调试系统。

(2) 编程效率高
MATLAB是一种面向科学与工程计算的高级语言,允许使用数学形式的语言编写程序,且比BASIC、FORTRAN和C等语言更加接近我们书写计算公式的思维方式,用
MATLAB编写程序犹如在演算纸上排列出公式与求解问题。

因此,MATLAB语言也可通俗地称为演算纸式科学算法语言。

由于它编写简单,所以编程效率高,易学易懂。

(3) 移植性和开放性很好
MATLAB是用C语言编写的,而C语言的可移植性很好。

于是MATLAB可以很方便地移植到能运行C语言的操作平台上。

MATLAB合适的工作平台有:Windows系列、UNIX、Linux、VMS6.1和PowerMac。

除了内部函数外,MATLAB所有的核心文件和工具箱文件都是公开的,都是可读可写的源文件,用户可以通过对源文件的修改和自己编程构成新的工具箱。

(4) 扩充能力强,交互性好
高版本的MATLAB语言有丰富的库函数,在进行复杂的数序运算时可以直接调用,而且MATLAB的库函数同用户文件在形成上一样,所以用户文件也可作为MATLAB的库函数来调用。

因而,用户可以根据自己的需要方便地建立和扩充新的库函数,以便提高MATLAB的使用效率和扩充它的功能。

另外,为了充分利用FORTRAN、C等语言的资源,包括用户已编好的FORTRAN、C语言程序,通过建立Me调文件的形式,混合编程,方便地调用有关的FORTRAN、C语言的子程序,还可以在C语言和FORTRAN 语言中方便地使用MATLAB的数值计算功能。

(5)语句简单,内涵丰富
MATLAB语言中最基本最重要的成分是函数,其一般形式为
[a,b,c,...]=fun(d,e,f,...),即一个函数由函数名,输入变量d,e,f,...和输出变量a,b,c,...组成,同一函数名F,不同数目的输入变量(包括无输入变量)及不同数目的输出变量,代表着不同的含义(有点像面向对象中的多态性)。

这不仅使MATLAB的库函数功能更丰富,而且大大减少了需要的磁盘空间看,使得MATLAB编写的M文件简单、短小而高效。

(6)方便的绘图功能
MATLAB的绘图是十分方便的,它有一系列绘图函数(命令),例如线性坐标、对数坐标、半对数坐标及极坐标,均只需调用不同的绘图函数(命令),在图上标出图题、XY轴标注,格(栅)绘制也只需调用相应的命令,简单易行。

另外,在调用绘图函数时调整自变量可绘出不变颜色的点、线、复线或多重线。

这种为科学研究着想的设计是通用的编程语言所不能及的。

2.3.1 图像预处理及其MATLAB实现
图像在形成、传输或处理过程中,由于获取图像工具的影响,获取图像无法完全体现原始图像的全部信息。

受多种因素的影响,如系统噪声、光学系统失真、曝光不足或过量、相对运动等,往往会与原始景物之间或图像与原始图像之间产生了某种差异,这种差异称为降质或退化。

因此要改善图像数据,抑制不需要的变形或者增强。

对于后续
处理来说,以提取图像特征为目的的图像预处理在图像处理过程中显得非常重要。

2.3.2 车辆号码牌定位
牌照的定位是牌照识别系统的关键技术之一,其主要目的是在经图象预处理后的原始灰度图象中确定牌照的具体位置。

在采集到的图像中车辆号码牌均在自然背景下,在自然背景中准确地确定牌照所在区域是整个识别过程的关键。

首先对采集到的图像进行全面搜索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域分析、评判,最后选定一个最佳的区域作为牌照区域,并将其从图象中分割出来。

车辆定位流程图如图2所示:
图2 车牌定位流程图 2.3.3车辆号码牌的字符分割
完成车辆号码牌定位后,再将号码牌区域分割成单个字符,然后进行识别。

针对车牌字符串的特点,字符分割一般采用垂直投影法。

由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符、尺寸限制和一些其他条件。

利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。

车辆号码牌字符分割流程图如图3所示:
图3 车辆号码牌字符分割流程图 2.3.4 车辆号码牌的识别
目前用于车牌字符识别中的算法主要有两种,分别是基于模板匹配的字符识别算法以及基于人工神经网络的字符识别算法。

基于模板匹配的字符识别的基本过程是:首先对待识别字符进行二值化并将其尺寸大小缩放为字符数据库中模板的大小;然后与所有的模板进行匹配;最后选最佳匹配作为结果。

用人工神经网络字符识别进行字符识别主要有两种方法:一种方法是先对待识别字符进行特征提取,然后用所获得的特征来训练神经网络分类器。

识别效果与字符特征的提取有关,而字符特征提取往往比较耗时。

因此,字符特征的提取就成为研究的关键。

另一种方法则充分利用神经网络的特点,直接把待处理图像输入网络,由网络自动实现特征提取直至识别。

实际应用中,牌照识别系统的识别率与牌照质量和拍摄质量密切相关。

牌照质量会受到各种自然因素的影响,如
输入
图像 车牌 定位 开闭 运算 边缘 处理
图像 预处理 水平投 影校正 去掉车
牌外框 切割 字符
寻找字 符中心
字体褪色、牌照被遮挡、牌照倾斜、高亮反光、多牌照、假牌照等等;实际拍摄过程也会受到环境亮度、拍摄亮度、车辆速度等等因素的影响。

这些影响因素降低了牌照识别的识别率,也正是牌照识别系统的困难和挑战所在。

在本次设计中我们选用的方法就是基于模板匹配的字符识别的方法,这种方法虽然工作量较大,但是本方法相对而言容易实现。

3 图像预处理及其MATLAB实现
利用摄像头拍摄到的车辆图像往往存在很多噪点,因此在进行识别前要进行车辆图像的预处理。

常用的图像预处理方法包括图像的灰度变换,图像平滑等处理方法。

车辆图像的预处理主要目的是使车辆图像尤其是牌照区域的图像的质量得到改善,同时保留和增强车牌中纹理和颜色的信息,去除可能影响牌照区域纹理和颜色信息的噪点,为牌照定位提供方便。

同时图像预处理是整个系统的首个处理过程对以下一系列的处理过程奠定了基础。

其流程图如图4所示:
车辆图像读

灰度校正
提取边缘
平滑处理
图4 图像预处理流程图
3.1 图像的读取
在MATLAB中,使用函数imread来读取图像文件,函数的调用格式如下:
imread('filename')
Imread 所支持的图像格式有很多,我们在此为大家呈现一些重要的图像格式。

如表1所示[5]:
表1 imread 所支持的一些常见图像格式 格式名称
描 述 可识别扩展符 TIFF
加标识的图形文件格式 .tif,.tiff JPEG
由联合图像专家组开发的图像格式 .jpg,.jpeg GIF
图形交换格式 .gif BMP
Windows 位图 .bmp PNG
可移植网络图形 .png XWD X Windows 转储 .xwd
3.2 图像的灰度化处理
灰度图像即指黑白图像,即只包含亮度信息,不包含色彩信息的图像。

真彩色图像都是由三基色R,G,B 图像合成后显示的,其原理是自然界中客观存在的任一种颜色都可由3种相互独立的颜色按一定的比例混合而成——R (红),G ,(绿),B (蓝)。

对于灰度图来说0代表黑,255代表白,1-254的每个值分别代表了介于黑色与白色之间的所有深浅不同的灰色色调。

在MATLAB 中用函数rgb2gray 实现图像灰度化的转换,通过加权法平均法,平均值法,最大值法三种方法,实现彩色图像的灰度化处理[6]。

三种算法的计算过程如下:
(1)加权平均值法:按照一定的权值,对R 、G 、B 的值加权平均,即:
3/)(B G R B G R B G R ωωω++===
其中,R ω、G ω、B ω分别为R 、G 、B 的权值。

(2)平均值法:使转化后R 、G 、B 的值为转化前R 、G 、B 的平均值
3/)(B G R B G R ++===
(3)最大值法:使转化后R 、G 、B 的值等于转化前3 个值中最大的一个,即:
)(B G R M A X
B G R 、、=== B G R ωωω、、去不同的值会得到不同的灰度图。

经过函数的计算我们就可以将读入图片进行灰度化处理,本次设计中所需图片的原图和灰度图如图5和图6所示:
图5 车辆原图
图6 车辆灰度图
3.3 图像的边缘检测及提取
图像的边缘信息是重要的图像信息,图像边缘是指图像局部强度变化最显著的部分,主要存在于目标物体、目标物体与背景、区域与区域(包括不同的色彩)之间,是图像分割、形态分析等图像分析的重要基础,因此边缘检测的方法是图像分析与识别领域中的一个十分引人关注的课题。

所谓边缘,是指其周围像素灰度有变化的那些像素的
集合。

图像中目标的边缘是由灰度不连续性反应的。

边缘检测的主要作用是精确定位边缘和抑制噪点,基本思想是利用边缘增强算子,凸显出图像中的局部边缘,然后再定义像素的“边缘强度”,通过设置门限来提取边缘点集。

图像中车辆牌照具有比较显著特征的一块图象区域,其特征是:该图像是近似水平的矩形区域;其字符串都是水平方向排列的;在整体图象中的位置固定。

由于牌照图象的这些特点,经过适当的图象变换和处理,其在整幅图像中可以明显地呈现出其边缘。

以达到边缘提取的目的。

MATLAB图像处理工具箱也专门提供了边缘检测的函数,即edge函数。

edge函数支持5中边缘检测算子,它们分别是Roberts 边缘算子、Prewitt 算子、Sobel 算子、拉普拉斯高斯算子、Canny算子,此外还有过零点算子方法。

Prewitt算子和Sobel算子都是一阶的微分算子,前者是平均滤波,后者是加权平均滤波且检测的图像边缘大于2个像素。

这两种算子对灰度逐渐变低的图像有较好的检测效果,但是对于混合多复杂噪声的图像处理效果就不理想[7]。

本次设计中采用Roberts 边缘算子,因为Robert算子定位较精确,但由于不包括平滑处理,所以对噪声比较敏感。

经过Roberts 边缘算子检测的图像如图7所示:
图7 边缘检测后图像
3.4 图像的平滑处理
图像的平滑处理属于空间域滤波增强的手段,在图像的获取和传输过程中原始图像会受到各种噪声的干扰,使图像质量下降。

为了抑制噪声、改善图像质量,要对图像进行平滑处理。

抑制或消除这些噪声而改善图像质量的过程称为图像的平滑。

图像平滑的目的是为了消除噪声。

一般情况下,减少噪声的方法可以在空间域或频率域进行处理,主要有邻域平均法、中值滤波法、低通滤波法等,邻域平均法即通过提高信噪比,取得较好的平滑效果;空间域低通滤波采用低通滤波的方法去除噪声;以及频域低通滤波法通过除去其高频分量就能去掉噪声,从而使图像得到平滑。

图像的平滑是一种实用的数。

相关文档
最新文档