基于MATLAB软件的车牌识别毕业论文.doc

上传人:小小飞 文档编号:3921266 上传时间:2019-10-10 格式:DOC 页数:33 大小:4.37MB
返回 下载 相关 举报
基于MATLAB软件的车牌识别毕业论文.doc_第1页
第1页 / 共33页
基于MATLAB软件的车牌识别毕业论文.doc_第2页
第2页 / 共33页
基于MATLAB软件的车牌识别毕业论文.doc_第3页
第3页 / 共33页
基于MATLAB软件的车牌识别毕业论文.doc_第4页
第4页 / 共33页
基于MATLAB软件的车牌识别毕业论文.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《基于MATLAB软件的车牌识别毕业论文.doc》由会员分享,可在线阅读,更多相关《基于MATLAB软件的车牌识别毕业论文.doc(33页珍藏版)》请在三一文库上搜索。

1、第 1 页 共 33 页基于MATLAB软件的车牌识别作 者: 林维泉 学 号: 02101237 作 者: 孔方方 学 号: 02101273 学院(系): 电子工程学院 专 业: 电子信息工程 题 目: 基于matlab的车牌识别 指导教师: 李洁 职称: 教授 2013年5月焦作大学毕业设计说明书 I 第 1 页 共 33 页摘 要随着经济社会的发展及人们生活水平的提高,机动车辆的数量越来越多,给交通管理带来了很大的压力,所以,我们必须找到一种方法来解决这个问题。因为车牌号的重要地位,我们第一个想到就是设法利用车牌号来对车辆进行管理,所以车牌提取应运而生,用来提高汽车的安全管理水平及管理

2、效率。车牌识别系统主要包括了图像采集、图像预处理、车牌定位、字符分割、字符识别等五大核心部分。关键词:MATLAB、图像预处理、车牌识别与分割目 录1. 绪论1 1.1 本课题的研究背景11.2 国内外发展状况31.3 主要应用领域51.4 设计原理62. MATLAB简介72.1 MATLAB发展历史73各模块的实现113.1设计方案113.2图像预处理113.2.1图像灰度化113.2.2图像的边缘检测123.3车牌定位和分割143.3.1车牌的定位153.3.2车牌的分割163.3.3对定位后的彩色车牌的进一步处理173.4字符的分割和归一化处理17 3.4.1字符的分割18 3.4.2

3、字符的归一化处理193.5 字符的识别194实验结果和分析225实验总结24致谢25参考文献26程序附录27第 33 页 共 33 页第一章 绪论1.1 本课题的研究背景随着经济社会的发展及人们生活水平的提高,机动车辆的数量越来越多,给交通管理带来了很大的压力,所以,我们必须找到一种方法来解决这个问题。因为车牌号的重要地位,我们第一个想到就是设法利用车牌号来对车辆进行管理,所以车牌提取应运而生,用来提高汽车的安全管理水平及管理效率。此外,智能交通系统,简称ITS(Intelligent Traffic System)已成为现代社会道路交通发展趋势。智能交通系统,是在当代科学技术高速发展的背景下

4、产生的。其目标在于将现金的计算机处理技术、数据通信技术、自动控制技术等综合应用于地面交通管理体系,从而建立起一种高效、准确、实时的交通管理系统。公路交通基础建设的不断发展和车辆管理体制的不断完善,为以视觉监控为基础的智能交通系统的实际应用打下了良好基础。车牌号识别系统是基于图像处理技术的基础进行研究的。本课题图像处理分为以下几方面:1.图像数字化其目的是将模拟形式的图像通过数字化设备变为数字计算机可用的离散的图像数据。2.图像变换为了达到某种目的而对图像使用一种数学技巧,经过变换后的图像更为方便、容易地处理和操作。3.图像增强图像增强的主要目标是改善图像的质量。采用某些处理技术来突出图像中的某

