文档库 最新最全的文档下载
当前位置:文档库 › 基于MATLAB的车牌分割及数字识别系统

基于MATLAB的车牌分割及数字识别系统

基于MATLAB的车牌分割及数字识别系统
基于MATLAB的车牌分割及数字识别系统

学号:24092200017

南湖学院

毕业设计(论文)

题目:基于MATLAB的车牌分割

及数字识别算法设计

作者罗树英届别2013

系别机械与电子工程系专业电子信息工程指导老师吴健辉职称副教授

完成时间2013.05

摘要

车牌识别技术是智能道路交通管理的重要内容,其识别的准确性和可靠性直接影响到交通管理系统的性能。车牌识别技术包括车牌图像获取、车牌定位、车牌分割、车牌校正、车牌字符分割、车牌字符归一化和车牌字符识别,本文重点针对车牌图像的分割和车牌数字的识别进行了算法研究和设计,同时也对其它步骤进行了探讨。论文首先对获取的车牌图像进行了预处理,包括车牌图像增强、车牌区域提取、车牌几何校正以及车牌字符分割和归一化,然后设计了BP网络算法,最后在MATLAB平台上设计实现了以上各种算法。实验结果表明,本文中的分割算法能准确的获取字符区域并实现对字符的分割和归一化,经过训练后的BP网络能稳定、可靠的实现对分割后字符的识别,实验结果达到预期要求。

关键词:MA TLAB;车牌分割;图像预处理;数字识别

Abstract

License plate recognition technology is an important content of intelligent traffic management, accuracy and reliability identification directly affects the performance of traffic management system. License plate recognition technology include license plate image acquisition, license plate location, license plate segmentation, license plate correction, license plate character segmentation, normalization of license plate character segmentation and license plate character recognition. This paper mainly design and research on the algorithm for license plate image segmentation and license plate number recognition, but also for other steps. Firstly, the thesis get the license plate image preprocessing, including license plate image enhancement, plate region extraction, plate geometric correction and license plate character segmentation and normalization, and then designs the BP network algorithm, finally use the MATLAB platform to design algorithms to implement above. Experimental results show that the segmentation algorithm in this thesis can obtain character area and realize the character segmentation and normalization accurately, after training the BP network can implement the recognition for character segmentation stably and reliably, the experimental reaches expectation.

Keywords: MATLAB; License plate segmentation; Image preprocessing; Digital identification

目录

摘要........................................................................................................................................ I ABSTRACT ............................................................................................................................... I 1 绪论 (1)

1.1引言 (1)

1.2车牌识别技术概述 (1)

1.3车牌分割和数字识别的发展历史和现状 (2)

1.4车牌分割和数字识别在车牌识别中的作用 (3)

1.5本文的主要内容与结构安排 (3)

2 车牌分割方法 (4)

2.1车牌获取 (4)

2.2车牌预处理 (4)

2.3车牌分割 (7)

3 车牌数字识别方法 (11)

3.1数字识别概述 (11)

3.2车牌数字特点 (11)

3.3基于神经网路的车牌数字识别 (12)

4 基于MATLAB的算法设计与实现 (15)

4.1MATLAB概述 (15)

4.2车牌分割算法设计 (15)

4.3车牌字符识别算法设计 (24)

5 总结与展望 (31)

5.1总结 (31)

5.2展望 (31)

参考文献 (32)

致谢 (34)

1 绪论

1.1 引言

近年来,由于国内外的交通迅速发展,车牌识别系统作为数字摄像、计算机信息管理、图像分割和图形识别技术在智能交通领域得到广泛的应用,该项技术成为了智能交通管理系统中不可或缺的重要组成部分,例如道路交通监控、交通事故现场勘察、交通违章自动记录、高速公路超速管理系统、小区智能化管理等各方面,是智能交通管理系统中高效、时效的最重要手段之一[1-2]。目前,全球各国都在研究适合于本国的车牌识别系统,美国、日本、韩国等诸多国家都已经研究出相关的识别系统(基于传感器)。由于引进这些系统成本极高,而且引进的技术也不一定适用于我国的车牌以及实际的交通环境,所引进的系统往往并不能满足我国需求,尽管国内市场上已有不少投入生产并使用的产品,但是这些产品的后续处理仍然需要大量的人工识别,所以车牌识别技术的研究依然是我国目前高科技领域的热门课题之一。为了促使车牌识别技术的快速发展,需要对该项技术提出更高的要求,使得该项技术日益精湛。该系统软件处理具有两大主要模块:图像处理模块和字符识别模块。由于MATLAB语言对图像处理和字符识别异常方便,在数字图像处理中有着其他语言所无法比拟的优势,由于它能直接调用预先编好的函数,使得整个系统有了较高的保障。所以本文介绍的是利用MATLAB对图像处理模块和字符识别模的设计和研究。

1.2 车牌识别技术概述

随着日益发展的计算机科技和不断提高的硬件水平,数字识别技术以及人工智能理论的有效结合,智能车牌识别技术发展日趋完善。智能车牌识别系统以及工作原理实质上就是融合数字摄像技术和计算机信息管理技术,采用先进的数字图像处理工具、数字识别以及人工智能技术,通过对原始图像的采集、预处理、分割、识别等相应的措施,获得我们想要的图像信息,进而实现对车牌字符自动识别的系统,该系统是数字识别技术在现实生活中实际应用中的实践之一。

目前,一个完整的车牌识别系统需要完成从图像采集到字符的识别以及输出的复杂过程,需要硬件和软件两大组成部分。其中硬件包括系统触发、图像采集两个主要组成部分,软件则包含了图像预处理、车牌获取、字符分割以及字符识别四个主要模块。一个完整的车牌识别系统主要结构如图1.1所示:

图 1.1 车牌识别系统结构图

1.3 车牌分割和数字识别的发展历史和现状

自1988年提出车牌识别(License Plate Recognition,LPR)技术以来,人们己经对其进行了广泛的研究,而近些年来,车牌识别的技术发展迅速,就识别基础而言,主要可以分为基于IC(即无线电频率鉴别(REID))或是基于条码识别的间接法和基于图像车牌识别的直接法。原始的图像采集,由于受到外界环境中光线差异、光路中灰尘密度差异、季节环境变化的影响,以及车牌本身比较模糊等诸多客观因素影响,使得LPR技术的发展受到一定的限制。为了解决图像的恶化等问题,国内外的许多研究机构、高校以及公司企业采取的主要采用的方法是主动红外照明摄像或使用特殊的传感器来提高图像的质量,从而提高识别率,但这种做法的同时也使得投资的成本加大了不少,且减小了应用领域,不并适合普遍的推广及工业生产。国外己有不少关于车牌数字识别的文章发表,有相当一部分比较成熟,并已经投入实际生产使用中。早在70年代,国外就已经存在自动车牌检测系统,且应用于检查被盗车辆的情况,车牌识别系统发展到今天,已经达到较高的应用水平。

在车牌识别发展的过程中,也出现了许多不同的技术方法,例如英国IPI公司研发了RTVNPR 系统,新加坡Optasia公司的VLPRS 产品,以色列Hi-Tech公司的See Car System系列产品,HSTOL公司开发的LPR系统,以及中国香港Asia VisionTechnology 公司的VECON产品等较为实用[3]。由于VECON系统和VLPRS系统都只是适合于当地的车牌,摒弃See Car System 对我国的汉字识别较低,加上我国车牌自动识别的研究起步较晚,且我国的车牌并不规范,多样化,不同的车型车牌规格、大小、颜色也不同,这也就造成了对车牌识别相当大的困难。目前,比较适合我国的产品主要有中科院自动

化研究所汉王公司的“汉王眼”、川大智胜软件的ZT2000车牌自动别系统等。与此同时,国内许多研究机构和高等院校也开始对车牌识别系统进行理论研究与实际开发。

1.4 车牌分割和数字识别在车牌识别中的作用

