车牌识别系统设计及MATLAB仿真.docx
《车牌识别系统设计及MATLAB仿真.docx》由会员分享,可在线阅读,更多相关《车牌识别系统设计及MATLAB仿真.docx(31页珍藏版)》请在冰豆网上搜索。
车牌识别系统设计及MATLAB仿真
公路车牌识别系统设计及MATLAB仿真
摘要
近些年,作为智能交通的关键组成部分,车牌识别系统也受到越来越多国家的重视。
车牌识别系统不仅能够应用到停车场的管理系统、高速公路的管理系统以及小区车辆管理的系统等一些智能领域,而且对未来国家的安全发展有有重大的意义。
本文在对当前车牌识别系统学习的基础上开发一个基于MATLAB的车牌识别系统。
整个测试平台的软件部分利用MATLAB的M语言编写。
其中图像处理用到MATLAB灰度图函数rgb2gray、基于Robert算子的函数edge及图像平滑处理函数imclose;图像分割进行了图像膨胀、图像腐蚀;然后用垂直投影法进行字符分割;最后字符经过归一化,进行字符的匹配识别,最终实现了仿真。
关键词:
MATLAB;字图像处理;牌识别系统
第一章绪论
1.1国内外车牌识别技术现状
随着经济社会的迅速发展,人们生活水平的提高,机动车辆的数量也越来越多。
为了提高车辆的管理效率,缓解交通压力,我们必须找到一种解决方案。
而作为汽车“身份证”的车牌是确定汽车身份的不二选择。
早在上世纪的70年代,英国能够就在实验室完成了“实时车牌检测系统”的广域检测及开发。
发展到如今,国外对车牌检测技术的研究已经取得了一些引人注目的成果。
如YuntaoCui[1]提出的一种车牌识别系统,在实现车牌定位之后,通过马尔科夫场来完成车牌特征的提取和二值化,其正确识别率达到了比较高的水平。
EunRyung等[2]利用颜色中的分量,进行车牌的识别,他们提到了三种方法:
第一,利用Hough来实现边缘检测定位识别;第二,利用灰度值变换的车牌识别算法;第三,利用HLS彩色模式开发的车牌识别系统。
由于开始这方面研究的时间较早,日本在车牌图像的获取方面也进行了大量的研究。
Luis[3]开发的车牌识别系统已经应用于公路收费站,一般天气下识别率高达90%以上,即使天气情况不好,其正确识别率也在70%以上。
1990年,美国智慧交通学会CITSAmerica首次提出智能交通系统(ITS)的概念。
如今,在发达国家的一些大城市,智能交通系统已经广泛运用到收费站和高速公路系统。
车牌识别系统集摄像、计算机信息处理、图像处理和图形识别技术于一体,成为智能交通管理系统中关键组成部分。
车牌识别系统在车辆管理及交通安全管理中都具有很重要的意义。
车牌自动识别技术在车辆过路、过桥全自动不停车收费、交通流量控制指标的测量、车辆的自动识别、高速公路上的事故自动测报、不停车检查、车辆的定位、汽车的防盗、稽查和追踪车辆违规、违法行为、维护交通和城市治安、防止交通堵塞、提高收费路桥的服务速度、缓解交通紧张状况等方面将会起到积极的作用。
尽管我国在车牌识别系统领域的研究起步相对较晚,但随着智慧交通技术在全世界的兴起,我国在智慧交通也取得了一些成就,技术也慢慢步入了应用的阶段。
与此同时,我国对智慧交通技术的研究投入了大量的精力,使智能交通技术的研究步入了快速发展期。
其中,中科院自动化所的刘志勇等[4]开发的系统在总量达到3180的一个样本集中,使车牌正确定位的概率高达99.42%,而其正确切分的概率也达到了94.52%。
后来,汉王公司采用这套系统作为车牌识别系统,取得了相当好的效果。
还有南京大学的熊军等[5]提出了一种建立在字符纹理特征之上的新定位算法,其准确率有95%。
此外,华中科技大学的陈振学等[6]提出一种新颖的用于车牌图像中进行字符分割与字符识别的算法,通过一维循环清零法,再对垂直投影图进行扫描,能够有效的清除杂点和间隔符,其正确率高达96.8%。
另外,浙江大学的张引、潘云鹤等[7]提出了彩色边缘操作数ColorPrewitt及彩色边缘检测和区域生长相结合的一种拍照定位算法ColorLP,不仅算法简单,而且能够全面作用于色彩空间的三个分量上,还能使检测出的牌照区域与背景的剥离更加容易。
但由于其计算量和存储量都较大,难以达到实时性的要求。
此外,当车辆区域的颜色与附近比较接近时,定位的失误率会增加。
当前,全球许多国家都在大力发展适用于本国汽车牌照的车牌识别系统研究,美、日、韩等经济发达的国家已有相关系统(基于传感器的)问世。
考虑到引进这些系统不仅费用比较高,而且由于各国车牌和实际的交通情况不同,引进的系统通常无法满足我国城市的要求。
虽然我国市场上已出现了相关的产品开始使用,但是其在后续的处理上依然很大程度需要人工的帮助,因此对车牌识别系统的研发不仅当前而且在将来一段时间都会处在高科技科研的最热门领域。
因为能够完成车牌识别系统的开发设计而应用到实际生活中,不仅具有相当重大的学术意义,还有十分积极的社会和经济效益见文献[8]。
1.2程研究的目的
车牌识别技术是建立在图像处理、图像识别、计算机等技术的基础上的智能识别系统,它基于每一个汽车只有唯一的车牌号码的特征,通过对摄像机拍摄的车辆图像的处理进行车牌号码的识别。
在不对汽车造成影响的情况下利用计算机自动实现车牌的识别,进而大大降低交通管理工作的难度。
同时本设计的高速公路车牌识别系统基于MATLAB应用软件的基本知识和相关程序设计方法,通过解决实际应用问题,来进一步加深对理论知识的掌握,并把所掌握的知识系统、高效的运用到实践中来,把理论与实践的相结合,加深对知识的理解。
同时增强独立编程的能力,并在实践中不断发现问题解决问题,完善理论基础,提高自己的综合能力。
1.3MATLAB简介
MATLAB是美国MathWorks公司的产品,是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB其实是矩阵实验室(MatrixLaboratory)的简称,与Mathematica、Maple并称为数学的三大软件。
MATLAB无论在数学类的科技应用软件中,还是在数值的计算方面都首屈一指。
MATLAB也可以实现矩阵的运算、函数的绘制以及实现算法、用户接口的创建、与其它编程语言程序的连接等,主要应用在工程计算、自动控制、信号检测、信号处理、图像处理、金融建模的设计和分析等领域。
MATLAB中基本的数据单位是矩阵,由于它的指令表达式和数学、工程中常用的形式非常的相似,因此采用MATLAB来解觉问题要比采用C,FORT等语言解决相同的问题要简捷得多,而且mathwork也拥有Maple等软件的优点,这使MATLAB成为了一个功能强大的数学软件。
在新版本的MATLAB中也增加了对C,FORTRAN,C++,JAVA的支持。
用户不仅可以直接调用,还可以把自己编好的程序导入到MATLAB函数库中以便于自己以后的调用,重多的MATLAB爱好者编写了许多经典的程序,一般的用户下载后,就可以直接进行使用。
在20世纪的70年代,美国新墨西哥大学的计算机科学系主任CleveMoler出于减轻学生编程的负担的目的,利用FORTRAN编写了世界上最早的MATLAB。
到了1984年,Little、Moler、SteveBangert共同成立的MathWorks公司正式开始把MATLAB推向了市场。
到了20世纪的90年代,MATLAB已成为了国际上控制界中的标准计算机软件。
1.3.1MATLAB的特点
1.MATLAB数值计算以及符号计算能力,能帮用户把复杂的数学运算及分析简化了许多;
2.完整的图形处理功能,可以让计算结果和编程实现可视化;
3.的用户接口加上与数学表达式接近的自然化语言,便于使用者的学习和掌握;
4.功能丰富的应用工具箱(例如信号处理工具箱及通信工具箱),为用户提供了
许多实用且方便的处理工具。
1.3.2MATLAB的优势
1.编程环境
MATLAB由一系列的工具构成。
这些工具为用户使用MATLAB的函数和檔提供了很大的便利,其中很多的工具是图形用户接口方式,其中包括MATLAB桌面及命令窗口、历史命令窗口、编辑器、调试器、路径搜索和用于用户浏览帮助、浏览文件的浏览器。
而且,伴随着MATLAB的商业化和软件本身的不断更新升级,MATLAB中的用户接口已经非常精致了,越来越接近Windows的标准接口,不仅增强了人机之间的交互性,也进一步简化了操作。
同时新版本的MATLAB还提供有一套完整的联机查询及帮助的系统功能,为用户的使用带来了极大的便利。
尽管其编程环境简洁,但其调试系统却相当的完整,使编好的程序不需要通过编译就可以进行运行,并且能够在及时地显示出错误同时还能对出错的原因进行分析。
2.简单易用
MATLAB是一种高级矩阵/数组语言,它包含控制语句、函数、数据结构、输
入和输出以及面向对象编程的特点。
而且用户能够在命令窗口中实现输入命令和执行语句同步联系起来,还能与预先编好的应用程序(M文件)一起运行。
最新的MATLAB语言是以目前非常流行的C++语言为基础,因此其语法特征和C++十分的相似,同时却更加简单,也更加接近科研人员对数学公式的书写格式,让其对不是来自计算机专业的科研人员来说使用也更加容易。
并且这种语言具有相当不错的可移植性、极强的可拓展性的特点,这也是为什么MATLAB可以深入应用到科学研究和工程计算等相关领域的关键。
3.强处理能力
MATLAB集合了大量的计算算法。
其包含了几百个工程计算中有可能被会用到的数学运算函数,能够方便帮用户实现所需要的各种运算功能。
MATLAB中包含的函数,其所采用的算法都是基于研究与工程计算领域的最新的研究成果,而且还对其进行了相关的优化处理。
在一般情况下,利用它来替代一些底层编程语言,如C或C++是可行的。
在同样的计算要求下,使用MATLAB编程,能够大大减少工作量。
MATLAB里面的函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换等复杂函数。
函数所能解决的问题大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其它初等数学运算、多维数组操作以及建模动态仿真等。
4.图形处理
MATLAB的可视化功能子从一开始的出现就已具备,可以把向量与矩阵用以图形的形式表现出来,而且能够对图形进行标记注释与打印。
层次较高的作图包括对图像的处理以及动画和表达式的作图等。
MAYLAB也可用于数学计算与工程制图。
版本较新的MATLAB对图形处理的功能作了十分巨大的完善,不仅在一般数据的可视化软件都具有的功能方面更加完善,而且在一些别的软件所不具备的功能的方面,MATLAB所具有的能力也相当出色。
另外,对某些特别的可视化需求,MATLAB也包含有相对应的函数能够达到要求,满足了不同用户的不同需求。
此外,MATLAB新版本的开发还重点在图形用户接口(GUI)的制作上做了非常大的改进,在这方面有要求较高的用户也能够得到满足。
MATLAB针对许多特殊的领域都研发了功能相当完备的模块集与工具箱。
通常,这些工具与模块都是由相应领域的专家研发出来的,用户能够直接利用工具箱进行学习、运用以及对不同的方法进行评估却而不用自己去写程序代码。
当前情况,MATLAB已经将工具箱的应用延伸到了科学研究与工程学中的很多领域,例如数据采集、数据库接口、概率统计、样条拟合、算法的优化、偏微分方程的求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统的仿真等,都在MATLAB的工具箱(Toolbox)中占据了一席之地。
5.程序接口
版本较新的MATLAB能够通过MATLAB中的编译器与C/C++中的数学与图形库,把MATLAB程序自行转换成独立于MATLAB之外的C/C++程序的来运行。
同时,还能够实现让用户以C/C++语言编写的程序与MATLAB进行交互。
此外,MATLAB的网页服务程序还允许在Web应用中运用自己的MATLAB数学与图形程序。
MATLAB具有的另外一个特点就是拥有一个程序的扩展系统与一个被叫做工具箱的用于特别应用的子程序集。
工具箱其实是MATLAB函数的子程序库,任意一个工具箱都是为了某一类学科的专业及应用而制定的,主要包括信号处理、控制系统、神经网络、小波分析以及系统仿真等方面的应用。
6.应用软件开发
在开发的环境中,使用户能够更方便地控制多个文件及图形窗口;在编程方面支持函数嵌套和有条件的中断等;在图形化方面,拥有更强大的图形标注与图形处理功能,包括连接注释等;在输入和输出方面,能够直接与Excel和HDF5进行连接。
第二章设计原理及系统概述
2.1设计原理
车牌识别系统的设计是一项利用车辆的动态视频或者静态图像实现牌照区域定位车牌号码识别的技术。
其硬件部分通常包括触发设备、拍摄设备、照明设备、图像收集设备、进行车牌号码识别的处理器等,其软件的关键部分包含车牌区域定位的算法、车牌字符的分割算法和车牌字符的识别算法等相关的算法。
一些车牌识别系统还具备借助视频图像来对车辆是否驶入视野准确判断的功能,被称作车辆的视频检测。
当车辆的视频检测部分确定车辆到达检测区域时触动图像采集部分,进行图像的采集。
牌照识别部分首先对图像进行一些处理,接着定位出车牌区域,再将牌照图像中的字符一一分割出来进行识别,最后所有的字符组成车牌号码输出。
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)、红底(255,0,0)黑字(0,0,0),因为车牌的底色不同,所以从RGB图像中直接对车牌区域进行提取难度相当大。
但是无论底色是哪种,车牌的底色与上面的字符颜色的对比度都比较大,将RGB图像转化为灰度图像时,车牌底色的灰度值跟字符的灰度值会相差很大。
例如蓝色(255,0,0)与白色(255,255,255)在R通道中并无区别,但在G、R通道或者是灰度图象中数值相差非常大。
同样的道理对白底黑字的牌照可用R通道,绿底白字的牌照可以用G通道就能明显显示出牌照区域的位置,以便于后续的处理。
原图、灰度对于将彩色图象转换成灰度图象时,图象的灰度值H可由下面的公式计算:
公式(2.1)
上式采用了权值加重法,也就是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算子是一种通过局部差分来寻找边缘的算子,它采用对角线方向相邻两像素之差近似梯度幅值检测边缘。
其检测垂直边缘的效果优于斜向边缘,不仅定位精度更高,而且对噪声也更敏感。
因此本设计使用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.灰度图腐蚀
所谓腐蚀其实就是消除边界点,然后使边界向内部收缩的一个过程。
利用它能够消除小且无意义的物体。
腐蚀的规则是输出图像的最小值是输入图像领域中的最小值,在一个二值图像中,若有一个像素值为0,则相应的输出像素值也为0。
假如设定B对X腐蚀所产生的二值图像E是满足以下条件的点(x,y)的集合:
如果B的原点平移到点(x,y),那么B将完全包含于X中。
本系统设计采用imerode()函数:
Car_Image_Erode=imerode(Car_Image_Bin,Se);
其中结构元素Se被形象地称为刷子,用于测试输入图像,通常比待处理图像小很多。
结构元素的大小形状是任意的,大多数情况下都是二维的。
二维结构元素是数值0和1构成的矩阵,结构元素的领域像素在进行腐蚀操作时是否需要参加运算是根据结构元素中数值为是否为1。
如果结构元素太大,则会造成腐蚀过度,从而导致造成信息丢失,但是太小又不能达到预期的效果,所以这里采用3×1矩阵的线性结构元素,即Se=[1;1;1]见文献[10]。
4.图像平滑处理
在得到车牌区域的图像轮廓线之后,由于存在图像的数字化误差,加上噪声的影响,对脚点的提取造成影响,所以在脚点提取之前,必须首先对图像进行平滑处理,这里用MATLAB里的一个图像平滑处理函数imclose(),它的功能与开运算相反,用来融合窄的缺口及细长的弯口,去掉小洞和填补轮廓上出现的缝隙。
函数imclose():
Car_Image_Perform=imclose(Car_Image_Erode,Se);
结构单元中Se一个小于对象闭合图形,若存在两个封闭域的距离小于S那么就将这两个域连接为一个连通域,采用Se=strel(‘rectangle’[40,20])的Se产生方式。
Se是一个40×20的矩形,之所以使用矩形是因为车牌也是矩形的,这样,能够保证提取到最接近预期效果的图像见文献[11]。
2.2.3移除小对象
图像经平滑处理之后,可能会有多个闭合区域存在,但是对于不是车牌区域的区域必须予以删除,于是使用MATLAB里面包含的函数bwareaopen(),来删除二值图像中面积小于一个定值的对象,一般情况下使用8邻域,函数bwareaopen():
Car_Image_Perform2=bwareaopen(Car_Image_Perform,2000);
通过上述函数的处理,Car_Image_Perform中面积小于2000的对象都被删除了。
2.2.4车牌区域边界值计算
对将原始图像进行二值化及轮廓平滑处理后,图像中的任何一个点都是两个离散值中的一个,这两个值代表开
(1)与关(0),即只有黑与白两种颜色的特殊灰度图像,而且整个图像只存在两个域(如果有多个域需的,在改变参数后,重新进行剔除干扰对象的处理),全为1的域既是车牌区域,而且与矩形相似,长宽约比为4.5:
1,这两个特性也能用来检验提取的区域是否为车牌区域。
在区域确定了后,便可将车牌的四个边界值给确定下来。
这里采用的是水平与垂直双向投影法。
确定水平坐标:
先定义一个1×
的数组,其中
设定为原始图像的宽度,然后把二值图像垂直投影到
轴上。
从直方图上基本就能够看出水平方向上的两个分界线,为了方便处理,本设计将像素临界值定量化,取值5个像素。
从左向右开始,找到第一个1值像素大于5的
坐标作为水平方向的左侧分界线,然后从右向左,找找到第一个1值像素量大于5的
坐标作为水平方向的右侧分界线,可以利用for循环语句来实现。
利用上述同样的方法,实现垂直方向的分界线的确定。
2.2.6字符分割
在牌照区域的定位完成之后,接下来要做的就是先把牌照区域分割成单个字符,然后一一对其进行识别。
这里采用垂直投影法进行字符分割。
因为字符在垂直方向上投影的局部最小值不是在字符间间隙就是字符内间隙处取得,同时这个位置还要满足牌照的字符的书写格式、字符的尺寸限制等条件。
所以采用垂直投影法对处在复杂环境下的车牌图像中的字符分割能够达到不错的效果。
图2.2牌照字符切割框图
根据我国的车牌规范(普通中小型汽车)规定车牌总长440mm,牌照中的7个字符的实际总长约为409mm,宽140mm,每个字符宽、高分别为45mm、90mm,字符的间距为10mm,其中从左往右的第二个字符与第三个字符的间距比较特殊,为15.5mm,尾字符与首字符距边界的距离都是25mm。
假如根据车牌宽度平均分配给每个字符,那么每个字符宽度为:
width/7(设车牌图像的宽度为width)。
然而实际情况是,第二个与第三个字符之间的间距比较特别,且牌照左右两边与图像边缘也都有一定的宽度,因此每个字符的宽度要小于width/7。
综合考虑,通常情况下,字符的最小宽度为width/9。
所以,可以通过从width/9到width/7渐进的变化来得到字符的宽度。
字符分割流程图如下图所示:
Y
N
N
Y
图2.3字符切割流程图
2.2.7字符识别
对于车牌字符识别,目前最常用的方法是基于神经网络和模板匹配的方法。
基于神经网络的车牌字符识别方法对于分辨率较高(车牌高度不小于120个像素)和图像比较清晰的车牌能有效的识别车牌中的字符,但是对于较底分辨率和较为模糊的车牌则显得无能为力。
现已有一种在模板匹配的基础上改进的方法进行字符识别,使对车牌字符的识别性能得到了改进。
1.选择字符识别方法
目前,字符识别的方法有使用人工神经网络数学模型和模板匹配两种。
人工神经网络是通过模拟人脑的思维功能而建立的数学模型,尽管现在神经网络有了很大的发展,但其还存在应用相对复杂的缺点。
范本匹配法虽然识别率相对较低,但其拥有实现简单,计算量小的优点,而且车牌字符不仅有阿拉伯数字,英文大写字母,还有部分汉字。
字库量尽管不大,但字符较规整时,受图像的缺损及污迹干扰的影响较小且识别率相当高,因此本设计采用模板匹配法。
2.字符归一化
由于采集图像的像素值不同,分割出来的字符的大小也不同,所以在进行匹配前,必须首先对分割出来的字符进行字符归一化。
使图像字符大小跟模板图像大小一致,在这里使用MATLAB里提供可以改变图像大小的函数imresize(I,Size,Model),其中Model是插值运算法,这里选择‘nearest’即最近邻插值法。
3.字符匹配
字符匹配是建立在有一个可以与之相比较的字库表的基础上,然后再将已分割并归一化处理后的字符逐个进行匹配比较,接着将待识别的字符的特征值和模板字符相减,结果相差最小的即是匹配的最好的。
字符识别的步骤如下图所示:
图2.4字符匹配框图
字符匹配的准确度决定车牌识别的准确性,所以建立一个精准有效的模板字库表是必不可少的。
第三章高速公路车牌识别系统设计及MATLAB仿真步骤
3.1图像获取
在这个部分中我们利用在道路两侧安装的高分辨率摄像机对来往的车辆实施动态或者静态抓拍,然后经过图像采集器得到当前的图像,再形成相应的图像数据存储在计算机中,此时存储在计算机中的图像为彩色模式的。
3.2图像处理
3.2.1图像灰度转换及转换效果
由于使用MATLAB内的RGB转灰度图函数rgb2gray(),所以通过边缘检测方法,识别出临近区域灰度值相差大的分界区。
原始图像
灰度图像
图3.1灰度图转换