5、些信息,削弱或消除某些无关信息,从而有目的地强调图像的整体或局部特征,让观察者能看到更加直接、清晰的分析和处理图像。直方图修正、灰度变换、强化图像轮廓等都是常用的手段。4.图像分割在图像研究和应用中,人们往往仅对图像的某些部分感兴趣。它们一般对应图像中待定的、具有独特性质的区域。图像分割就是把图像中需要的那一个部分分割出来。5.图像分析图像分析的内容分为特征提取、图像分割、符号描述、和图像的检测与匹配。1.2 国内外的发展状况在现代化交通系统中,如何快速准确地提取目标车辆的车牌信息一直是一个技术性难题,它一直制约着交通系统现代化、自动化、智能化的发展脚步。车牌识别技术的研究早在20世纪90年代

6、就已经开始了。技术的核心是通过对拍到的车牌图像进行分析,在非人工千预的情况下自动获取车牌信息,从而确定车辆牌号。在车牌识别系统研究中,许多的新技术和新方法被不断地提出并应用,例如图像处理技术、模糊数学理论、神经元网络算法等等,也有人将一些传统方式和高新技术相结合来进行应用,但到目前为止,由于各种客观的不利环境因素存在,还没有一种解决办法可以作为最有效的银弹,来解决应用中的所有技术难题,它们在系统的准确性和实时性方面虽都有其自己的解决办法和设计方案,但健壮性和鲁棒性均达不到理想要求。因此LPR系统虽然经历了20多年的发展,依然是一个能够被解决但一直没有被妥善解决的问题。国外在这方面的研究工作开展

7、较早。早在上世纪70年代,英国就在实验室中完成了实时车牌检测系统,的广域检测和开发。同时代,还诞生了面向被盗车辆的第一个实时自动车牌监测系统。直至今日,国外对车牌检测的研究已经取得了一些令人瞩目的成就,如YuniaoCul提出了一种车牌识别系统,在车牌定位以后,利用马尔科夫场对车牌特征进行提取和二值化,对样本的识别达到了较高的识别率。EunRyung等利用图像中的颜色分量,对车辆牌照进行定位识别,其中提到了三种方法:以Hough变换为基础的边缘检测定位识别;以灰度值变换为基础的识别算法;以HLS彩色模式为基础的车牌识别系统,识别率分别为81.25%、85%、91.25%。日本对车牌图像的获取也

8、做了大量的研究,并为系统产业化做了大量工作。目前,以色列的Hi一Teeh公司研制的多种see/CarSystem,适用于几个不同国家的车牌识别。新加坡的vLPRs只适合于新加坡的车牌。此外日本、德国等发达国家都有适合自己本国车牌的识别系统。我国做得较好的产品是中科院自动化研究所的汉王眼,另外,亚洲视觉科技有限公司、深圳市吉通电子有限公司以及上海交通大学、清华大学等高校都做过类似的研究。从目前一些产品的性能来看,车牌识别系统的识别率和识别速度都有待提高。因此,研究高速、准确的定位与识别算法是当前的主要任务,图像处理技术的发展与计算机性能的提高都会促进车牌识别技术的发展,提高车牌识别系统的性能。1

9、.3 主要应用领域车牌自动识别系统具有广泛的应用范围,主要应用于:(1)高速公路收费、监控管理;(2)小区、停车场管理;(3)城市道路监控、违章管理;(4)车牌登录、验证;(5)车流统计、安全管理等。车牌自动识别系统应用于这些系统,可以解决通缉车辆的自动稽查问题,可以解决车流高峰期因出入口车流瓶颈造成的路桥卡口、停车场交通堵塞问题,可以解决因工作人员作弊造成的路桥卡口、高速公路、停车场应收款流失的问题,还可以以最简单的方式完成交通部门的车辆信息联网,解决数据统计自动化,模糊查询的问题。1.4 设计原理汽车牌照自动识别技术是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别

10、技术。通过对图像的采集和处理,完成车牌自动识别功能,能从一幅图像中自动提取车牌图像,自动分割字符,进而对字符进行识别.第二章 MATLAB简介2.1 MATLAB发展历史简介MATLAB软件是由美国Mathworks公司推出的用于数值计算和图形处理的科学计算系统环境。MATLAB是英文MATrix LABoratory(短阵实验室)的缩写。它的第1版(DoS版本1.0)发行于1984年,经过10余年的不断改进,现今已推出它的WindoM 98/NT版本(6.1版)。新的版本集中了日常数学处理中的各种功能,包括高效的数值计算、矩阵运算、信号处理和图形生成等功能。在MATLAB环境下,用户可以集成

