车牌识别课程设计修改版.docx
《车牌识别课程设计修改版.docx》由会员分享,可在线阅读,更多相关《车牌识别课程设计修改版.docx(32页珍藏版)》请在冰豆网上搜索。
车牌识别课程设计修改版
课程设计
车牌识别的设计与实现
姓名:
***
学号:
**********
专业:
信息工程
指导老师:
***
2014年1月
车牌识别的设计与实现
摘要:
随着我国经济、交通的的快速发展,车牌定位系统以及车牌字符自动识别技术也逐渐受到人们的重视。
车牌识别是对采集的车牌图像进行灰度变换、边缘检测、腐蚀以及平滑处理,最后在取得的大对像中移除小对像,由此提出了一种基于车牌纹理特征的车牌定位算法,最终实现对车牌的定位。
车牌字符分割是为了以便后续对车牌模板进行匹配从而对车牌进行识别,考虑到我国车牌的结构构成所采用的字符并不是很多,由此本文采用了模板匹配的方法,对输出的图像和模板库里的模板进行匹配,通过处理后得到的图片与模板字符相减,得到的0越多那么就越匹配,然后对其个数进行累计并找出数值最大的,即为识别出来的结果。
关键词:
字符识别;模式识别;车牌定位;模板匹配;边缘检测
1引言
近年来随着社会经济的高速发展、汽车数量急剧增加,对交通管理的要求也日益提高,而相应的人工管理方式以不能满足实际的需要,微电子、通信和计算机技术在交通领域的应用极大地提高了交通管理的效率。
运用电子信息技术实现安全、高效的智能交通成为交通管理的主要发展方向。
汽车牌照号码是车辆的唯一“身份”标识,通过智能的车牌定位及识别技术将对于维护交通安全和城市治安,防止交通堵塞,实现交通自动化管理有着现实的意义。
车牌识别技术(VehicleLicensePlateRecognition,VLPR)是指能够检测到受监控路面的车辆并自动提取车辆牌照信息进行处理的技术。
车牌识别是现代智能交通系统中的重要组成部分之一,应用十分广泛。
它以数字图像处理、模式识别、计算机视觉等技术为基础,对摄像机所拍摄的车辆图像或者视频序列进行分析,得到每一辆汽车唯一的车牌号码,从而完成识别过程。
车牌定位与字符识别技术是基于计算机图像处理、模式识别等技术为基础,通过对原图像的处理,以及边缘检测技术实现对车牌的定位,然后对车牌图像处理、归一化处理、分割以及保存,最后进行分割图像与模板库的模板进行匹配,最后输出匹配结果。
车牌的智能定位以及识别是一个完整的系统,考虑到其应用的普遍性以及广泛性,就要求我们在设计过程中考虑到以下几方面:
(1)准确性:
尽可能的避开其他外界造成的干扰,准确的识别车牌信息。
(2)实时性:
考虑到车载行驶的过程中速度不一,对触发超速摄像的抓拍应当及时的对其进行识别并且储存,才能有效的提高工作效率。
(3)优化性:
采用竟可能低的硬件要求,对其快速的做出的计算与识别。
本文采用的是选取不同的边缘算子检测,通过实验分析不同算子的效果,最终选取了canny算子进行车牌的边缘检测,更好的对其进行检测与识别,然后通过二值化等处理进行分割,最终与模板库模板进行对比,达到车牌识别的目的。
2车牌识别系统分析
2.1车牌识别现状分析
模式识别[]是一门以应用为基础的学科,目的是将对像进行分类,这些对像与应用领域有关,他们可以是图像,信号波形或者是任何可测量且需要分类的对像,在机器视觉中,模式识别是非常重要的,机器视觉系统通过照相机捕捉图像,然后通过分析生成图像的描述信息。
车牌识别技术是计算机模式识别技术在智能交通领域的典型应用,是一个以特写目标为对像的专用计算机视觉系统[]。
简单地说,它使计算机能像人一样认识汽车牌照(包括车牌的汉字、字母、数字)。
车辆牌照识别技术推出以来,人们就对其进行了广泛的研究。
从20世纪90年代初,国外就已经开始了对汽车牌照自动识别[]的研究,其主要途径就是对车牌的图像进行分析,自动提取车牌信息,确定汽车牌号。
国外己有不少相关的文章发表,有的己经非常成熟,投入实际使用。
我国车牌自动识别的研究起步较晚,大约发生在八十年代末。
1988年戴营等利用常见的图像处理技术方法提出汉字识别的分类是在提取汉字特征的基础上进行的。
根据汉字的投影直方图(ProjectionHIStogram),选取浮动阂值,进行量化处理后,形成一个变长链码,再用动态规划法,求出与标准模式链码的最小距离,实现细分类,完成汉字省名的自动识别。
目前我国市场上有二十几家企业从事车牌识别产品的开发和生产,其中比较成熟的有香港的ASiavisionTeChnologyLtd公司(亚洲视觉科技有限公司)、北京
汉王、沈阳聚德、川大智胜、上海高德威、清华紫光、杭州友通、深圳科安信、利普视觉中智交通电子系统有限公司等企业。
2.2车牌识别的意义
结合我国的国情,由于我国地域广阔,车辆道路复杂,安装相应的检测设备或者人员配备投资巨大,且造成人力物力的浪费,因此我们急需对现有的检测设备优化,而车牌识别技术恰好能满足这一需求,通过车牌识别我们可以解决被纳入“黑名单”的通缉车辆,可以统计一定时间范围内进出各省的车辆,还能有效的对该车辆进行定位,对公安机关等相关部门有着很重要的作用,具体归结应用方式如下:
1)监测报警
对于纳入“黑名单”的车辆,例如:
被通缉或挂失的车辆、欠交费车辆、未年检车辆、肇事逃逸及违章车辆等,我们只需要把其牌照的信息输入系统,那么该车辆在通过装有全国联网系统的路口或者收费站等卡口时,信息采集设备将会对其进行采集并且与数据库对比,实现其定位。
这种方式可以通过程序实现24小时工作,而且此过程保密性好,不会提醒黑名单车辆的死机。
2)车辆出入自动登记及放行
在需要管制的小区或者办公场所门口装设车牌识别系统,那么汽车进出此场所时间,车牌牌照等信息将会被存储在相应的数据库中,通过修改相应的数据库,添加车牌信息,我们还能让自动门禁对相应的车辆进行自动放行,如遇到非数据库中的车辆则由保安进行相应的咨询,或批准后人为放行。
这不仅提高物业管理的效益,同时自动比对进出车辆,防止偷盗事件的发生。
3)违法违章管理
车牌识别技术结合测速设备可以用于车辆超速违章处罚,一般用于高速公路、容易肇事路段。
还可以在红绿灯路口加上红外检测实现违规检测,对出现闯红灯的现像或者违规转弯的现像进行相应的数据采集。
将其传送至相关部门,从而对其下发处罚通知书,实现对其处罚。
4)交通流控制指标参量的测量
为达到交通流控制的目标,一些交通流指标的测量相当重要。
车牌识别系统能够测量和统计很多交通流指标参数例如车流量,车流高峰时间段,平均车速,车辆密度等。
这也为交通诱导系统提供必要的交通流信息。
从而能够有效的采取措施预防堵车,排队,事故等交通异常现像。
5)移动电子警察系统
随着我国公路基础建设的快速发展,公路的质量、里程都有了很大程度上的提高,但也出现了不交养路费等情况,给国家造成了巨大的经济损失。
且丢失车辆稽查、车辆是否合法、拦车路检等情况都需要公安人员对其进行相应的检查,由于人工判断工作效率很低且容易让正常车主及乘客造成误解,现在有了车牌自动识别技术之后将大大提高办公效率以及检查的准确性,很大程度上解决了以上的问题。
3实现目标和功能
车牌识别(VehicleLicensePlateRecognition,VLPR)是现代智能交通系统中的重要组成部分之一,应用十分广泛,车牌识别技术通过对信息量较大的对像采集,然后经过一系列的处理提取了相对较小的信息量且有价值的一部分信息,仅仅提取识别车“身份”的车牌信息。
在交通管理过程中,通常采用视频监控方式对闯红灯和超速等违章车辆进行监督。
对违章车辆,需要自动检测车牌信息,提取车牌号码,以便查找车主信息和监督管理。
对于维护交通安全和城市治安,防止交通堵塞,实现交通自动化管理有着现实的意义。
实现功能
1)对图像进行预处理,增加图像的对比度;
2)根据图像的颜色对车牌区域定位
3)对图像进行旋转、二值化操作,并进行水平投影操作,根据直方图峰值和谷值对字符进行分割;
4)可采用模板匹配方法,对数字和字母进行识别,并输出识别后的结果。
4实现所采用的方法
车辆牌照识别整个系统主要是由车牌定位和字符识别两部分组成,其中车牌定位又可以分为图像预处理及边缘提取模块和牌照的定位及分割模块;字符识别可以分为字符分割与特征提取和单个字符识别两个模块。
为了用于牌照的分割和牌照字符的识别,原始图像应具有适当的亮度,较大的对比度和清晰可辩的牌照图像。
但由于该系统的摄像部分工作于开放的户外环境,加之车辆牌照的整洁度、自然光照条件、拍摄时摄像机与牌照的矩离和角度以及车辆行驶速度等因素的影响,牌照图像可能出现模糊、歪斜和缺损等严重缺陷,因此需要对原始图像进行识别前的预处理。
牌照的定位和分割是牌照识别系统的关键技术之一,其主要目的是在经图像预处理后的原始灰度图像中确定牌照的具体位置,并将包含牌照字符的一块子图像从整个图像中分割出来,供字符识别子系统识别之用,分割的准确与否直接关系到整个牌照字符识别系统的识别率。
由于拍摄时的光照条件、牌照的整洁程度的影响,和摄像机的焦距调整、镜头的光学畸变所产生的噪声都会不同程度地造成牌照字符的边界模糊、细节不清、笔划断开或粗细不均,加上牌照上的污斑等缺陷,致使字符提取困难,进而影响字符识别的准确性。
因此,需要对字符在识别之前再进行一次针对性的处理。
车牌识别的最终目的就是对车牌上的文字进行识别。
主要应用的为模板匹配方法。
因为系统运行的过程中,主要进行的都是图像处理,在这个过程中要进行大量的数据处理,所以处理器和内存要求比较高,CPU要求主频在600HZ及以上,内存在128MB及以上。
系统可以运行于Windows98、Windows2000或者WindowsXP操作系统下,程序调试时使用matlab。
5实现目标方法流程图
车牌定位与字符识别技术是基于计算机图像处理、模式识别等技术为基础,通过对原图像的处理,以及边缘检测技术实现对车牌的定位,然后对车牌图像处理、归一化处理、分割以及保存,最后进行分割图像与模板库的模板进行匹配,最后输出匹配结果。
流程如下图所示
车牌识别系统流程图
图1车牌识别系统流程图
6实现目标主要步骤
1)获取图像装入待处理彩色图像并显示原始图像
2)图像预处理对Sgray原始黑白图像进行开操作得到图像背景
3)取得最佳阈值,将图像二值化
4)对得到二值图像作开闭操作进行滤波
5)对二值图像进行区域提取,并计算区域特征参数。
进行区域特征参数比较,提取车牌区域
6)计算车牌水平投影,并对水平投影进行峰谷分析
7)计算车牌旋转角度
8)旋转车牌后重新计算车牌水平投影,去掉车牌水平边框,获取字符高度
9)计算车牌垂直投影,去掉车牌垂直边框,获取车牌及字符平均宽度
10)计算车牌上每个字符中心位置,计算最大字符宽度
11)提取分割字符,并变换为22行?
14列标准子图
7程序结果显示
Step1获取图像装入待处理彩色图像并显示原始黑白图像
图1-1原始彩色图像
图1-2原始黑白图像
Step2图像预处理对原始黑白图像进行开操作得到图像背景
图2-1原始黑白图像
图2-2背景图像
图2-3增强黑白图像(原始黑白图像与背景图像相减)
Step3取得最佳阈值,将图像二值化
二值图像是指整幅图像画面内仅黑、白二值的图像。
在实际的车牌处理系统中,进行图像二值变换的关键是要确定合适的阈值,使得字符与背景能够分割开来,二值变换的结果图像必须要具备良好的保形性,不丢掉有用的形状信息,不会产生额外的空缺等等。
车牌识别系统要求处理的速度高、成本低、信息量大,采用二值图像进行处理,能大大地提高处理效率。
阈值处理的操作过程是先由用户指定或通过算法生成一个阈值,如果图像中某中像素的灰度值小于该阈值,则将该像素的灰度值设置为0或255,否则灰度值设置为255或0。
图3-1图像二值化
Step4对得到二值图像作开闭操作进行滤波
1)边缘检测:
两个具有不同灰度值的相邻区域之间总存在边缘,边缘就是灰度值不连续的结果,是图像分割、纹理特征提取和形状特征提取等图像分析的基础。
为了对有意义的边缘点进行分类,与这个点相联系的灰度级必须比在这一点的背景上变换更有效,我们通过门限方法来决定一个值是否有效。
所以,如果一个点的二维一阶导数比指定的门限大,我们就定义图像中的次点是一个边缘点,一组这样的依据事先定好的连接准则相连的边缘点就定义为一条边缘。
经过一阶的导数的边缘检测,所求的一阶导数高于某个阈值,则确定该点为边缘点,这样会导致检测的边缘点太多。
可以通过求梯度局部最大值对应的点,并认定为边缘点,去除非局部最大值,可以检测出精确的边缘。
一阶导数的局部最大值对应二阶导数的零交叉点,这样通过找图像强度的二阶导数的零交叉点就能找到精确边缘点。
图4-1图像边缘提取
2)对得到图像作开操作进行滤波:
数学形态非线性滤波,可以用于抑制噪声,进行特征提取、边缘检测、图像分割等图像处理问题。
腐蚀是一种消除边界点的过程,结果是使目标缩小,孔洞增大,因而可有效的消除孤立噪声点;膨胀是将与目标物体接触的所有背景点合并到物体中的过程,结果是使目标增大,孔洞缩小,可填补目标物体中的空洞,形成连通域。
先腐蚀后膨胀的过程称为开运算,它具有消除细小物体,并在纤细处分离物体和平滑较大物体边界的作用;先膨胀后腐蚀的过程称为闭运算,具有填充物体内细小空洞,连接邻近物体和平滑边界的作用。
对图像做了开运算和闭运算,闭运算可以使图像的轮廓线更为光滑,它通常用来消掉狭窄的间断和长细的鸿沟,消除小的孔洞,并弥补轮廓线中的断裂。
图4-2图像闭运算
图4-3图像开运算
Step5对二值图像进行区域提取,并计算区域特征参数。
进行区域特征参数比较,提取车牌区域
1)对图像每个区域进行标记,然后计算每个区域的图像特征参数:
区域中心位置、最小包含矩形、面积。
图5-1图像彩色标记
2)计算出包含所标记的区域的最小宽和高,并根据先验知识,比较谁的宽高比更接近实际车牌宽高比,将更接近的提取并显示出来。
图5-2车牌灰度子图与二值子图
Step6计算车牌水平投影,并对水平投影进行峰谷分析
1)对水平投影进行峰谷分析,计算出车牌上边框、车牌字符投影、车牌下边框的波形峰上升点、峰下降点、峰宽、谷宽、峰间距离、峰中心位置参数。
对水平投影进行峰谷分析:
图6-2车牌二值子图
Step7计算车牌旋转角度
1)车牌倾斜的原因导致投影效果峰股谷不明显,在这里需要做车牌矫正处理。
这里采取的线性拟合的方法,计算出车牌上边或下边图像值为1的点拟合直线与水平X轴的夹角。
Step8旋转车牌后重新计算车牌水平投影,去掉车牌水平边框
图8-1垂直与水平投影
Step9计算车牌垂直投影,去掉车牌垂直边框,获取车牌及字符平均宽度
1)通过以上水平投影、垂直投影分析计算,获得了车牌字符高度、字符顶行与尾行、字符宽度、每个字符的中心位置,为提取分割字符具备了条件。
Step10字符分割及输出结果
进行车牌识别前需要使用样本对神经网络进行训练,然后使用训练好的网络对车牌进行识别。
其具体流程为:
使用汉字、字母、字母数字、数字四个样本分别对四个子网络进行训练,得到相应的节点数和权值。
对已经定位好的车牌进行图像预处理,逐个的特征提取,然后从相应的文件中读取相应的节点数和权值,把车牌字符分别送入相应的网络进行识别,输出识别结果。
结果图
显示结果为:
除汉字外的字符BB88888
8结果总结及分析
实验对车牌识别系统的软件部分进行了研究,分别从图像预处理、车牌定位、字符分割以及字符识别等方面进行了系统的分析。
整理和总结了国内外在车牌定位、分割、字符识别方面的研究成果和发展方向,系统介绍了我国车牌的固有特征,以及车牌识别的特点。
在车牌定位我们采用基于灰度跳变的定位方法,采用先对图像进行预处理,再进行二值化操作的方法。
实验表明本方法既保留了车牌区域的信息,又减少了噪声的干扰,从而简化了二值化处理过程,提高了后续处理的速度。
基于彩色分量的定位方法,运用基于蓝色像素点统计特性的方法对车牌是蓝色的车牌进行定位,实验表明,用该方法实现的车牌定位准确率较高。
本设计用MATLAB编程运行结果可以得出,本设计采用的图像预处理、CANNY边缘检测、开闭运算子[5,19]、车牌长宽比特征识别等对车牌的定位都是非常有效的,而本设计提出的二次水平投影分析和阈值技术有效检测了车牌图像的上下左右边框、旋转角度,准确实现的车牌字符的分割,对多个车牌进行实验,均有很高的正确率。
本设计虽然只对蓝底白字车牌进行分割识别,对黑底白字车牌原则上整个算法可直接适用,对白底黑字车牌、黄底黑字车牌,需要对车牌定位算法进行调整,并将图像反转(0变1、1变0),而车牌字符的分割算法仍然行之有效。
在车牌识别的过程中数字库的建立很重要,只有数字库的准确才能保证检测出来的数据正确。
切割出来的数据要与数据库的数据作比较,所以数据库的数据尤为重要。
9设计体会
经过近一周的奋战我的课程设计终于完成了。
课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。
以前老是觉得自己什么东西都不会,什么东西都不懂,而且又急于求成,结果造成什么都没学好,还是什么都不会。
通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质,特别是对于我,基础比较差,一定不能太过于心急,要静下心来慢慢的研究。
在这次课程设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学,我也明白学习不是埋头苦读书,而是合理的利用资源,从同学那里,老师那里得到的有用的想法和信息,特别是网上有很多很好的资料,对自己的自学能力也是很好的提高。
参考文献
[1](希)西奥多里德斯等著.模式识别(第三版)[M].电子工业出版社,2006年12月。
1-6
[2]孙增祈.智能控制理论与技术[M].北京:
清华大学出版社,1999
[3]钟珞,潘昊,何平.模式识别[M]书.武汉:
武汉大学出版社,2006年9月第1版:
P1-P5,P62-P64
[4]叶晨洲等.车辆牌照字符识别系统[J].计算机系统应用,1999(5):
10-13
[5]袁志伟,潘晓露.车辆牌照定位的算法研究[J].昆明理工大学学报,2001,26
(2):
56-60
[6]冈萨雷斯.数字图像处理(第二版)[M].北京:
电子工业出版社,2007
附录
主要代码程序
clear;
closeall;
%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);%打开sgrays图像
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]));%取矩形框的开运算
figure,imshow(bg3);title('图像开运算[5,19]');%输出开运算的图像
bg2=imopen(bg3,strel('rectangle',[19,1]));%取矩形框的开运算
figure,imshow(bg2);title('图像开运算[19,1]');%输出开运算的图像
%Step5对二值图像进行区域提取,并计算区域特征参数。
进行区域特征参数比较,提取车牌区域
[L,num]=bwlabel(bg2,8);%标注二进制图像中已连接的部分
Feastats=imfeature(L,'basic');%计算图像区域的特征尺寸
Area=[Feastats.Area];%区域面积
BoundingBox=[Feastats.BoundingBox];%[xywidthheight]车牌框架大小
RGB=label2rgb(L,'spring','k','shuffle');%标志图像向RGB图像转换
figure,imshow(RGB);title('图像彩色标记');%输出框架的彩色图像
lx=0;
forl=1:
num
width=BoundingBox((l-1)*4+3);%框架宽度的计算
hight=BoundingBox((l-1)*4+4);%框架高度的计算
if(width>98&width<160&hight>25&hight<50)%框架的宽度和高度的范围
lx=lx+1;
Getok(lx)=l;
end
end
fork=1:
lx
l=Getok(k);
startcol=BoundingBox((l-1)*4+1)-2;%开始列
startrow=BoundingBox((l-1)*4+2)-2;%开始行
width=BoundingBox((l-1)*4+3)+8;%车牌宽
hight=BoundingBox((l-1)*4+4)+2;%车牌高
rato=width/hight;%计算车牌长宽比
ifrato>2&rato<4
break;
end
end
sbw1=bw2(startrow:
startrow+hight,startcol:
startcol+width-1);%获取车牌二值子图
subcol1=Sgray(startrow:
startrow+hight,startcol:
startcol+width-1);%获取车牌灰度子图
figure,subplot(2,1,1),imshow(subcol1);title('车牌灰度子图');%输出灰度图
su