车牌识别系统的核心是微处理器,它基于图像处理、数字识别等技术的高智能电子系统,该系统主要由摄像头、视频采集接口、辅助照明装置、计算机以及识别软件等组成。基本过程是摄像头所拍摄的原始图像通过视频采集接口输入计算机,通过所预设的识别软件进行识别并输出。因此,在车牌识别中,车牌分割和数字识别占有主要的作用。

在车牌识别系统中,车牌分割需要完成的任务是将原始图像中的车牌区域分割出来,并将车牌字符准确的切分出来。在正式识别前,我们要做的仅仅是字符的分割,字符分割的好坏,直接影响着字符识别的准确率。也就是说,一个好的车牌识别系统的前提是有一个好的车牌分割模块,无法将字符很好的从原始图像中分割出来,意味着字符无法被准确的识别,也就意味着该车牌自动识别系统无法投入实际中应用。

经过图像预处理、车牌定位、字符分割并校正后,才可以进行字符识别。车牌识别中最关键的步骤就是字符识别。字符识别模块是目前最难处理的部分,却也是车牌识别技术中最关键的部分。字符的识别率和识别时间是字符识别性能的主要技术指标。快速、准确以及具备较强的鲁棒性是字符识别的目标。一个好的车牌自动识别系统,关键就看其字符识别的性能。由此可知,车牌分割和数字识别是车牌识别技术中的两大主要技术指标。其中最关键的是数字识别技术。

1.5 本文的主要内容与结构安排

本文研究的内容包括了车牌识别系统的五个主要组成部分的算法,提出了有效的解决策略,进行了测试,并完成了车牌识别系统的开发。本文的主要内容共分为五章,内容安排如下:第一节绪论,概述了车牌识别技术,总结了国内外车牌识别系统的发展历史和现状,介绍了车牌分割和数字识别在车牌识别中的作用,最后简述了本文的主要内容与结构安排;第二节车牌分割方法的研究,首先介绍了车牌获取的方法,接下来简述了车牌预处理的基本算法,包括灰度话、二值化、滤波、增强、边缘检测等,然后是车牌分割的基本步骤,最后介绍了归一化处理。第三节车牌数字识别方法的研究,概述了数字识别的现状,简述了车牌数字特点,最后介绍了基于BP神经网络的车牌数字识别的算法。第四节主要介绍的是基于MATLAB的算法设计与实现,主要介绍MATLAB概述、车牌分割算法设计、车牌字符识别算法设计三个方面,包括系统的算法流程、程序设计,并给出了设计的仿真结果与分析。最后一部分是结论,总结了本文的研究成果,并做出了分析和评价,同时对未来提出了展望。

2 车牌分割方法

2.1 车牌获取

车牌获取即图像采集部分,大体分为检测和成像两个部分。车辆检测即使用传感器技术,检测目标区域有无车辆。当机动车辆在路过预先设置好的摄像头并达到触发条件,摄像头即可拍摄出原始图像,图像采集卡将所拍摄的图像从视频信号转化为数字信号传输到计算机中,这就完成了车牌的获取过程。其中车牌获取流程图如图2.1所示 电子眼

图像

采集图像预处理数字

图像

图 2.1车牌获取流程图

实质上,车牌获取就是指在实际拍摄的图像中确定车牌区域、位置,以便提取、分割车牌区域。受自然等客观条件的影响,需要对车牌进行预处理,以便提高车牌的识别率。车牌识别主要包括三个步骤:(1)对拍摄的图片进行格式识别、灰度化、二值化、滤波、边缘检测等图片预处理;(2)利用各种算法将已通过预处理的图片准确定位其车牌的位置,并将车牌所处的位置分割出来,为接下来的字符切割做好相关准备;(3)对切割出来的字符进行归一化和识别。

2.2 车牌预处理

照片拍摄的好坏受许多外界因素决定, 例如光照强度因素,晴天与阴天所拍摄的照片质量是不一样,白天和晚上所拍摄的照片质量更是不同;再比如说,车辆行驶速度因素,行驶慢的原始图像会比行驶快的原始图像质量要好一些,此外,过快的车速,会导致照片的字迹模糊不清,这也就必定在一定程度上影响着字符识别率。 这也就是为什么要对原始图像进行灰度化、二值化、滤波等预处理的原因[4]。

2.2.1 灰度化

目前,我国车牌的原始图像采集,由于基本上都是通过摄像机、数码相机等拍摄设备拍摄获取,所以一般情况下,原始图像为彩色图像。由于彩色图像包含着大量的颜色

信息,且每个像素都具有R、G、B三种不同颜色分量,所以在对其进行处理时,浪费许多系统资源的同时也会降低系统的执行速度。因而,我们需要对原始图像进行灰度化,以便减小图像占用的存储空间。

最基本的灰度化是直接取彩色图像R、G、B三个分量中最大值或平均值代替各分量。由于灰度化后,每一个像素的三个分量都是均等的,解决可彩色图像中颜色差异的问题,只存在亮度上的差异。灰度图像存在256个亮度级,其中白色的灰度值为255,黑色的亮度级为0[5]。另外,我们也可以采用加权系数对图像进行灰度化,常用到的灰度化公式:

29

*

.5

.2

+

0+

=(2-1)

14

R

G

B

87

I*

*

.1

其中I为灰度化之后的像素值,R、G、B分别为红、绿、蓝的像素。

2.2.2 增强

拍摄车牌图像时往往受到许多条件的限制和干扰,这使得图像的灰度值与实际景物不完全相同。成像系统有它一定的亮度范围,亮度最大值与其最小值之比称为对比度。因为成像系统的有限亮度,常使得对比度不足,导致图像视觉效果很差,这也就直接影响了图像的后续处理。因此,研究者常常通过灰度变换和直方图均衡化来增强对比度,以改善视觉效果。

造成对比度不足的原因主要有:(1)目标的远近不同导致的图像中央区域和边缘区域的灰度失衡;(2)摄像头扫描时各点的灵敏度差异产生的灰度失真;(3)曝光不足或过度而导致灰度值限定在较小的范围。这时可以采取灰度变换增强灰度变化范围,丰富灰度层次,以达到增强图像对比度的目的。用线性单值函数,对图像内各像素点作线性扩充,从而有效的改善图像的视觉效果。

为了克服上述问题,本文采用灰度信息与背景信息相结合的局部灰度修正增强方法,其基本原理是将原图像的灰度和背景图像区域相减,实现图像的增强,即所谓的形态学top-hat变换[9]。

设用h表示top-hat变换后的结果,则top-hat变换可定义为:

-

)

h

=