11、地进行程序设计、数值计算、图形绘制、输入输出、文件管理等各项操作。 MATLAB提供了一个人机交互的数学系统环境,该系统的基本数据结构是矩阵,在生成矩陈对象时,不要求作明确的维数说明。与利用c语言或FoRTRAN语言作数值计算的程序设计相比,利用MATLAB可以节省大量的编程时间。在美国的一些大学里,MATLAB正在成为对数值线性代数以及其他一些高等应用数学课程进行辅助教学的有益工具。在工程技术界,MATLAB也被用来解决一些实际课题和数学模型问题。典型的应用包括数值计算、算法预设计与验证,以及一些特殊的短阵计算应用,如自动控制理论、统计、数字信号处理(时间序列分拆)等。 MATLAB系统最初

12、是由CIeve Moler用FORTRAN语盲设计的,有关短阵的算法来自LINPACK和EIsPACK课题的研究成果;现在的MATLAB程序是MathWorks公司用 C语言开发的,第一版由steve Bangert主持开发编译解释程序,Steve Kleiman完成图形功能的设计,John Little和Cleve Moler主持开发了各类数学分分析的子模块,撰写用户指南和大部分的M文件。自从第1版发行以来,已有众多的科技工作者加入到MATLAB的开发队伍中,并为形成今天约MATLAB系统做出了巨大的贡献。 MATLAB以商品形式出现后,仅短短几年,就以其良好的开放性和运行的可靠性,使原先控

13、制领域里的封闭式软件包(如英国的UMIST,瑞典的LUND和SIMNON,德国的KEDDC)纷纷淘汰,而改以MATLAB为平台加以重建。在时间进入20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。到九十年代初期,在国际上30几个数学类科技应用软件中,MATLAB在数值计算方面独占鳌头,而Mathematica和Maple则分居符号计算软件的前两名。Mathcad因其提供计算、图形、文字处理的统一环境而深受中学生欢迎。 MathWorks公司于2001年推出MATLAB6.0版本,6.x版在继承和发展其原有的数值计算和图形可视能力的同时,出现了以下几个重要变化:(1)推出

14、了SIMULINK。这是一个交互式操作的动态系统建模、仿真、分析集成环境。它的出现使人们有可能考虑许多以前不得不做简化假设的非线性因素、随机因素,从而大大提高了人们对非线性、随机动态系统的认知能力。(2)开发了与外部进行直接数据交换的组件,打通了MATLAB进行实时数据分析、处理和硬件开发的道路。(3)推出了符号计算工具包。1993年MathWorks公司从加拿大滑铁卢大学购得Maple的使用权,以Maple为“引擎”开发了Symbolic Math Toolbox 1.0。MathWorks公司此举加快结束了国际上数值计算、符号计算孰优孰劣的长期争论,促成了两种计算的互补发展新时代。(4)构

15、作了Notebook 。MathWorks公司瞄准应用范围最广的Word ,运用DDE和OLE,实现了MATLAB与Word的无缝连接,从而为专业科技工作者创造了融科学计算、图形可视、文字处理于一体的高水准环境。 MTALAB系统由五个主要部分组成,下面分别加以介绍。 (1)MATALB语言体系 MATLAB是高层次的矩阵数组语言具有条件控制、函数调用、数据结构、输入输出、面向对象等程序语言特性。利用它既可以进行小规模端程,完成算法设计和算法实验的基本任务,也可以进行大规模编程,开发复杂的应用程序。 (2)MATLAB工作环境这是对MA丁LAB提供给用户使用的管理功能的总称包括管理工作空间中的

16、变量据输入输出的方式和方法,以及开发、调试、管理M文件的各种工具。 (3)图形句相系统这是MATLAB图形系统的基础,包括完成2D和3D数据图示、图像处理、动画生成、图形显示等功能的高层MATLAB命令,也包括用户对图形图像等对象进行特性控制的低层MATLAB命令,以及开发GUI应用程序的各种工具。 (4)MATLAB数学函数库这是对MATLAB使用的各种数学算法的总称包括各种初等函数的算法,也包括矩阵运算、矩阵分析等高层次数学算法。 (5)MATLAB应用程序接口(API) 这是MATLAB为用户提供的一个函数库,使得用户能够在MATLAB环境中使用c程序或FORTRAN程序,包括从MATL

