《车牌识别系统设计及MATLAB仿真.doc》由会员分享,可在线阅读,更多相关《车牌识别系统设计及MATLAB仿真.doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除郑州工业应用技术学院本科生毕业设计论文题 目: 汽车牌照识别系统的设计与仿真 指导教师: 于俊如 职称: 副教授 学生姓名: 刘明丽 学号: 1102120202 专 业: 电气工程及其自动化 院 (系): 机电工程学院 2015年3月27日公路车牌识别系统设计及MATLAB仿真摘 要近些年,作为智能交通的关键组成部分,车牌识别系统也受到越来越多国家的重视。车牌识别系统不仅能够应用到停车场的管理系统、高速公路的管理系统以及小区车辆管理的系统等一些智能领域,而且对未来国家的安全发展有有重大的意义。本文在对当前车牌识别系统学习的基础上开发一个基于MA
2、TLAB的车牌识别系统。整个测试平台的软件部分利用MATLAB的M语言编写。其中图像处理用到MATLAB灰度图函数rgb2gray、基于Robert算子的函数edge及图像平滑处理函数imclose;图像分割进行了图像膨胀、图像腐蚀;然后用垂直投影法进行字符分割;最后字符经过归一化,进行字符的匹配识别,最终实现了仿真。关键词:MATLAB;字图像处理;牌识别系统Plate License Recognition System Design in Highway and Matlab SimulatAbstractIn recent years,as the important part of
3、the intelligent transportation,plate license recognition system has got more attention in more and more countriesThe system can not only be application to management system of parking area,management system of highway and district vehicle management system and such as intelligence.This paper develop
4、s a plate license recognition system based on Matlab on my study of the existing license plate recognition systemThe software part of the test platform is made by M language of MatlabAnd image processing takes use of Greyscale image function rgb2gray,functtion edge based on Roberts operator,iamge Sm
5、oothing function imcloseImage segmentation processes image dilation and image erosion;then uses vertical projection achieve character segmentation;at last,character after normalization, matching recognition of the characters,and complete the simulationKey words:MATLAB;Digital image processing;Plate
6、recognition system目 录第一章 绪论11.1国内外车牌识别技术现状11.2程研究的目的21.3MATLAB简介2第二章 设计原理及系统概述62.1设计原理62.2系统概述6第三章 高速公路车牌识别系统设计及MATLAB仿真步骤133.1图像获取133.2图像处理133.3移除小对象153.4车牌区域的边界值计算163.5字符分割163.6字符识别17第四章 仿真结果分析194.1车牌定位、图像读取及其图像处理194.2车牌字符分割及其图像处理194.3车牌字符识别20总 结22附 录23参考文献32致谢33【精品文档】第 25 页第一章 绪论1.1国内外车牌识别技术现状随着经
7、济社会的迅速发展,人们生活水平的提高,机动车辆的数量也越来越多。为了提高车辆的管理效率,缓解交通压力,我们必须找到一种解决方案。而作为汽车“身份证”的车牌是确定汽车身份的不二选择。早在上世纪的70年代,英国能够就在实验室完成了“实时车牌检测系统”的广域检测及开发。发展到如今,国外对车牌检测技术的研究已经取得了一些引人注目的成果。如Yuntao Cui1提出的一种车牌识别系统,在实现车牌定位之后,通过马尔科夫场来完成车牌特征的提取和二值化,其正确识别率达到了比较高的水平。Eun Ryung等2利用颜色中的分量,进行车牌的识别,他们提到了三种方法:第一,利用Hough来实现边缘检测定位识别;第二,
8、利用灰度值变换的车牌识别算法;第三,利用HLS彩色模式开发的车牌识别系统。由于开始这方面研究的时间较早,日本在车牌图像的获取方面也进行了大量的研究。Luis3开发的车牌识别系统已经应用于公路收费站,一般天气下识别率高达90%以上,即使天气情况不好,其正确识别率也在70%以上。1990年,美国智慧交通学会 CITS America 首次提出智能交通系统(ITS)的概念。如今,在发达国家的一些大城市,智能交通系统已经广泛运用到收费站和高速公路系统。车牌识别系统集摄像、计算机信息处理、图像处理和图形识别技术于一体,成为智能交通管理系统中关键组成部分。车牌识别系统在车辆管理及交通安全管理中都具有很重要
9、的意义。车牌自动识别技术在车辆过路、过桥全自动不停车收费、交通流量控制指标的测量、车辆的自动识别、高速公路上的事故自动测报、不停车检查、车辆的定位、汽车的防盗、稽查和追踪车辆违规、违法行为、维护交通和城市治安、防止交通堵塞、提高收费路桥的服务速度、缓解交通紧张状况等方面将会起到积极的作用。尽管我国在车牌识别系统领域的研究起步相对较晚,但随着智慧交通技术在全世界的兴起,我国在智慧交通也取得了一些成就,技术也慢慢步入了应用的阶段。与此同时,我国对智慧交通技术的研究投入了大量的精力,使智能交通技术的研究步入了快速发展期。其中,中科院自动化所的刘志勇等4开发的系统在总量达到3180的一个样本集中,使车
10、牌正确定位的概率高达99.42%,而其正确切分的概率也达到了94.52%。后来,汉王公司采用这套系统作为车牌识别系统,取得了相当好的效果。还有南京大学的熊军等5提出了一种建立在字符纹理特征之上的新定位算法,其准确率有95%。此外,华中科技大学的陈振学等6提出一种新颖的用于车牌图像中进行字符分割与字符识别的算法,通过一维循环清零法,再对垂直投影图进行扫描,能够有效的清除杂点和间隔符,其正确率高达96.8%。另外,浙江大学的张引、潘云鹤等7提出了彩色边缘操作数ColorPrewitt及彩色边缘检测和区域生长相结合的一种拍照定位算法ColorLP,不仅算法简单,而且能够全面作用于色彩空间的三个分量上
11、,还能使检测出的牌照区域与背景的剥离更加容易。但由于其计算量和存储量都较大,难以达到实时性的要求。此外,当车辆区域的颜色与附近比较接近时,定位的失误率会增加。当前,全球许多国家都在大力发展适用于本国汽车牌照的车牌识别系统研究,美、日、韩等经济发达的国家已有相关系统(基于传感器的)问世。考虑到引进这些系统不仅费用比较高,而且由于各国车牌和实际的交通情况不同,引进的系统通常无法满足我国城市的要求。虽然我国市场上已出现了相关的产品开始使用,但是其在后续的处理上依然很大程度需要人工的帮助,因此对车牌识别系统的研发不仅当前而且在将来一段时间都会处在高科技科研的最热门领域。因为能够完成车牌识别系统的开发设
12、计而应用到实际生活中,不仅具有相当重大的学术意义,还有十分积极的社会和经济效益见文献8。1.2程研究的目的车牌识别技术是建立在图像处理、图像识别、计算机等技术的基础上的智能识别系统,它基于每一个汽车只有唯一的车牌号码的特征,通过对摄像机拍摄的车辆图像的处理进行车牌号码的识别。在不对汽车造成影响的情况下利用计算机自动实现车牌的识别,进而大大降低交通管理工作的难度。同时本设计的高速公路车牌识别系统基于MATLAB应用软件的基本知识和相关程序设计方法,通过解决实际应用问题,来进一步加深对理论知识的掌握,并把所掌握的知识系统、高效的运用到实践中来,把理论与实践的相结合,加深对知识的理解。同时增强独立编
13、程的能力,并在实践中不断发现问题解决问题,完善理论基础,提高自己的综合能力。1.3MATLAB简介MATLAB 是美国MathWorks公司的产品,是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB其实是矩阵实验室(Matrix Laboratory)的简称,与Mathematica、Maple并称为数学的三大软件。MATLAB无论在数学类的科技应用软件中,还是在数值的计算方面都首屈一指。MATLAB也可以实现矩阵的运算、函数的绘制以及实现算法、用户接口的创建、与其它编程语言程序的连接等,主要应用在工程计
14、算、自动控制、信号检测、信号处理、图像处理、金融建模的设计和分析等领域。MATLAB中基本的数据单位是矩阵,由于它的指令表达式和数学、工程中常用的形式非常的相似,因此采用MATLAB来解觉问题要比采用C,FORT等语言解决相同的问题要简捷得多,而且mathwork也拥有Maple等软件的优点,这使MATLAB成为了一个功能强大的数学软件。在新版本的MATLAB中也增加了对C,FORTRAN,C+,JAVA的支持。用户不仅可以直接调用,还可以把自己编好的程序导入到MATLAB函数库中以便于自己以后的调用,重多的MATLAB爱好者编写了许多经典的程序,一般的用户下载后,就可以直接进行使用。在20世
15、纪的70年代,美国新墨西哥大学的计算机科学系主任Cleve Moler出于减轻学生编程的负担的目的,利用FORTRAN编写了世界上最早的MATLAB。到了1984年,Little、Moler、Steve Bangert共同成立的MathWorks公司正式开始把MATLAB推向了市场。到了20世纪的90年代,MATLAB已成为了国际上控制界中的标准计算机软件。1.3.1MATLAB的特点1. MATLAB数值计算以及符号计算能力,能帮用户把复杂的数学运算及分析简化了许多;2.完整的图形处理功能,可以让计算结果和编程实现可视化;3.的用户接口加上与数学表达式接近的自然化语言,便于使用者的学习和掌握
16、;4.功能丰富的应用工具箱(例如信号处理工具箱及通信工具箱) ,为用户提供了许多实用且方便的处理工具。1.3.2MATLAB的优势1.编程环境MATLAB由一系列的工具构成。这些工具为用户使用MATLAB的函数和檔提供了很大的便利,其中很多的工具是图形用户接口方式,其中包括MATLAB桌面及命令窗口、历史命令窗口、编辑器、调试器、路径搜索和用于用户浏览帮助、浏览文件的浏览器。而且,伴随着MATLAB的商业化和软件本身的不断更新升级,MATLAB中的用户接口已经非常精致了,越来越接近Windows的标准接口,不仅增强了人机之间的交互性,也进一步简化了操作。同时新版本的MATLAB还提供有一套完整
17、的联机查询及帮助的系统功能,为用户的使用带来了极大的便利。尽管其编程环境简洁,但其调试系统却相当的完整,使编好的程序不需要通过编译就可以进行运行,并且能够在及时地显示出错误同时还能对出错的原因进行分析。2.简单易用MATLAB是一种高级矩阵/数组语言,它包含控制语句、函数、数据结构、输入和输出以及面向对象编程的特点。而且用户能够在命令窗口中实现输入命令和执行语句同步联系起来,还能与预先编好的应用程序(M文件)一起运行。最新的MATLAB语言是以目前非常流行的C+语言为基础,因此其语法特征和C+十分的相似,同时却更加简单,也更加接近科研人员对数学公式的书写格式,让其对不是来自计算机专业的科研人员
18、来说使用也更加容易。并且这种语言具有相当不错的可移植性、极强的可拓展性的特点,这也是为什么MATLAB可以深入应用到科学研究和工程计算等相关领域的关键。3.强处理能力MATLAB集合了大量的计算算法。其包含了几百个工程计算中有可能被会用到的数学运算函数,能够方便帮用户实现所需要的各种运算功能。MATLAB中包含的函数,其所采用的算法都是基于研究与工程计算领域的最新的研究成果,而且还对其进行了相关的优化处理。在一般情况下,利用它来替代一些底层编程语言,如C或C+ 是可行的。在同样的计算要求下,使用MATLAB编程,能够大大减少工作量。MATLAB里面的函数集包括从最简单最基本的函数到诸如矩阵,特
19、征向量、快速傅立叶变换等复杂函数。函数所能解决的问题大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其它初等数学运算、多维数组操作以及建模动态仿真等。4.图形处理MATLAB的可视化功能子从一开始的出现就已具备,可以把向量与矩阵用以图形的形式表现出来,而且能够对图形进行标记注释与打印。层次较高的作图包括对图像的处理以及动画和表达式的作图等。MAYLAB也可用于数学计算与工程制图。版本较新的MATLAB对图形处理的功能作了十分巨大的完善,不仅在一般数据的可视化软件都具有的功能方面更
20、加完善,而且在一些别的软件所不具备的功能的方面,MATLAB所具有的能力也相当出色。另外,对某些特别的可视化需求, MATLAB也包含有相对应的函数能够达到要求,满足了不同用户的不同需求。此外, MATLAB新版本的开发还重点在图形用户接口(GUI)的制作上做了非常大的改进,在这方面有要求较高的用户也能够得到满足。MATLAB针对许多特殊的领域都研发了功能相当完备的模块集与工具箱。通常,这些工具与模块都是由相应领域的专家研发出来的,用户能够直接利用工具箱进行学习、运用以及对不同的方法进行评估却而不用自己去写程序代码。当前情况,MATLAB已经将工具箱的应用延伸到了科学研究与工程学中的很多领域,
21、例如数据采集、数据库接口、概率统计、样条拟合、算法的优化、偏微分方程的求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统的仿真等,都在MATLAB的工具箱(Toolbox)中占据了一席之地。5.程序接口版本较新的MATLAB能够通过MATLAB中的编译器与C/C+中的数学与图形库,把MATLAB程序自行转换成独立于MATLAB之外的C/C+程序的来运行。同时,还能够实现让用户以C/C+语言编写的程序与MATLAB进行交互。此
22、外,MATLAB的网页服务程序还允许在Web应用中运用自己的MATLAB数学与图形程序。MATLAB具有的另外一个特点就是拥有一个程序的扩展系统与一个被叫做工具箱的用于特别应用的子程序集。工具箱其实是MATLAB函数的子程序库,任意一个工具箱都是为了某一类学科的专业及应用而制定的,主要包括信号处理、控制系统、神经网络、小波分析以及系统仿真等方面的应用。6.应用软件开发在开发的环境中,使用户能够更方便地控制多个文件及图形窗口;在编程方面支持函数嵌套和有条件的中断等;在图形化方面,拥有更强大的图形标注与图形处理功能,包括连接注释等;在输入和输出方面,能够直接与Excel和HDF5进行连接。第二章
23、设计原理及系统概述2.1设计原理车牌识别系统的设计是一项利用车辆的动态视频或者静态图像实现牌照区域定位车牌号码识别的技术。其硬件部分通常包括触发设备、拍摄设备、照明设备、图像收集设备、进行车牌号码识别的处理器等,其软件的关键部分包含车牌区域定位的算法、车牌字符的分割算法和车牌字符的识别算法等相关的算法。一些车牌识别系统还具备借助视频图像来对车辆是否驶入视野准确判断的功能,被称作车辆的视频检测。当车辆的视频检测部分确定车辆到达检测区域时触动图像采集部分,进行图像的采集。牌照识别部分首先对图像进行一些处理,接着定位出车牌区域,再将牌照图像中的字符一一分割出来进行识别,最后所有的字符组成车牌号码输出
24、。2.2系统概述图2.1 车牌识别系统示意图2.2.1图像获取在图像获取部分中,我们利用在道路两侧安装的高分辨率摄像机对来往的车辆实施抓拍,然后把经过图像采集器得到的图像并构成一个图像数据组储存在计算机的存储空间中,此时储存在计算机中的图像为彩色图像。2.2.2图像处理1.灰度转化由于在计算机存储设备中得到的为彩色图像,因为色彩的种类比较多,不利于对图像处理,因此我们通过把彩色图像转换为灰度图像方便下一步的处理。我国车牌颜色及其RGB值如下,蓝底(0,0,255)白字(255,255,255)、黄底(255,255,0)黑字(0,0,0)、黑底(0,0,0)白字(255,255,255)、红底
25、(255,0,0)黑字(0,0,0),因为车牌的底色不同,所以从RGB图像中直接对车牌区域进行提取难度相当大。但是无论底色是哪种,车牌的底色与上面的字符颜色的对比度都比较大,将RGB图像转化为灰度图像时,车牌底色的灰度值跟字符的灰度值会相差很大。例如蓝色(255,0,0)与白色(255,255,255)在R通道中并无区别,但在G、R 通道或者是灰度图象中数值相差非常大。同样的道理对白底黑字的牌照可用R 通道,绿底白字的牌照可以用G 通道就能明显显示出牌照区域的位置,以便于后续的处理。原图、灰度对于将彩色图象转换成灰度图象时,图象的灰度值H可由下面的公式计算: 公式(2.1)上式采用了权值加重法
26、,也就是MATLAB内的RGB转灰度图函数rgb2gray()。2.图像边缘检测在MATLAB中使用函数edge()实现边缘检测,具体的用法如下所示:Car_Image_Bin=edge(Car_Image_Gray,robert,0.08,both);edge()函数拥有Prewitt算子, Log算子,Canny算子,Sobel算子及Robert算子,几种算法相比之下,Robert算子是使用起来最容易的算子见文献9。Robert算子是一种通过局部差分来寻找边缘的算子,它采用对角线方向相邻两像素之差近似梯度幅值检测边缘。其检测垂直边缘的效果优于斜向边缘,不仅定位精度更高,而且对噪声也更敏感。
27、因此本设计使用Robert算子。因为Robert边缘检测算子是一种利用局部的差分来寻找边缘的算子, 根据任一相互垂直方向上的差分都可用来估计梯度,Robert算子采用对角方向相邻两像素之差,其计算公式如下: 公式(2.2) 公式(2.3)其增幅值为: 公式(2.4)Robert梯度是以(x-0.5,y-0.5)为中心,度量(x-0.5,y-0.5)点处45和135方向(相互正交)的灰度变化。取一个适当的门限T,进行如下判断: G(x,y)fT,(x,y)为阶跃状边缘。Robert边缘检测操作数也就相当于用与对图像做卷积分。3.灰度图腐蚀所谓腐蚀其实就是消除边界点,然后使边界向内部收缩的一个过程
28、。利用它能够消除小且无意义的物体。腐蚀的规则是输出图像的最小值是输入图像领域中的最小值,在一个二值图像中,若有一个像素值为0,则相应的输出像素值也为0。假如设定B对X腐蚀所产生的二值图像E是满足以下条件的点(x,y)的集合:如果B的原点平移到点(x,y),那么B将完全包含于X中。本系统设计采用imerode()函数:Car_Image_Erode=imerode(Car_Image_Bin,Se);其中结构元素Se被形象地称为刷子,用于测试输入图像,通常比待处理图像小很多。结构元素的大小形状是任意的,大多数情况下都是二维的。二维结构元素是数值0和1构成的矩阵,结构元素的领域像素在进行腐蚀操作时
29、是否需要参加运算是根据结构元素中数值为是否为1。如果结构元素太大,则会造成腐蚀过度,从而导致造成信息丢失,但是太小又不能达到预期的效果,所以这里采用31矩阵的线性结构元素,即Se=1;1;1见文献10。4.图像平滑处理在得到车牌区域的图像轮廓线之后,由于存在图像的数字化误差,加上噪声的影响,对脚点的提取造成影响,所以在脚点提取之前,必须首先对图像进行平滑处理,这里用MATLAB里的一个图像平滑处理函数imclose(),它的功能与开运算相反,用来融合窄的缺口及细长的弯口,去掉小洞和填补轮廓上出现的缝隙。函数imclose():Car_Image_Perform=imclose(Car_Imag
30、e_Erode,Se);结构单元中Se一个小于对象闭合图形,若存在两个封闭域的距离小于S那么就将这两个域连接为一个连通域,采用Se=strel(rectangle40,20)的Se产生方式。Se是一个4020的矩形,之所以使用矩形是因为车牌也是矩形的,这样,能够保证提取到最接近预期效果的图像见文献11。2.2.3移除小对象图像经平滑处理之后,可能会有多个闭合区域存在,但是对于不是车牌区域的区域必须予以删除,于是使用MATLAB里面包含的函数bwareaopen(),来删除二值图像中面积小于一个定值的对象,一般情况下使用8邻域,函数bwareaopen():Car_Image_Perform2=
31、bwareaopen(Car_Image_Perform,2000);通过上述函数的处理,Car_Image_Perform中面积小于2000的对象都被删除了。2.2.4车牌区域边界值计算对将原始图像进行二值化及轮廓平滑处理后,图像中的任何一个点都是两个离散值中的一个,这两个值代表开(1)与关(0),即只有黑与白两种颜色的特殊灰度图像,而且整个图像只存在两个域(如果有多个域需的,在改变参数后,重新进行剔除干扰对象的处理),全为1的域既是车牌区域,而且与矩形相似,长宽约比为4.5:1,这两个特性也能用来检验提取的区域是否为车牌区域。在区域确定了后,便可将车牌的四个边界值给确定下来。这里采用的是水
32、平与垂直双向投影法。确定水平坐标:先定义一个1的数组,其中设定为原始图像的宽度,然后把二值图像垂直投影到轴上。从直方图上基本就能够看出水平方向上的两个分界线,为了方便处理,本设计将像素临界值定量化,取值5个像素。从左向右开始,找到第一个1值像素大于5的坐标作为水平方向的左侧分界线,然后从右向左,找找到第一个1值像素量大于5的坐标作为水平方向的右侧分界线,可以利用for循环语句来实现。利用上述同样的方法,实现垂直方向的分界线的确定。2.2.6字符分割在牌照区域的定位完成之后,接下来要做的就是先把牌照区域分割成单个字符,然后一一对其进行识别。这里采用垂直投影法进行字符分割。因为字符在垂直方向上投影
33、的局部最小值不是在字符间间隙就是字符内间隙处取得,同时这个位置还要满足牌照的字符的书写格式、字符的尺寸限制等条件。所以采用垂直投影法对处在复杂环境下的车牌图像中的字符分割能够达到不错的效果。计算水平投影对车牌进行水平校正去掉车牌的框架 经过分析垂直投影确定每个字符中心位置按左右宽度分割出字符图2.2 牌照字符切割框图根据我国的车牌规范(普通中小型汽车)规定车牌总长440mm,牌照中的7个字符的实际总长约为409mm ,宽140mm,每个字符宽、高分别为45mm、90mm,字符的间距为10mm,其中从左往右的第二个字符与第三个字符的间距比较特殊,为15.5mm,尾字符与首字符距边界的距离都是25
34、mm。假如根据车牌宽度平均分配给每个字符,那么每个字符宽度为:width/7(设车牌图像的宽度为width)。然而实际情况是,第二个与第三个字符之间的间距比较特别,且牌照左右两边与图像边缘也都有一定的宽度,因此每个字符的宽度要小于width/7。综合考虑,通常情况下,字符的最小宽度为width/9。所以,可以通过从width/9 到width/7 渐进的变化来得到字符的宽度。字符分割流程图如下图所示: 开始车牌图像的二值化切除图像周边的空白部分进行垂直投影从左到右进行查找,垂直投影白色像素点小于0的值的wide把水平区域(0,wide)的部分给提取出来进行是否为标准字符的判断Y保存字符N保存剩
35、余部分并覆盖原先图像判断字符个数是否为7NY结束图2.3 字符切割流程图2.2.7字符识别对于车牌字符识别,目前最常用的方法是基于神经网络和模板匹配的方法。基于神经网络的车牌字符识别方法对于分辨率较高(车牌高度不小于120个像素)和图像比较清晰的车牌能有效的识别车牌中的字符,但是对于较底分辨率和较为模糊的车牌则显得无能为力。现已有一种在模板匹配的基础上改进的方法进行字符识别,使对车牌字符的识别性能得到了改进。1.选择字符识别方法目前,字符识别的方法有使用人工神经网络数学模型和模板匹配两种。人工神经网络是通过模拟人脑的思维功能而建立的数学模型,尽管现在神经网络有了很大的发展,但其还存在应用相对复
36、杂的缺点。范本匹配法虽然识别率相对较低,但其拥有实现简单,计算量小的优点,而且车牌字符不仅有阿拉伯数字,英文大写字母,还有部分汉字。字库量尽管不大,但字符较规整时,受图像的缺损及污迹干扰的影响较小且识别率相当高,因此本设计采用模板匹配法。 2.字符归一化由于采集图像的像素值不同,分割出来的字符的大小也不同,所以在进行匹配前,必须首先对分割出来的字符进行字符归一化。使图像字符大小跟模板图像大小一致,在这里使用MATLAB里提供可以改变图像大小的函数imresize(I,Size,Model),其中Model是插值运算法,这里选择nearest即最近邻插值法。 3.字符匹配字符匹配是建立在有一个可
37、以与之相比较的字库表的基础上,然后再将已分割并归一化处理后的字符逐个进行匹配比较,接着将待识别的字符的特征值和模板字符相减,结果相差最小的即是匹配的最好的。字符识别的步骤如下图所示:建立字符库读取分成出来的字符第一个字符与字符库中的模板进行匹配待标识符元与模板字符做减法,结果越小就越相似,从而找到最接近的重复上述两步,依次对余下的6个字符进行匹配完成字符的识别,输出相应的字符图 2.4 字符匹配框图字符匹配的准确度决定车牌识别的准确性,所以建立一个精准有效的模板字库表是必不可少的。第三章 高速公路车牌识别系统设计及MATLAB仿真步骤3.1图像获取在这个部分中我们利用在道路两侧安装的高分辨率摄
38、像机对来往的车辆实施动态或者静态抓拍,然后经过图像采集器得到当前的图像,再形成相应的图像数据存储在计算机中,此时存储在计算机中的图像为彩色模式的。3.2图像处理3.2.1图像灰度转换及转换效果由于使用MATLAB内的RGB转灰度图函数rgb2gray(),所以通过边缘检测方法,识别出临近区域灰度值相差大的分界区。原始图像灰度图像图3.1 灰度图转换效果对比经过图形的对比分析,原始图中车牌区域的灰度明显与其他区域不同,其中蓝底部分最为明显。通过程序运行出来的灰度图能够比较容易的识别出车牌的区域,达到了预期的灰度效果。3.2.2图像边缘检测使用MATLAB函数edge()进行边缘检测,效果如图3.
39、1所示:图3.2 边缘效果图从上面边缘效果图可以看出,车牌轮廓在处理以后已经比较明显,车牌区域及汽车标志的边缘呈白色条纹状,基本上达到了边缘检测的效果。但是,由于车牌附近区域的影响,也有白色区域出现,因此图像还需要进一步的处理。3.2.3灰度图腐蚀在MATLAB中使用函数imerode()腐蚀后如图:图3.3 腐蚀效果图对图像进行腐蚀的目的就是要消除小且无意义的物体,通过边缘效果检测图与腐蚀效果图的比较可以看到,在边缘检测图中存在的小且无意义的区域已经被完全消除了,剩下的只是车牌区域和车的标志。现在,已经得到了车牌图像的轮廓线,下一步需要的是通过适当的处理来把车牌提出来。3.2.4图像平滑处理
40、在得到了车牌区域的图像轮廓线之后,使用MATLAB中的函数imclose()。得到图像平滑后效果如下:图3.4 平滑处理后效果图从平滑后的效果图可以看出,平滑处理达到了预期,即消除图像的数字化误差以及在脚点提取中噪声的影响。3.3移除小对象运用MATLAB中的函数bwareaopen()对经过平滑处理的图像进行小对象移除,图像如图3.4所示:图3.5 移除小对象后效果图可以看到移除小对象后的效果图中最后只存在车牌区域,小物体、车的标志及其它不相关的区域都被消除了。3.4车牌区域的边界值计算对原图像进行二值化后,经计算确定水平和垂直分界线,便可从原图像中提取出只包含车牌区域的图像。提取得到的图像
41、如下:图3.4.1为二值图提取出来的图像,图3.4.2为RGB图像提取出来的图像:图3.6 车牌区域二值化裁剪图图3.7 原图中的车牌区域图像 通过原始图像与二值图裁减图的对比,在车牌的四个边界值被确定下来了之后,就能够在原始图像中确定车牌的区域了。这样,就能完成车牌的提取。3.5字符分割按照设计原理中的流程图对图像进行分割,分割的字符图像如下:图3.8 经切割的七个字符从上图可以看出,经过分割后,把连在一起的一组字符分割成了单个字符,为字符的识别奠定了基础。3.6字符识别3.6.1字符归一化在选择了摸版匹配法之后,使用MATLAB中的函数imresize()进行图像归一化,归一化后的图像如下
42、。图3.9 经归一化后的七个字符车牌中分割出的字符经过归一化之后大小基本都相同,从而也解决了像素不一致的问题,让其与字符库中的字符匹配更容易。3.6.2字符匹配识别模板匹配法将目标图像与模板图像逐点做差,得到第三幅图像,程序实现如下for ii=1:40or jj=1:20 Word_Image_Diff(ii,jj)=Word_Image(ii,jj)-Word_Image_Code(ii,jj); endend最后计算第三幅二进制图像中像素值为1的个数,数值最小的即为匹配出来的结果,经对比可得相似度最高的数字图3.10 字符相似度比较如图3.18所示:第一个字符在Lib_Code_No=3
43、9处取得最大相似度,字库字符“湘”的Lib_Code_No=39,所以能确定第一个字符是“湘”,同样的,可依次确定剩下的字符。第四章 仿真结果分析4.1车牌定位、图像读取及其图像处理从前面我们可以得到在把车牌区域提取出来后,图像处理的一系列仿真结果如下图所示:图4.1 图像读取及处理结果图结果分析:图像车牌的提取就是从原始图像中截取含车牌部分的RGB图像,之后才能进行字符分割和匹配识别。为了消除截取图像中的噪声点,所以要对截取图像进行滤波处理,经过滤波处理之后,不仅去消除了噪声点,而且使图像得到了锐化。经过这些步骤的处理,能搞满足最终识别出的图像与原图的相似度尽可能高的要求,也就是可以让结果更
44、精确。仿真的结果也使得车牌部分从原图被准确的提取出来了,达到了车牌定位及图像读取及其图像处理的目的。4.2车牌字符分割及其图像处理图像在经过边缘检测后,进行字符分割的图像如下图所示:图4.2 字符分割及归一化结果图结果分析:根据MATLAB编程运行的结果发现,为了方便图像匹配识别,需要先将字符串分割成单个的字符,同时在分割之前要将周边空白消除。由以上结果图可以看到,车牌被切成只含字符部分,并且七个连续的字符被分割成七个清晰的单个字符,从而实现了字符的分割。由图4.2中右侧的归一化图像可以看到,分割出的图像的像素值和模板图像的像素值基本达到了一致,由此便解决了分割出的图像像素值不一致的问题。4.
45、3车牌字符识别图像经以上处理后再进行匹配识别,次图像和原图存在一些差异,其字符相似度曲线成一定规律,其曲线图如下图所示:图4.3 字符识别结果图结果分析:字符识别其实是根据已经建立的模板字符库,将分割出来的字符和模板库中的字符进行一一匹配,将分割出来的字符和模板中的字符相,其差值越小表明字符匹配程度越高。从图4.3可知,尽管字符匹配识别的难易程度不尽相同,但是可以达到识别出汉字、字母和数字的水平。 总 结本设计主要利用MATLAB中的应用软件,根据车牌识别系统的原理在MATLAB编辑程序进行仿真,分别对车牌定位、图像处理、字符分割以及字符识别等过程进行仿真。首先总结了国内外的车牌识别系统技术现
46、状,了解其实现原理和我国车牌的特征,依据我国车牌的特殊情况选择适当的算法和合适的MATLAB函数。使用MATLAB中的RGB转灰度图函数rgb2gray()使车牌区域更容易被识别出来,利用MATLAB中的函数edge()实现边缘检测得到车牌的轮廓,在经过灰度腐蚀消除图片中的小且无意义的物体,使车牌的轮廓更加清晰,然后用函数imclose()对图像进行平滑处理,消除噪声和数字化误差的影响,最后用函数bwareaopen()移除小对象完成对图片的处理。接着对图像进行二值化,计算出车牌区域的边界,确定分界线后,提取出来车牌区域。接下里来依次进行字符分割、使用函数imresize(I,Size,Mod
47、el)进行字符归一化和字符匹配识别。最后,基本上可以识别车牌,达到设计的目的。虽然本设计只对蓝底白字车牌进行了验证,但是对于黑底白字的车牌应该也能适用,然而其它的车牌就需要根据具体情况对算法进行调整。由于学习的知识所限及对车牌系统研究的深度不够,本设计的算法还需优化,例如二值化计算中的阀值的选取对二值化效果有很大影响,同时识别速度还不够快,还有本设计选用的模板匹配方法相比较于神经网络法准确度相对也要差一点,所以实际应用起来还不现实。通过这次设计,我觉得在车牌系统今后的发展过程中,对算法的优化是其重点以便能更迅速、更准确的识别出车牌,而且在以后的车牌识别系统中能够加入更多的功能,能够在识别车牌的同时记录更多的车辆信息,比如车辆实时车速及车辆车型。实践过后,我深深体会到毕业设计不仅是对以前所学知识的一种检验,而且也是对自己动手能力的一种提高。以前对MATLAB也仅局限在数学实验上学的那些知识,但通过此次的毕业设计,不仅了解到MATLAB在图形图像处理方面的强大功能,还提