(b

f

f

(2-2)

其中,f表示原灰度图, 表示使用结构元素b对集合f进行开操作[6]。

图像的top-hat变换对增强目标区域,隐藏背景细节有很大用处,最初的命名是由于使用了带有一个平顶的圆柱形或平行六面体形的结构元素。

2.2.3 二值化

灰度图像一般有256个灰度级的单色图像,能表现出比较丰富的明暗度。但在车牌识别时,我们需要彻底的从原始图像中分离出目标。为了减少背景像素的干扰,保留并

增强目标区域的信息,通常将图像分为目标和背景两部分。即得到的图像只有0和1两个灰度级,常规是将目标区设为1,背景区为0,这样就可以得到我们所说的二值图像。用数学式可以表示为:

???>=<=T j i g T j i g BW ),(,1),(,0 (2-3)

其中,BW 为二值图像某像素的像素值,),(j i g 为该像素在灰度图像中对应的灰度值。T 为选定的阈值。

图像的二值化处理即将灰度图像中除了灰度值为0的像素点外,其余的像素点均设为255.通过二值化处理后的整个图像明显呈现出黑白效果。为了得到理想的二值图像,一般采用封闭、连通的边界定义不叠交的区域。二值化算法一般分为全局阈值算法和局部阈值算法或称为自适应阈值算法[7-8]。

从二值图像可以得到图像中对象物的形状特征的主要信息。与灰度化后的图像相比,二值化后的图像具有以下几个特点:大量减小了信息量,加快了处理速度,降低了成本,实用价值更高。所以一般情况下,在对车牌字符分割前,会对图像进行二值化处理。

2.2.5 滤波

图像的本质其实就是光电信息,图像噪声主要有以下三个来源:图像在信号的转换过程中所引入的噪声;大气层中的浪涌等引起的脉冲干扰;粒子性或不连续性所引起的自然起伏性噪声[10]。由于图像的质量被噪声所恶化,导致图像模糊不清,甚至连图像的本身特征都会被淹没或改变,这给图像的分析与识别带来了较大的困难。为了消除图像的噪声,常常采取滤波措施,且合适的滤波还可以锐化图像与增强图像的边缘信息。

常用的滤波方法有空间域滤波和同态滤波两种,其中空间滤波又分为三种:平滑滤波、中值滤波、高通滤波。其中,平滑滤波主要的作用是模糊和消除噪声,常用的方法是领域平均法,即求邻近像素点的平均亮度。这种方法简单,且处理速度快,但在降低噪声的同时使图像产生了模糊,尤其是在边缘与细节处。中值滤波是非线性滤波,也是领域算法,类似卷积。与平滑滤波不同的是,它的计算不是加权求和,当其像素点数为奇数时,则将该领域内的像素按其灰度值排序,再去其中间值作为领域中心像素点的输出值;当其像素点数为偶数时,取排序后的中间两个像素灰度值的平均值作为输出值[11]。为了锐化图像突出图像边缘,常对图像采用了高通滤波,在增强图像边缘的同时孤立的噪声点也得到了增强。高通滤波的效果也可以通过原始图像减去低通图像得到,这种方法称为非锐化掩模法。比较常见的高通滤波的冲激响应阵列有以下三种:

101

510

101----=H 1111911112--------=H 1212521213----=H (2-6)

2.2.4 边缘检测 边缘是图像的重要特征,图像理解、分析的第一步通常是边缘检测。由于边缘是图像灰度变化最严重的区域,传统的边缘检测通常是通过计算图像中像素的梯度值来确定边缘点。此外,比较常见的图像边缘提取算子有Robert 梯度算子、滤波算子、Canny 算子、拉斯算子等。拉斯算子前几种算子都是通过计算一阶导数来检测边缘,但这几种算子导致检测到的边缘点过多,不利于后期处理。而拉斯算子是二阶导数段子,再找出梯度局部最大值对应点后才确定其为真正的边缘点。其中拉普拉斯的运算公式为:

22222),(y x f f y x f ??+??=? (2-4)

拉普拉斯算子同样是借助模板实现,其中最为常见的模板如下:

0101

4-10

10 1

111

8-1111 (2-5) 上文所提到的几种边缘检测算子都对噪声非常的敏感,也就是说必然会在计算的过程中加大噪声的成分。因此,通常在处理含有比较大的噪声图像时,需要先对图像进行平滑操作,然后再进行微分,这也就产生了新的边缘检测方法——LOG 边缘检测。这种检测方法需要用高斯函数对图像进行平滑处理后,再用拉普拉斯算子计算[09]。

2.3 车牌分割

2.3.1 车牌定位

车牌定位的本质是把车牌图像从含有汽车和背景的图像中提取出来,即输入车牌原始图像输出车牌图像。在自然环境下,原始图像采集背景复杂,光照不均,在自然背景中准确地确定牌照区域是整个牌照是别的关键。经过图像于处理后所得到的图像,在垂直方向上的面积投影出现了峰-谷-峰的特性。根据这种特性,可以检测到车牌的区域,即车牌区域定位法,这种初步定位后的车牌还需要进一步微定位。对初步确定出来的车牌进行微定位,而所谓的微定位法即对基本定位后的车牌图像进行局部分析,以便进一

步确定字符范围,缩减车牌的左右、上下边界,这有利于后续的车牌处理,确定车牌的具体位置后再提取车牌[12]。微定位技术包括三部分:(1)横向定位;(2)纵向定位;(3)微定位。

需要在大范围的原始图像中找到车牌的区域,需要对原始图像进行搜索,找到符合车牌特征的部分区域作为车牌候选区域,在对其进行深层次的分析、评判,计算,最终找到真正的车牌区域,并将该区域从图像中分割出来。

伪目标 伪目标 车牌区域

图 2.2车牌图像定位示意图 目前,国内外车牌定位的主要方法有:特征定位法,边缘检测定位法,数学形态定位法,小波变换法,开运算定位法等。本文中所采用的是开运算定位法。

2.3.2 几何校正

在实际的车牌获取过程中,通常是由道路某侧或上方的摄像机拍摄所得。因此,所得到的原始图像车牌区域角度、距离有一定的差距,也就是说原始图像中的车牌存在一定的倾斜度。主要的三种倾斜方式是: 水平上的倾斜、垂直上的倾斜、水平和垂直上的倾斜。

车牌的倾斜度校正前,需要先对车牌的倾斜进行检测。其检测公式如下:

?

??<≥∑++=,车牌倾斜,车牌水平22331i i k k i n n (2-7) 其中,i n 表示第 i 行的0、255的跳跃次数。

常见的几种倾斜校正的方法为:(1)基于霍夫变换的校正算法,(2)基于车牌投影变换的校正算法[13-14],(3)基于直线拟合的校正算法[15]。本文所采用的方法是基于车牌投影变换的倾斜校正算法。

基于车牌投影的倾斜校正算法实质上是一种基于Radon 变换的校正算法。用二维函数),(y x G 表示原始图像坐标为(x,y )的像素值,某方向上的投影可用该方向上的积分表示。积分公式如(2-8)所示:

')sin 'cos ',sin 'cos '()',(dy x y y x G x R l ?+-=θθθθθ (2-8)

其中)',(x R θ为θ的周期函数,T=180°,且θ∈[0°,180°]。坐标变换的公式如(2-9)所示:

?

??+-=+=θθθθcos sin 'sin cos 'y x y y x x (2-9) Radon 变化所检测的直线是)',(x R θ在坐标)',(x θ的峰值,可根据横坐标和纵坐标确定一条直线。

2.3.3 分割算法

字符分割实质上是把车牌上的字符分割成一个个单个的字符,传统的字符分割方法有投影法[16-18]、模板匹配法、聚类分析法[19-20]。由于投影法比较准确、编程较简单,且易于实际操作,能满足在复杂环境下,所以本文采用的是投影法分割车牌字符。 投影法的具体操作如下:

(1)对灰度化的车牌图像从下向上逐行扫描,逐行统计出像素值为 255 的像素的个数,当其个数大于 7时(车牌有 7 个字符),认为寻找到车牌字符的下边界,同理,找到车牌的上边界。去除车牌字符上下边界以外的区域,之后设车牌的高度为 height ,宽度为 width 。

(2) 对车牌图像从左向右逐列扫描,逐列统计像素值为 255 的像素的个数,并将结果保存在一位数组 count[width+1]中,其中 count[i]用于存储第i 列像素值为 255 的像素的个数。

(3)根据汉字特征,需要设置两个阈值来分割一个汉字字符。设两个阈值分别为 threshold 1, threshold 2。从左向右扫描经过预处理后的车牌图像,记第一个大于阈值 threshold 1的列为汉字的开始位置S ,记第一个小于阈值 threshold 1的列为H ,比较这两列的宽度H-S 与 threshold 2的大小直到找到与S 列相差的宽度大于 threshold 2且满足像素值为255的像素的个数小于阈值的列,设为车牌的汉字字符的结束列。在分割不连通的汉字的时候,这种改进的方法起到作用是显著的。

(4)之后的英文字母和阿拉伯数字不存在不连通性的问题,所以只要利用第一个阈值 threshold 1就可以分割出车牌剩下的字符。

(5)若出现像素值为 255 的像素个数大于阈值 threshold 1时记为车牌字符开始的位置,小于阈值 threshold 1时记为车牌字符的结束位置。如此重复的下去,直到字符全

部分割出来为止。流程图如图2-1所示:

求垂直投影的平均值

求垂直投影的最小值

取阈值

计算字符上升点

计算谷宽度

计算字符距离

找到字符中心位置

图 2.3车牌图像定位示意图

2.3.4 归一化处理

由于原始图像采集的时候,图像像素值不一致,所以经过字符切割后所得到的字符大小也不一致,因此需要在进行字符匹配之前需要对字符图像进行归一化处理。不言而喻,归一化处理的目的是使得车牌字符与标准模块中的字符特征一致。归一化处理可以分为倾斜度校正和大小归一化两个主要部分,其中倾斜度校正部分使用的是MATLAB 工具箱中的Imrote函数。由于大小归一化值得是长度和宽度上分别乘以某个比例因子,使其大小与模块中的字符大小一致,大小归一化最为常用的方法是将整个牌照图像按线性比例放大或缩小到标准模快的大小。归一化流程图如2.4所示:

[m,n]=size(d),逐排检查有没有白色像素点,设置1<=j

若图像两边s(j)=0,则切割,去除图像两边多余的部分

切割去图像上下多余的部分

根据图像的大小,设置一阈值,检测图像的X轴,

若宽度等于这一阈值则切割,分离出七个字符

归一化切割出来的字符图像的大小为40*20,

与模板中字符图像的大小相匹配

图2.4 归一化流程图

3 车牌数字识别方法

3.1 数字识别概述

早期,约在1870年时字符识别作为视力障碍人的辅助工具。随着计算机的日益发展,约在29世纪40年代,OCR(字符识别Optical Character Recognition,简称OCR)系统问世,但在当时也只是商业界的数据处理手段。20世纪50年代中期以后,商业OCR 机并正式开始投入市场。自50年代后,人们开始研究印刷体字符,随着算法的日益完善,到80年代末90年代初字符识别已经发展到可以识别出手写字体。在当时看来,手写汉字的识别成为字符识别的最终目标之一。到1992年时,单个字符的手写体达到较高的识别率,特别是数字的识别率接近95%,于是识别系统开始步入市场。

虽然国内对车牌字符研究起步较晚,但国外在字符研究方面早已有所成就,如英国、日本、德国、加拿大等不少国家已经研究出适合本国的车牌识别系统,并且拥有比较高的字符识别率和比较少的识别时间。由前文可知,车牌识别系统中最为关键的技术是字符识别,字符识别中的主要指标是识别率和识别时间。目前,国内外的车牌字符识别的方法[21]主要有模板匹配字符识别算法、神经网络字符识别算法[22]、统计特征匹配法、支持向量机模式识别算法等几种方法,其中最早使用于车牌识别的是模版匹配字符识别算法,然而目前最受研究者和学者们青睐的时神经网络识别算法。

随着我国的数字图像处理技术的发展以及实际应用,我国利用数字图像处理技术对字符进行处理识别的技术也有所进展,目前国内比较具有代表性的研究院、高校有清华大学、北京信息工程学院、中字汉王、北京邮电大学、沈阳自动化等。

3.2 车牌数字特点

目前,我国的车牌主要分为蓝底白字和黄底黑字两种[23]。一般情况下,国内轻型车所使用的是蓝底白字车牌,常常用于一些中小型的民用汽车,也是目前国内最为常见的车牌。大型车辆一般所采用的是黄底黑字车牌,通常是大型民用汽车、重型载重车辆,这种车牌与蓝底白字的车牌相比较少,但也是我国常用车牌。除此以外,我国还存在一些比较特殊的车牌,例如使馆车牌、领馆车牌、军车车牌等。目前,我国车牌的具体规格,如表3-1所示:

表2-1 车牌格式

分类

外廓尺寸(mm ) 颜色 面数 大型民用汽车

440*140/440*220 黄底黑字 2 小型民用汽车

440*140 蓝底白字 2 公安专用汽车

440*140 白底红“GA ”、黑字 2 武警专用汽车

440*140 白底红“WJ ”、黑字 2 大使馆外籍汽车

440*140 黑底白字及空心“使”字 2 领事馆外籍汽车

440*140 黑底白字及空心“领”字 2 外籍汽车

440*140 黑底白字 2 实验汽车

440*140 白底红字,数字前有“试”字 2 学习汽车

440*140 白底红字,数字前有“学”字 2 临时牌照

白底红字,数前有“临时”字 2 汽车补用牌照

白底黑字 2 车辆移动证

白底红字

2 本文主要分析蓝底白字和黄底黑字的车牌,具有以下几个特点:

(1)车牌拍照一共七位,第一个为汉字,一般为各个省级行政区的简称;

(2)第二个字符一般为英文字符,作为地市一级代号,后五位是数字和字母的排列组合;

(3)车牌大小尺寸高度统一为140mm 左右,宽度统一为均为440mm ,字体规范、科学、容易辨认;

(4)字符总长度409mm ,单个字符宽度45mm ,高度为90mm ,第二三个字符之间的间隔是34mm.

这也就是说标准的车牌字符识别可以分为三部份,按照车牌上的七个字符的排列原则可知,首位是省名缩写的汉字,接下来是因为字母,接下来的一位可能是数字也可能是字母,末四位是数字。所以车牌的额构造大体为“65432 11X X X X X X S ”的车牌中,其中1S 代表着省级行政区(汉字)的集合,可能出现的汉字集合为{湘,苏,皖,京…};1X 为车牌所在地的英文字母代码的集合,构成的集合时出I 以外的25个字母{A ,B ,C …};32X X 可能是数字也可能是字母,所以有34个字符构成{0,1,…,9,A ,B ,…Z};654X X X 只可能是数字,所以可能的集合时{0,1,2,…,9}。

3.3 基于神经网路的车牌数字识别

由于字符识别率是车牌识别研发成功与否的关键指标,可知字符识别在车牌识别系

统中的作用是极其重要的,字符识别的主要涉及到特征提取和识别方法两方面,并且两者是继承互补的关系。经过训练后的神经网络不仅可以有效地提取信号、图像等感知模式的特征,还可以调试现有的启发模式识别系统,使其更好的解决不变量探测、自适应、抽象或者概括等一些常见问题,也就是说神经网路可以很好的应用于数组识别系统算法的设计之中。

预处理好以后的饿图片,需要使用神经网络对样本进行训练,本文中所使用的是前馈后向传播网络(BP 网络)[20-22]。BP 网络的设计主要包括了输入层、隐层、输出层以及各层之间的传输函数的设计。

BP 网络用于模式分类是基于以下原理,首先,隐层将输入模式空间的样本映射到隐层模式空间;其次输入层将隐层模式空间的输出模式样本映射到输出模式空间;最后,根据判断依据判决规则决定决策空间,进行模式分类。结构示意图如图3.1所示: 图3.1 BP 网络结构图 其中单个的神经元结构如图3.2所示:

图3.2 单个神经元结构图

nj

ω

1- 1x i x n

x ij

ω j 1ω ∑()f θ

j y 2x

i x

n x 2y k y m y l h 1

h …

… …h … l h

设第k-1层中第i 个神经元的输入为)