17、AB中调用于程序(动态链接),读写MAT文件的功能。可以 看出MATLAB是一个功能十分强大的系统,是集数值计算、图形管理、程序开发为一体的环境。除此之外,MA丁LAB还具有根强的功能扩展能力,与它的主系统一起,可以配备各种各样的工具箱,以完成一些特定的任务。用户可以根据自己的工作任务,开发自己的工具箱。在欧美大学里,诸如应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教科书都把MATLAB作为内容。这几乎成了九十年代教科书与旧版书籍的区别性标志。在那里,MATLAB是攻读学位的大学生、硕士生、博士生必须掌握的基本工具。在国际学术界,MATLAB已

18、经被确认为准确、可靠的科学计算标准软件。在许多国际一流学术刊物上,(尤其是信息科学刊物),都可以看到MATLAB的应用。在设计研究单位和工业部门,MATLAB被认作进行高效研究、开发的首选软件工具。如美国National Instruments公司信号测量、分析软件LabVIEW,Cadence公司信号和通信分析设计软件SPW等,或者直接建筑在MATLAB之上,或者以MATLAB为主要支撑。又如HP公司的VXI硬件,TM公司的DSP,Gage公司的各种硬卡、 仪器等都接受MATLAB的支持。 第三章 各模块的实现车牌识别系统包括图像采集、图像预处理、车牌定位、字符分割、字符识别等模块,本文主要

19、研究图像预处理、车牌定位和字符分割三个模块。3.1 设计方案:该系统主要是由图像处理和字符识别两部分组成。其中图像处理部分包括图像预处理、边缘提取模块、牌照的定位以及分割模块。字符识别部分可以分为字符分割与特征提取和单个字符识别两个模块。字符识别部分要求照片清晰,但由于该系统的摄像头长时间在室外工作,加上光照条件、摄像头角度和距离、车辆自身条件以及车辆的行驶速度的影响,想拍出较理想的图片很困难。因此,我们要对摄像头拍摄的图片进行预处理,主要包括图片灰度化和图片边缘提取等。 车牌定位和车牌分割是整个系统的关键,其作用是在经图象预处理后的灰度图象中确定牌照的具体位置,并将包含牌照字符的一块子图象从

20、整个图象中分割出来,供字符识别子系统识别之用,分割的准确与否直接关系到整个牌照字符识别系统的识别率。 车牌识别系统的最终目的就是将不清楚的车牌照片进行识别,输出清晰的图片。现在字符识别的常用方法有模板匹配法和神经网络模型法。3.2图像预处理3.2.1图像灰度化:汽车图像样本目前大都是通过摄像机、数码相机等设备拍摄获取的,因而预处理前的图像都是彩色图像。彩色图像包含着大量的颜色信息,不但在存储上开销很大,而且在处理上也会降低系统的执行速度。由于图像的每个象素都具有三个不同的颜色分量,存在许多与识别无关的信息,不便于进一步的识别工作,因此在对图像进行识别等处理中,经常将彩色图像转变为灰度图像,以加

21、快处理速度。 对于将彩色图像转换成灰度图像时, 目前比较主流的灰度化方法叫平均值法,公式为: H=0.229R+0.588G+0.144B 公式中H表示灰度图的亮度值;R代表彩色图像红色分量值;G代表色彩图像绿色分量值;B代表彩色图像蓝色分量值。RGB 三分量前的系数为经验加权值。加权系数的取值建立在人眼的视觉模型之上。对于人眼较为敏感的绿色取较大的权值; 对人眼较为不敏感的蓝色则取较小的权值。通过该公式转换的灰度图能够比较好地反应原图像的亮度信息。 在MATLAB中我们可以调用im2gray函数对图像进行灰度化处理。3.2.2图像的边缘检测: 边缘是指图像灰度发生空间突变或者在梯度方向上发生