1(-k i

y ,输出为)

(k j y ,则输入与输出的关系如公式3-1所示: )1k N

1i (k)j θ1)(k i y 1)(k ij ωf((k)j y ∑-=---= (3-1)

式中:)1(-k ij ω是第k-1层第i 个神经元到第k 层的第j 个神经元的连接权值;k N 是第k 层神经元的数目;)(k j θ是第k 层神经元的阈值;f(x)是神经元的传递函数。 尽管BP 网络在模式识别中取得相对比较大的成功,但还是存在一些不足:学习率与稳定性的矛盾、学习率的选择缺乏有效的方法、训练过程可能陷入局部最小网络、没有确定隐层神经元数的有效方法。这需要我们不断地改变训练方法,从而找到比BP 网络更适合字符识别的神经网络,以便提高字符识别的精度、准确率以及时间。

4 基于MATLAB的算法设计与实现

4.1 MATLAB概述

MATLAB 语言是由Clever Moler博士于20世纪80年代开发的一种功能强、效率高、简单易学的数学软件,它是MATrix LABoratory(矩阵实验室)的缩写,设计者的初衷是为了解决“线性代数”课程的矩阵运算问题。该语言具有四大特点:(1)具有丰富的工具箱,功能十分强大,支持的图像文件格式非常丰富,如*.BMP、*.JPG、*.JPEG、*.GIF、*.TIF、*.TIFF、*.PNG、*.PCX、*.XWD、*.HDF、*.ICO、*.CUR 等,MATLAB7.1 提供了20 多类图像处理函数,几乎涵盖了图像处理的所有技术方法,是学习和研究图像处理的人员难得的宝贵资料和加工工具箱;(2)具有超强的数值运算功能,超过500种数学、统计、科学以及工程方面的函数运算,并且简单快捷;(3)具有强大的数据可视化功能,高质量的图形;(4)具有开放式的构架和可延拓的特性,除了内部函数外,MATLAB主包文件和各种工具箱均可读可改,还可以加入自己的函数构成新的工具包。

MATLAB函数按其功能可分为:数值的分析、数值与符号的计算、工程与科学的绘图、控制系统的设计与仿真、数字图像的处理、数字信号的处理、通讯系统的设计与仿真、财务与金融工程、图像转换等。MATLAB在图形用户界面(GUI)的制作上做了较大的调整,使得即使在这方面有特殊要求的用户也可以得到相应的满足[23]。本文将给出MATLAB的图像处理工具箱中图像处理与分析的实际应用技术实例。

4.2 车牌分割算法设计

简而言之,投影法实质上是将车牌图像二值化后,将二值图像所有列的垂直投影做一个统计,再利用之前所得到的垂直投影直方图的期望与方差计算阈值,从而根据车牌的形状、车牌的纹理特征、字符特征、字符宽度以及相对位置,可以准确的分割出车牌的字符位置。但是基于投影分割法也有他一定的缺点,例如无法精确地分割出倾斜车牌的字符位置。

4.2.1 算法流程 开始

车牌二值图像

切除周边空白

垂直投影

从左往右查找,垂直投影白色

像素点累计小于10的值的wide

以水平区域(0

,wide )剪切出

判断是否为标准字符保存该字符

将剩余部分保存

并覆盖原先图像

字符个数

是否为7

结束

Y

N

Y

N

图 4.1 车牌分割流程图

4.2.2 程序设计

主要代码:

%ex1505

clc

clear

filename='car.jpg';

基于MATLAB的车牌识别

liccode=char(['0':'9' 'A':'Z' '京津沪渝冀晋辽吉黑苏浙皖闽赣鲁豫鄂湘粤琼川贵云陕甘蒙新青藏桂宁港']); %建立自动识别字符代码表 l=1; [m2,n2]=size(subcol); for k=findmax-4:findmax+3 cleft=markcol5(k)-maxwidth/2; cright=markcol5(k)+maxwidth/2-2; if cleft<1 cleft=1; cright=maxwidth; end if cright>n2 cright=n2; cleft=n2-maxwidth; end SegBw1=sbw(rowtop:rowbot,cleft:cright); SegBw2 = imresize(SegBw1,[32 16]); %变换为32行*16列标准子图 if l==1 %第一位汉字识别 kmin=37; kmax=68; elseif l==2 %第二位A~Z 字母识别 kmin=11; kmax=36; elseif l>=3 & l<=5 %第三、四位0~9 A~Z字母和数字识别 kmin=1; kmax=36; else %第五~七位0~9 数字识别 kmin=1; kmax=10; end for k2=kmin:kmax fname=strcat('D:\sample\',liccode(k2),'.bmp'); SamBw2 = imread(fname,'bmp'); SubBw2 = SamBw2-SegBw2; Dmax=0; for k1=1:32 for l1=1:16 if ( SubBw2(k1,l1) > 0 | SubBw2(k1,l1) <0 ) Dmax=Dmax+1; end end end Error(k2)=Dmax;

车牌识别地matlab程序

( 附录 车牌识别程序 clear ; close all; %Step1 获取图像装入待处理彩色图像并显示原始图像 Scolor = imread('');%imread函数读取图像文件 %将彩色图像转换为黑白并显示 Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图 " figure,imshow(Scolor),title('原始彩色图像');%figure命令同时显示两幅图 figure,imshow(Sgray),title('原始黑白图像'); %Step2 图像预处理对Sgray 原始黑白图像进行开操作得到图像背景s=strel('disk',13);%strel函数 Bgray=imopen(Sgray,s);%打开sgray s图像 figure,imshow(Bgray);title('背景图像');%输出背景图像 %用原始图像与背景图像作减法,增强图像 Egray=imsubtract(Sgray,Bgray);%两幅图相减 ¥ figure,imshow(Egray);title('增强黑白图像');%输出黑白图像 %Step3 取得最佳阈值,将图像二值化 fmax1=double(max(max(Egray)));%egray的最大值并输出双精度型 fmin1=double(min(min(Egray)));%egray的最小值并输出双精度型 level=(fmax1-(fmax1-fmin1)/3)/255;%获得最佳阈值 bw22=im2bw(Egray,level);%转换图像为二进制图像 bw2=double(bw22); %Step4 对得到二值图像作开闭操作进行滤波 、 figure,imshow(bw2);title('图像二值化');%得到二值图像 grd=edge(bw2,'canny')%用canny算子识别强度图像中的边界

基于MATLAB的车牌识别系统研究

上海交通大学 硕士学位论文 基于MATLAB的车牌识别系统研究 姓名:王璐 申请学位级别:硕士 专业:电工理论与新技术 指导教师:陈洪亮 20090101

基于MATLAB的车牌识别系统研究 摘 要 近几年,车牌识别系统作为智能交通的一个重要方向越来越受到重视。车牌识别系统可以应用于停车场管理系统、高速公路超速管理系统、城市十字路口的“电子警察”、小区车辆管理系统等各个领域,对国家的安全发展有很大的作用。虽然目前已有一些车牌识别系统相关产品出现,但是对其算法的研究发展从没有停止,仍有许多学者在做着进一步的研究改进。 本文首先对车牌识别系统的现状和已有的技术进行了深入的研究,在研究的基础上开发出一个基于MATLAB的车牌识别系统。确定了整体设计方案,其中软件部分包括车牌定位、车牌字符切分及车牌字符识别三个模块。车牌定位模块中提出了基于小波变换的车牌边缘提取的算法,以及车牌二次定位的算法,提高了系统在光照条件较差的情况下的定位准确率,该算法对于各种底色的车牌具有良好的适应性;车牌的二值化采用了改进的Otus算法,重新划分了其两维直方图的区域,改进后的算法大大减少了运行时间,对于各种类型的车牌都能达到较好的二值化效果;针对BP神经网络字符识别算法,采用有动量的梯度下降法训练网络,减小了神经网络学习过程的振荡趋势,使得BP网络能够较快的达到收敛,完成车牌字符的识别。对模板匹配算法和BP网络算法进行对比,证明了BP网络算法要优于模板匹配算法。 根据上述算法搭建了一个测试平台。整个测试平台的软件部分采用MATLAB的M语言编写。通过测试平台,对353幅卡口汽车照片进行车牌识别,测试系统的性能。测试结果表明,本课题设计的车牌识别系统可有效地实现车牌识别,为今后的产品化奠定了很好的技术基础。 关键词:车牌识别,小波变换,Otsu算法,模板匹配,BP网络,MATLAB I

基于matlab的车牌号码识别程序代码

基于matlab的汽车牌照识别程序 摘要:本次作业的任务是设计一个基于matlab的汽车牌照识别程序,能够实现车牌图像预处理,车牌定位,字符分割,然后通过神经网络对车牌进行字符识别,最终从一幅图像中提取车牌中的字母和数字,给出文本形式的车牌号码。 关键词:车牌识别,matlab,神经网络 1 引言 随着我国交通运输的不断发展,智能交通系统(Intelligent Traffic System,简称ITS)的推广变的越来越重要,而作为ITS的一个重要组成部分,车辆牌照识别系统(vehicle license plate recognition system,简称LPR)对于交通管理、治安处罚等工作的智能化起着十分重要的作用。它可广泛应用于交通流量检测,交通控制于诱导,机场,港口,小区的车辆管理,不停车自动收费,闯红灯等违章车辆监控以及车辆安全防盗等领域,具有广阔的应用前景。由于牌照是机动车辆管理的唯一标识符号,因此,车辆牌照识别系统的研究在机动车管理方面具有十分重要的实际意义。 2 车辆牌照识别系统工作原理 车辆牌照识别系统的基本工作原理为:将摄像头拍摄到的包含车辆牌照的图像通过视频卡输入到计算机中进行预处理,再由检索模块对牌照进行搜索、检测、定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。 3 车辆牌照识别系统组成 (1)图像预处理:对汽车图像进行图像转换、图像增强和边缘检测等。 (2)车牌定位:从预处理后的汽车图像中分割出车牌图像。即在一幅车辆图像中找到车牌所在的位置。 (3)字符分割:对车牌图像进行几何校正、去噪、二值化以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像

matlab车牌识别课程设计报告(附源代码)

Matlab程序设计任务书 分院(系)信息科学与工程专业 学生姓名学号 设计题目车牌识别系统设计 内容及要求: 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过设计实现车牌识别系统,能够提高学生 分析问题和解决问题的能力,还能培养一定的科研能力。 1.牌照识别系统应包括车辆检测、图像采集、牌照识别等几 部分。 2.当车辆检测部分检测到车辆到达时,触发图像采集单元,采 集当前的视频图像。 3.牌照识别单元对图像进行处理,定位出牌照位置,再将牌 照中的字符分割出来进行识别,然后组成牌照号码输出。 进度安排: 19周:Matlab环境熟悉与基础知识学习 19周:课程设计选题与题目分析 20周:程序设计编程实现 20周:课程设计验收与答辩 指导教师(签字): 年月日学院院长(签字): 年月日 目录

一.课程设计目的 (3) 二.设计原理 (3) 三.详细设计步骤 (3) 四. 设计结果及分析 (18) 五. 总结 (19) 六. 设计体会 (20) 七. 参考文献 (21) 一、课程设计目的 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过

设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤: 1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置;

matlab车牌识别课程设计报告(附源代码)

Matlab程序设计任务书 目录

一.课程设计目的 (3) 二.设计原理 (3) 三.详细设计步骤 (3) 四. 设计结果及分析 (18) 五. 总结 (19) 六. 设计体会 (20) 七. 参考文献 (21) 一、课程设计目的 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过

设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤: 1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来; c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。

牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与牌照识别互相配合、互相验证。 (1)牌照定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为牌照区域,并将其从图象中分割出来。 流程图: 完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。 字符识别方法目前主要有基于模板匹配算法和基于人工神经网络算法。 基于模板匹配算法首先将分割后的字符二值化,并将其尺寸大小缩放为字符数据库中模板的大小, 然后与所有的模板进行匹配,最后选最佳匹配作为结果。基于人工神经元网络的算法有两种:一种是先对待识别字符进行特征提取,然后用所获得特征来训练神经网络分配器;另一种方法是直接把待处理图像输入网络,由网络自动实现特征提取直至识别出结果。实际应用中,牌照识别系统的识别率与牌照质量和拍摄质量密切相关。牌照质量会受到各种因素的影响,如生锈、污损、油漆剥落、字体褪色、牌照被遮挡、牌照倾斜、高亮反光、多牌照、假牌照等等;实际拍摄过程也会受到环境亮度、拍摄亮度、车辆速度等等因素的影响。这些影响因素不同程度上降低了牌照识别的识别率,也正是牌照识别系统的困难和挑战所在。为了提高识别率,除了不断的完善识别算法,还应该想办法克服各种光照条件,使采集到的图像最利于识别。 clear ; close all;

matlab车牌识别程序代码

% 车牌识别程序主体 clc; close all; clear all; %========================================================== %说明: % % %=========================================================== % ==============测定算法执行的时间,开始计时================= tic %%%%%记录程序运行时间 %=====================读入图片================================ [fn,pn,fi]=uigetfile('*.jpg','选择图片'); I=imread([pn fn]); figure; imshow(I); title('原始图像');%显示原始图像 chepailujing=[pn fn] I_bai=I; [PY2,PY1,PX2,PX1]=caitu_fenge(I); % I=rgb2hsv(I); % [PY2,PY1,PX2,PX1]=caitu_tiqu(I,I_bai);%用HSI模型识别蓝色,用rgb模型识别白色 %================分割车牌区域================================= %===============车牌区域根据面积二次修正====================== [PY2,PY1,PX2,PX1,threshold]=SEC_xiuzheng(PY2,PY1,PX2,PX1); %==============更新图片============================= Plate=I_bai(PY1:PY2,PX1:PX2,:);%使用caitu_tiqu %==============考虑用腐蚀解决蓝色车问题============= bw=Plate;figure,imshow(bw);title('车牌图像');%hsv彩图提取图像 %==============这里要根据图像的倾斜度进行选择这里选择的图片20090425686.jpg bw=rgb2gray(bw);figure,imshow(bw);title('灰度图像'); %================倾斜校正====================== qingxiejiao=rando_bianhuan(bw) bw=imrotate(bw,qingxiejiao,'bilinear','crop');figure,imshow(bw);title('倾斜校正');%取值为负值向右旋转 %============================================== bw=im2bw(bw,graythresh(bw));%figure,imshow(bw); bw=bwmorph(bw,'hbreak',inf);%figure,imshow(bw); bw=bwmorph(bw,'spur',inf);%figure,imshow(bw);title('擦除之前');

车牌识别的matlab程序

附录 车牌识别程序 clear ; close all; %Step1 获取图像装入待处理彩色图像并显示原始图像 Scolor = imread('3.jpg');%imread函数读取图像文件 %将彩色图像转换为黑白并显示 Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图 figure,imshow(Scolor),title('原始彩色图像');%figure命令同时显示两幅图 figure,imshow(Sgray),title('原始黑白图像'); %Step2 图像预处理对Sgray 原始黑白图像进行开操作得到图像背景s=strel('disk',13);%strel函数 Bgray=imopen(Sgray,s);%打开sgray s图像 figure,imshow(Bgray);title('背景图像');%输出背景图像 %用原始图像与背景图像作减法,增强图像 Egray=imsubtract(Sgray,Bgray);%两幅图相减 figure,imshow(Egray);title('增强黑白图像');%输出黑白图像 %Step3 取得最佳阈值,将图像二值化 fmax1=double(max(max(Egray)));%egray的最大值并输出双精度型 fmin1=double(min(min(Egray)));%egray的最小值并输出双精度型level=(fmax1-(fmax1-fmin1)/3)/255;%获得最佳阈值 bw22=im2bw(Egray,level);%转换图像为二进制图像 bw2=double(bw22); %Step4 对得到二值图像作开闭操作进行滤波 figure,imshow(bw2);title('图像二值化');%得到二值图像 grd=edge(bw2,'canny')%用canny算子识别强度图像中的边界 figure,imshow(grd);title('图像边缘提取');%输出图像边缘 bg1=imclose(grd,strel('rectangle',[5,19]));%取矩形框的闭运算 figure,imshow(bg1);title('图像闭运算[5,19]');%输出闭运算的图像bg3=imopen(bg1,strel('rectangle',[5,19]));%取矩形框的开运算

车牌识别的matlab程序(程序-讲解-模板)

车牌识别的matlab程序(程序-讲解-模板)

clc clear close all I=imread('chepai.jpg'); subplot(3,2,1);imshow(I), title('原始图像'); I_gray=rgb2gray(I); subplot(3,2,2),imshow(I_gray),title('灰度图像'); %====================== 形态学预处理====================== I_edge=edge(I_gray,'sobel'); subplot(3,2,3),imshow(I_edge),title('边缘检测后图像'); se=[1;1;1]; I_erode=imerode(I_edge,se); subplot(3,2,4),imshow(I_erode),title('腐蚀后边缘图像'); se=strel('rectangle',[25,25]); I_close=imclose(I_erode,se); %图像闭合、填充图像 subplot(3,2,5),imshow(I_close),title('填充后图像

for i=1:size(location_of_1,1) %寻找所有白点中,x坐标与y坐标的和最大,最小的两个点的位置 temp=location_of_1(i,1)+location_of_1(i,2); if tempmaxi maxi=temp; b=i; end end first_point=location_of_1(a,:); %和最小的点为车牌的左上角 last_point=location_of_1(b,:); %和最大的点为车牌的右下角 x1=first_point(1)+4; %坐标值修正 x2=last_point(1)-4; y1=first_point(2)+4;

基于matlab的车牌识别(含子程序)

基于matlab的车牌识别系统 一、对车辆图像进行预处理 1.载入车牌图像: function [d]=main(jpg) [filename, pathname] = uigetfile({'*.jpg', 'JPEG 文件(*.jpg)'}); if(filename == 0), return, end global FILENAME %定义全局变量 FILENAME = [pathname filename]; I=imread(FILENAME); figure(1),imshow(I);title('原图像');%将车牌的原图显示出来结果如下:

2.将彩图转换为灰度图并绘制直方图: I1=rgb2gray(I);%将彩图转换为灰度图 figure(2),subplot(1,2,1),imshow(I1);title('灰度图像'); figure(2),subplot(1,2,2),imhist(I1);title('灰度图直方图');%绘制灰度图的直方图结果如下所示: 3. 用roberts算子进行边缘检测: I2=edge(I1,'roberts',0.18,'both');%选择阈值0.18,用roberts算子进行边缘检测 figure(3),imshow(I2);title('roberts 算子边缘检测图像'); 结果如下:

4.图像实施腐蚀操作: se=[1;1;1]; I3=imerode(I2,se);%对图像实施腐蚀操作,即膨胀的反操作figure(4),imshow(I3);title('腐蚀后图像'); 5.平滑图像 se=strel('rectangle',[25,25]);%构造结构元素以正方形构造一个se

基于Matlab的车牌识别实现源码

function[]=main(jpg) close all clc tic %测定算法执行的时间 [fn,pn]=uigetfile('timg1,jpg','选择图片') %读入图片 I=imread([pn,fn]); figure,imshow(I);title('原始图像'); %显示原始图像 Im1=rgb2gray(I); figure(2), subplot(1,2,1), imshow(Im1); title('灰度图'); figure(2), subplot(1,2,2), imhist(Im1); title('灰度图的直方图'); %显示图像的直方图 Tiao=imadjust(Im1,[0.19,0.78],[0,1]); %调整图片 figure(3), subplot(1,2,1), imshow(Tiao);title('增强灰度图'); figure(3), subplot(1,2,2), imhist(Tiao); title('增强灰度图的直方图'); Im2=edge(Tiao,'Roberts','both'); %使用sobel算子进行边缘检测figure(4), imshow(Im2); title('sobel算子实现边缘检测') se=[1;1;1]; Im3=imerode(Im2,se); figure(5), imshow(Im3);

se=strel('square',40);%'rectangle',[25,25]/'diamond',25/ Im4=imclose(Im3,se); figure(6), imshow(Im4); title('平滑图像的轮廓'); Im5=bwareaopen(Im4,1500); figure(7), imshow(Im5); title('移除小对象'); [y,x,z]=size(Im5); %返回Im5各维的尺寸,并存储在变量y、x、z中 Im6=double(Im5); %将Im5换成双精度数值 %开始横向扫描 tic %tic计时开始,toc结束,计算tic与toc之间程序的运行时间 Blue_y=zeros(y,1); %产生y*1的全0矩阵 for i=1:y %逐行扫描 for j=1:x if(Im6(i,j,1)==1)%如果Im6图像中坐标为(i,j)的点值为1,即为移除小对象的白色区域, Blue_y(i,1)= Blue_y(i,1)+1;%则y*1列矩阵的相应像素点的元素值加1, end end end [temp MaxY]=max(Blue_y);%temp为向量Blue_y的矩阵中的最大值,MaxY为该值的索引(最大值在向量中的位置) %返回包含最大元素的列,即白色区域最宽的列 %Y方向车牌区域确定 figure(8),subplot(1,2,1), plot(0:y-1,Blue_y),title('行方向白色像素点累计'),xlabel('行数'),ylabel('个数'); PY1=MaxY; while ((Blue_y(PY1,1)>=120)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY; while ((Blue_y(PY2,1)>=40)&&(PY2

基于Matlab的车牌识别算法

基于Matlab的车牌识别算法 摘要 车牌系统是计算机视觉和模式识别技术在智能交通领域的重要应用课题之一。车牌识别系统是以特定目标为对象的专用计算机系统,该系统主要包括三个内容:车牌定位、字符分割和字符识别。其中车牌定位的目的就是从所拍摄的汽车图像中确定车牌的位置,从而便于后续的字符分割和字符识别工作。目前常用的方法有:基于模板匹配的方法、基于特征的方法和神经网络法等。 本设计采用基于模板匹配算法和基于人工神经网络算法对车牌进行定位识别,此算法只对蓝底白字车牌进行分割识别,对黑底白字车牌原则上整个算法可直接适用,。此算法分割出的图像像素值和模板图像达到了一致,由此便避免了切割出的图像像素值不一致所带来的问题。但对白底黑字车牌、黄底黑字车牌,需要对车牌定位算法进行调整,并将图像反转(0变1、1变0)。 关键词:车牌识别系统;字符分割;车牌定位

LICENSE PLATE RECOGNITION ALGORITHM BASED ON MATLAB ABSTRACT License plate system is a computer vision and pattern recognition technology in one of the important application research topic in the field of intelligent transportation. License plate recognition system based on specific goals of a special computer system, the system mainly includes three contents: license plate locating, character segmentation and character recognition. One of the purpose of license plate location is taken from the auto locate the license plate in the image, so as to facilitate the subsequent work character segmentation and character recognition. Now commonly used methods are: based on template matching method, based on the characteristics of the method and neural network, etc. This design USES based on template matching algorithm and based on artificial neural network algorithm to locate license plate recognition, the algorithm is only for blue white license plate segmentation recognition, the algorithm can be directly applicable in principle to the black white plate,. This algorithm to segment the image pixel values and template image, thus to avoid the cut out in the process of image pixel values are not consistent. But black on white background and black text plate, yellow bottom plate, adjustments need to license plate localization algorithm, and the image inversion of (0, 1, 1, 0). Key words: license plate recognition system; Character segmentation; License plate location

基于matlab的车牌定位源程序及运行结果 (1)

I=imread('E:\毕业设计\基于matlab的车牌定位的源程\车牌识别程序 \Car1.jpg') [y,x,z]=size(I); myI=double(I); tic Blue_y=zeros(y,1); for i=1:y for j=1:x if((myI(i,j,1)<=30)&&((myI(i,j,2)<=62)&&(myI(i,j,2)>=51))&&((myI(i,j,3) <=142)&&(myI(i,j,3)>=119))) Blue_y(i,1)= Blue_y(i,1)+1; end end end [temp MaxY]=max(Blue_y); PY1=MaxY; while ((Blue_y(PY1,1)>=120)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY; while ((Blue_y(PY2,1)>=40)&&(PY2=10))&&((myI(i,j,3) <=65)&&(myI(i,j,3)>=40))) Blue_x(1,j)= Blue_x(1,j)+1; end end end PX1=1; while ((Blue_x(1,PX1)<3)&&(PX1PX1)) PX2=PX2-1; end PX1=PX1-2; PX2=PX2+2; Plate=I(PY1:PY2,PX1-2:PX2,:); t=toc figure,imshow(I); figure,plot(Blue_y);grid

最新车牌识别系统MATLAB源代码完整解析

clc; clear all; close all; [filename, pathname, filterindex] = uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';... '*.*','All Files' }, '选择待处理图像', ... 'images\01.jpg'); file = fullfile(pathname, filename);%文件路径和文件名创建合成完整文件名 id = Get_Id(file);%得到file中的所有对象 Img = imread(file);%根据路径和文件名读取图片到Img [Plate, bw, Loc] = Pre_Process(Img); % 车牌区域预处理 result = Plate_Process(Plate, id); % 车牌区域二值化处理 % 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割bw = Segmation(result); words = Main_Process(bw); % 主流程处理 Write_Mask(words, id); % 写出到模板库 str = Pattern_Recognition(words); % 识别 function id = Get_Id(file) % 获取图像id信息 % 输入参数: % file——图像路径 % 输出参数: % id——图像id信息 info = imfinfo(file); FS = [422227 354169 293184 235413 214202 ... 130938 490061 120297 98686 137193 ... 80558 46208 69947 58110 62115 ... 59072 52168 60457 53979 50223]; id = find(FS == info.FileSize); if isempty(id) warndlg('未建立该图像模板库,可能运行出错!', '警告'); id = 1; end function R = Cubic_Spline(P) % 三次样条插值 % 输入参数: % P——节点矩阵 % 输出参数: % R——样条节点矩阵

基于Matlab的车牌识别(完整版)

基于Matlab的车牌识别 摘要:车牌识别技术是智能交通系统的重要组成部分,在近年来得到了很大的发展。本文从预处理、边缘检测、车牌定位、字符分割、字符识别五个方面,具体介绍了车牌自动识别的原理。并用MATLAB软件编程来实现每一个部分,最后识别出汽车车牌。 一、设计原理 车辆车牌识别系统的基本工作原理为:将摄像头拍摄到的包含车辆车牌的图像通过视频卡输入到计算机中进行预处理,再由检索模块对车牌进行搜索、检测、定位,并分割出包含车牌字符的矩形区域,然后对车牌字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。车牌自动识别是一项利用车辆的动态视频或静态图像进行车牌号码、车牌颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些车牌识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的车牌识别系统应包括车辆检测、图像采集、车牌识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。车牌识别单元对图像进行处理,定位出车牌位置,再将车牌中的字符分割出来进行识别,然后组成车牌号码输出。 二、设计步骤 总体步骤为: 车辆→图像采集→图像预处理→车牌定位

→字符分割→字符定位→输出结果 基本的步骤: a.车牌定位,定位图片中的车牌位置; b.车牌字符分割,把车牌中的字符分割出来; c.车牌字符识别,把分割好的字符进行识别,最终组成车牌号码。 车牌识别过程中,车牌颜色的识别依据算法不同,可能在上述不同步骤实现,通常与车牌识别互相配合、互相验证。 (1)车牌定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定车牌区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合汽车车牌特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为车牌区域,并将其从图象中分割出来。 流程图: (2)车牌字符分割 : 完成车牌区域的定位后,再将车牌区域分割成单个字符,然后进行识别。字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足车牌的字符书写格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。 导入原始图像 图像预处理增强效果图像 边缘提取 车牌定位 对图像开闭运算

车牌识别的matlab程序(程序-讲解-模板)

clc clear close all I=imread('chepai.jpg'); subplot(3,2,1);imshow(I), title('原始图像'); I_gray=rgb2gray(I); subplot(3,2,2),imshow(I_gray),title('灰度图像'); %====================== 形态学预处理====================== I_edge=edge(I_gray,'sobel'); subplot(3,2,3),imshow(I_edge),title('边缘检测后图像'); se=[1;1;1]; I_erode=imerode(I_edge,se); subplot(3,2,4),imshow(I_erode),title('腐蚀后边缘图像'); se=strel('rectangle',[25,25]); I_close=imclose(I_erode,se); %图像闭合、填充图像 subplot(3,2,5),imshow(I_close),title('填充后图像'); I_final=bwareaopen(I_close,2000); %去除聚团灰度值小于2000的部分 subplot(3,2,6),imshow(I_final),title('形态滤波后图像'); %========================== 车牌分割============================= I_new=zeros(size(I_final,1),size(I_final,2)); location_of_1=[]; for i=1:size(I_final,1) %寻找二值图像中白的点的位置 for j=1:size(I_final,2) if I_final(i,j)==1; newlocation=[i,j]; location_of_1=[location_of_1;newlocation]; end end end mini=inf;maxi=0; for i=1:size(location_of_1,1) %寻找所有白点中,x坐标与y坐标的和最大,最小的两个点的位置 temp=location_of_1(i,1)+location_of_1(i,2); if tempmaxi maxi=temp; b=i; end end first_point=location_of_1(a,:); %和最小的点为车牌的左上角 last_point=location_of_1(b,:); %和最大的点为车牌的右下角

基于MATLAB的车牌识别课程设计

MATLAB课程设计报告书 课题名称基于MATLAB的车牌识别课程设计 姓名 学号 学院 专业 指导教师 2016年6月21日

基于MATLAB的车牌识别课程设计 目录 一.课程设计目的……………………………………………二.设计原理…………………………………………………三.详细设计步骤…………………………………………… 四. 设计结果及分析………………………………………… 五. 总结……………………………………………………… 六. 设计体会………………………………………………… 七. 参考文献…………………………………………………

一、课程设计目的 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤:

1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来; c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。 牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与牌照识别互相配合、互相验证。 (1)牌照定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合

车牌识别matlab程序[1]

[, pathname] = uigetfile({'*.jpg', 'JPEG文件(*.jpg)';'*.bmp','BMP文件(*.bmp)';}); if( == 0), return, end global %声明全局变量 = [pathname ]; I=imread(); imshow(I); %显示图像I I1=rgb2gray(I);%RGB图转化为灰度图 figure,imshow(I1); w1=medfilt2(I1); figure,imshow(w1); s1=histeq(w1,256); figure,imshow(s1); t1=imadjust(s1); figure,imshow(t1); I2=edge(t1,'robert',0.15,'both'); %用ROBERT算子提取图像边缘 figure,imshow(I2); se=[1;1;1]; I3=imerode(I2,se); %弱化二进制图像I2的边缘 figure,imshow(I3);%为定位车牌,将白色区域膨胀,腐蚀去无关的小物件,包括车牌字符(下面两句) se=strel('rectangle',[25,20]); %用来腐蚀的形状为矩形,面积20*25 I4=imclose(I3,se); figure,imshow(I4); I5=bwareaopen(I4,2000); %去除图像中面积过小的,可以肯定不是车牌的区域。 figure,imshow(I5); [y,x,z]=size(I5); %z=1。y,x分别为I5图像的高和宽 myI=double(I5) %myI=I5; tic %begin横向扫描 white_y=zeros(y,1); %white_y为y行1列的零矩阵 for i=1:y for j=1:x if(myI(i,j,1)==1) %如果myI(i,j,1)即myI图像中坐标为(i,j)的点为白色 %则white_y的相应行的元素white_y(i,1)值加1 white_y(i,1)= white_y(i,1)+1; end end end [temp MaxY]=max(white_y); %temp为向量white_y的元素中的最大值,MaxY为该值的索引(在向量中的位置)

相关文档
相关文档 最新文档