22、突变的像素的集合。用摄像机采集到的机动车图像由于受到噪声干扰以及车辆本身的影响,使得获得的图像质量不理想。因此,在进行对汽车牌照的定位及字符识别之前需要先对车辆图像进行边缘检测处理,提高图像的质量,使其易于后面的分割和识别。通过良好的边缘检测可以大幅度的降低噪声、分离出复杂环境中的车辆图像、保留完好的车牌字符信息,方便后面的车牌精确定位与字符识别。 由于车牌识别系统摄像头安装位置固定以及机动车车牌的固有属性,我们可以发现机动车车牌图像都处在水平的矩形区域,在图像中位置较为固定,车牌中字符都是按水平方向排列。因为有这些明显的特征,经过适当的图像变换,可以清晰的呈现出车牌的边缘。本文采用经典的Ro

23、berts边缘检测算子来对图像进行边缘检测。图3.1 原图图3.2 灰度图图3.3 Robert算子边缘检测3.3车牌定位和分割 该系统的摄像头拍摄的图片是整个机动车的图片,而只有车牌部分是对系统有用的。所以我们要对照片进行车牌定位和分割。车牌的定位和分割是从经过图像预处理后的灰度图像中确定牌照位置,并将车牌部分从整个图像中分割出来,从而进行字符识别。车牌图像的灰度图的车牌部分是一个水平度很高的长方形图样,在原图中比较集中,且灰度值和周围图样有明显差异,因此很容易用边缘检测来对图像进行分割。车牌定位和分割的准确度直接关系到最后的字符识别的质量。对图像进行图像腐蚀除去图像杂质通过计算寻找X和Y方

24、向车牌的区域完成车牌定位对定位后的彩色车牌的进一步处理图3.4车牌定位流程图3.3.1车牌定位机动车图像经过灰度化和边缘检测的处理后,边缘得到了加强,牌照区域已经非常明显。本文采用的是用数学形态学来进行图像处理和模式识别。数学形态学用具有一定形态的机构元素去量度和提取图像中的对应形状以达到对图像分析和识别的目的,能有效的去除噪声,保留图像原有信息的同时提取的边缘比较平滑,提取的图像骨架也比较连续,断点少。现在我们将经过预处理的图像进行图像腐蚀以及去除杂质,就可以得到相对准确的车牌位置。图3.5腐蚀后的图像图3.6 平滑图像的轮廓图3.7从对象中移除小对象后图像3.3.2车牌分割 车牌字符分割是

25、车牌自动识别系统中的重要步骤,这一模块的正确性受到很多因素的影响,最大问题是二值化不彻底使投影图像中字符间的波谷不够分明;其次,车牌污损、反光、光照不均等原因使车牌图像交差,存在大量噪声;再次,车牌边框和铆钉也会造成分割不正确;还有车牌的前两个字符和后面五个字符之间的间隔符(小圆点)对字符识别有影响;车牌旋转对水平分割有较大影响。本文车牌部分的分割采用的是利用车牌彩色信息的彩色分割法。使用统计彩色像素点的方法分割出车牌区域,确定车牌底色蓝色RGB对应的灰度范围,然后统计在行方向的颜色范围内的像素点数量,确定车牌在行方向的区域。然后,在分割出的行区域内,统计列方向蓝色像素点的数量,最终确定完整的

26、车牌区域。图3.8车牌对位的图像3.3.3对定位后的彩色车牌的进一步处理 定位后车牌图像是彩色的,会占用较大的存储空间,加重计算机负担。且车辆图片不可避免存在噪声,所以要对图像进行灰度化,二值化以及滤波处理。图像的二值化处理就是将图像上的点的灰度置为两个数值,通常为0或255,使整个图像呈现出明显的黑白效果。也就是将256个亮度等级的灰度图像通过适当的门限值选取而获得仍然可以反映图像整体和局部特征的二值化图像。滤波则是为了除去图像噪声。滤波方法有多种,本文采取的滤波方法为均值滤波。均值滤波是典型的线性滤波算法,指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素。再用模板中的全体像素的

27、平均值来代替原来像素值。图3.9车牌的进一步处理3.4字符分割与归一化m,n=size(d),逐排检查有没有白色像素点,设置1=j=120)&(PY11) PY1=PY1-1; end PY2=MaxY; while (Blue_y(PY2,1)=40)&(PY2y) PY2=PY2+1; end IY=I(PY1:PY2,:,:);%IY为原始图像I中截取的纵坐标在PY1:PY2之间的部分 %end横向扫描 %begin纵向扫描 Blue_x=zeros(1,x);%进一步确定x方向的车牌区域 for j=1:x for i=PY1:PY2 if(myI(i,j,1)=1) Blue_x(1

28、,j)= Blue_x(1,j)+1; end end end PX1=1; while (Blue_x(1,PX1)3)&(PX1x) PX1=PX1+1; end PX2=x; while (Blue_x(1,PX2)PX1) PX2=PX2-1; end %end纵向扫描 PX1=PX1-2;%对车牌区域的校正 PX2=PX2+2; dw=I(PY1:PY2,:,:); t=toc; figure(7),subplot(1,2,1),imshow(IY),title(行方向合理区域);figure(7),subplot(1,2,2),imshow(dw),title(定位剪切后的彩色车牌

29、图像)imwrite(dw,dw.jpg); %将图像数据写入到图像文件中filename,filepath=uigetfile(dw.jpg,输入一个定位裁剪后的车牌图像); %读取jpg=strcat(filepath,filename); %将数组filepath,filename水平地连接成单个字符串,并保存于变量jpg中a=imread(dw.jpg); %读取图片文件中的数据b=rgb2gray(a); %将真彩色图像转换为灰度图像imwrite(b,1.车牌灰度图像.jpg); %将图像数据写入到图像文件中figure(8);subplot(3,2,1),imshow(b),ti

30、tle(1.车牌灰度图像)g_max=double(max(max(b); %换成双精度数值g_min=double(min(min(b); %换成双精度数值T=round(g_max-(g_max-g_min)/3); % T 为二值化的阈值m,n=size(b); %返回矩阵b的尺寸信息, 并存储在m、n中。其中m中存储的是行数,n中存储的是列数。 d=(double(b)=T); % d:二值图像imwrite(d,2.车牌二值图像.jpg); %将图像数据写入到图像文件中figure(8);subplot(3,2,2),imshow(d),title(2.车牌二值图像)figure(8

31、),subplot(3,2,3),imshow(d),title(3.均值滤波前)% 滤波h=fspecial(average,3); %建立预定义的滤波算子,average指定算子的类型,3为相应的参数d=im2bw(round(filter2(h,d); %转换为二值图像imwrite(d,4.均值滤波后.jpg); %将图像数据写入到图像文件中figure(8),subplot(3,2,4),imshow(d),title(4.均值滤波后)% 某些图像进行操作% 膨胀或腐蚀% se=strel(square,3); % 使用一个3X3的正方形结果元素对象对创建的图像膨胀% line/di

32、amond/ball.se=eye(2); % eye(n) returns the n-by-n identity matrix 单位矩阵m,n=size(d); %返回矩阵b的尺寸信息, 并存储在m、n中。其中m中存储的是行数,n中存储的是列数if bwarea(d)/m/n=0.365 %计算二值图像中对象的总面积 d=imerode(d,se); %图像的腐蚀elseif bwarea(d)/m/n=0.235 %计算二值图像中对象的总面积 d=imdilate(d,se); %实现膨胀操作endimwrite(d,5.膨胀或腐蚀处理后.jpg); %将图像数据写入到图像文件中figu

33、re(8),subplot(3,2,5),imshow(d),title(5.膨胀或腐蚀处理后)% 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割d=qiege(d); %切割m,n=size(d); %返回矩阵b的尺寸信息, 并存储在m、n中。其中m中存储的是行数,n中存储的是列数figure,subplot(2,1,1),imshow(d),title(n)k1=1;k2=1;s=sum(d);j=1;while j=n while s(j)=0 j=j+1; end k1=j; while s(j)=0 & j=round(n/6.5) val,num=min(sum(d(:,k1+5:k2-5); d(:,k1+num+5)=0; % 分割 endend% 再切割d=qiege(d);% 切割出 7 个字符y1=10;y2=0.25;flag=0;word1=;while flag=0 m,n=size(d); left=1;wide=0; while sum(d(:,wide+1)=0 wide=wide+1; end

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1