模式识别-车牌识别文档

上传人:我*** 文档编号:132598963 上传时间:2020-05-18 格式:DOCX 页数:14 大小:3.63MB
返回 下载 相关 举报
模式识别-车牌识别文档_第1页
第1页 / 共14页
模式识别-车牌识别文档_第2页
第2页 / 共14页
模式识别-车牌识别文档_第3页
第3页 / 共14页
模式识别-车牌识别文档_第4页
第4页 / 共14页
模式识别-车牌识别文档_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《模式识别-车牌识别文档》由会员分享,可在线阅读,更多相关《模式识别-车牌识别文档(14页珍藏版)》请在金锄头文库上搜索。

1、实际环境下汽车牌照识别方法的研究与实现1 设计要求与准备本次设计是研究生一年级上学期的模式识别课程的课程设计,设计内容是实际环境下汽车牌照识别方法的研究与实现。设计有两个主要要求:完成对实际环境下的汽车牌照部分图像的抽取;对抽取出来的牌照经过相关处理之后,对其上的字符内容进行识别。基于课程设计的要求,需要进行实际环境下的汽车牌照识别,由于条件限制,不能用类似于学校门口的牌照硬件获取实际环境下的汽车照片,因此自行采集了一些汽车照片,用它们作为设计时的调试材料。2 概述2.1汽车牌照识别现状车牌识别技术在实际生产生活中十分常见。在学校或者单位的门口,在停车场门口,经常可以看到摄像头,汽车驶来,系统

2、会自动拍摄汽车的照片,然后将照片中属于汽车牌照的部分提取出来,然后通过相应的处理手段,识别出车牌,然后送到后台处理系统,或与后台数据库进行比对,以查看该车是否属于合法进入,或者记录下该车的入场时间,等离场时进行计费统计等工作。此外,在交通中车牌识别的应用也有非常重要的意义,例如电子警察,对于违规车辆自动识别记录,或者在罪犯抓捕时,通过车牌识别锁定相关车辆,然后调集警力等。通过平时在学校门口或者超市停车场的观察,发现现在的车牌识别系统已经达到了非常成熟的程度,几乎可以在无人值守的情况下保持正常、准确的运转。其中牵扯到一系列的硬件、软件的配合,据观察,有些系统是有后台计算机,整个汽车门禁系统相当于

3、一个终端,连接到后台计算机上,但是大多数应该都是基于单片机的系统,也就是在系统中有单片机,运行着车牌识别程序。国内外有很多研究和工作致力于解决车牌是别中的各种问题,例如车牌区域的选定,例如车牌字符的切割,例如车牌字符的匹配,都有很多相关的工作。2.2汽车牌照识别用到的技术与准备在本次设计中,整个程序都是用Matlab完成,因为之前对Matlab不是很熟悉,因此再设计前学习了Matlab的相关内容。车牌识别可以使用很多Matlab提供的函数,从而大大减轻对于图像处理等操作所耗费的时间和精力。在本次设计的条件下,很大一部分工作都是对自行拍摄的照片进行处理,因此用到了很多图形图像处理的技术,由于此前

4、图像方面的基础不足,因此也了解了一些图形图像学方面的知识。除了图像图像学方面的技术,另一个主要的技术就是字符切割与识别技术。这其中需要用到模式识别课程上的分类思想和知识。我们参考了相关文献,虽然没有将一些比较好的想法全部实现,但是开阔了思路,在以后的工作和学习中遇到相关问题的时候,对问题的处理有一定的帮助。3 基本原理与设计思路汽车牌照识别主要可以分为4个步骤:首先是汽车图像获取,然后是汽车牌照区域的确定,然后是对车牌区域的处理与字符分割,最后是对分割出来的字符进行识别。大致流程图如图1所示。开始输入图像寻找车牌区域学习调整重新寻找区域确定是否合理 否 是字符切割学习调整重新切割切割是否合理

5、否识别 是结束图1 汽车牌照识别的流程概要从图1中可以看出,在本次试验要求下,系统的关键组成部分有:(1)汽车牌照区域的确定;(2)汽车牌照字符的切割;(3)切割后字符的识别这三部分。下面是我们对每一重要组成部分的理解。首先是汽车牌照区域的确定。我们自行拍摄的照片如图2所示。图2 自行拍摄的用于试验设计的照片从这个图片上,很容易想到车牌区域的确定可以按照颜色进行。因此一开始我们想到的方法是,获取一张图片之后,从上往下进行扫描,当某一行的蓝色像素点的个数大于某个阈值之后,那么这部分就可能是车牌区域。扫描过程中,找出蓝色像素数量最大的一行,然后从这一行分别向上、向下扫描,不管向上还是向下扫描,如果

6、蓝色像素的数量小于某一阈值就停止扫描,这就分别确定了车牌区域的上下边界。然后用同样的方法左右扫描,这样就可以找到左右边界,左右边界确定以后,就可以圈定车牌所属的区域了。但是这种方法对于光照条件较好、没有发生偏色,并且少有蓝色背景干扰的情况下比较有效,如果有蓝色干扰背景,或者车牌区域有偏色的情况下,就不是很理想。例如,对于老师给的如图3所示的照片,这种简单的统计像素点就没有效果。图3 老师提供的汽车图片因此,我们继续观察图片,在颜色统计的方法上提出了两种改进方式:第一种方式是统计蓝色像素点之后,再统计同一行(列)上的白色像素点个数,如果这一行(列)上的白色像素点也达到一个阈值,那么说明这个区域可

7、能是车牌区域。第二种方式是,发现照片中汽车会有周围的环境有将强的差别,而蓝色的干扰区域一般是出现在图片的上、左、右三个方位,因此在扫描的时候,可以不从照片最上面和最左边开始扫描,而是选定某一个地方,这个地方的背景干扰不多,而且不至于把汽车的牌照截出去。我们认为这里其实可以用某些边缘提取或者是物体形态学的相关方法来实现,但是最终没有实现好。其次是汽车牌照字符的切割。在设计初期,我们先手动截取了车牌区域的图片进行分析。如图4所示。图4 汽车牌照的区域我们分析了这张图片的特点,发现汽车牌照区域的图片结构相对简单,颜色构成不复杂,因此可以按照图5所示的步骤进行操作。倾斜矫正灰度化二值化字符切割图5 汽

8、车牌照字符分割的主要步骤灰度化利用matlab提供的函数rgb2gray(图片)即可,灰度化之后,图像就变成了一个二维矩阵,这样信息量大大减少,不必要的信息变少,留下的都是车牌识别中需要关心的主要信息。像图4中所示的图片,灰度化之后也很难进行处理,因此需要进行倾斜校正。倾斜校正的时候利用matlab提供的radon(图片,range);进行,先求一个倾斜角,然后按照倾斜角进行旋转。然后为了进一步压缩图像的不必要信息,需要对车牌照片进行二值化,也就是将照片中灰度级大于某个阈值的的所有点都置成255,小于某个阈值的所有点都置成1,这样,图片中就只有两种点:纯白和纯黑,这样就可以抓住主要特征进行分析

9、了。但是在进行二值化处理的时候,遇到了一个问题,就是老师给的照片提出出车牌区域之后,二值化的结果是全黑的。因为我们当时设置的阈值是125,而老师提供的照片光照强度比较暗,因此就导致车牌字符所在的区域的像素值也较低,因此将这一部分也变成了黑色。这个问题可以通过matlab提供的函数level = graythresh(tempLicence);tempLicence=im2bw(tempLicence,level);进行处理,第一个函数graythresh的含义是,matlab会通过对图片进行分析,找一个合适的阈值,这个阈值能将图片灰度值相对较高和相对较低的点区分开来,避免了全黑或者全白的情况。

10、得到了如图6所示的二值化图片之后,我们对其进行了分析。图6 经过处理后的车牌图像拿到这幅图像之后的下一个要解决的问题就是将其分割成七个小部分,每个小部分对应的是一个汉字、字母或者数字。在这么做之前,首先要对图片进行分析,发现图片的中央区域是有用的信息,而周围的点都是干扰,应该将它们截取掉。我们将这个图片向Y方向和X方向进行投影,得到了图7、图8所示的两幅图像。图7 二值图Y轴方向的投影通过对图7进行分析,我们发现,图片上、下两部分的干扰与车牌之间在投影之后有很大的差别,很明显,它们之间有着明显的断层。我们可以利用它们之间的断层,对车牌的上下干扰部分进行裁剪。我们采用的方法是:首先找到图像的中央

11、,然后从中央向两端分别扫描,每一个方向如果遇到第一个值小于阈值,并且下一个值也小于阈值的时候,就认定找到了字符与边框干扰的边界,记下这个值,进行切割就可以去除上下边框。 a)切除上下边框之前的投影 b)切除上下边框之后的投影图9 二值图向X轴方向的投影然后对图9进行分析,我们发现向X轴方向的投影特征不如Y轴那么明显,干扰部分也出现了与车牌区域很相似的波峰,而且字符与字符之间也存在着间隔,因此不能像切除上下边框那样切除左右边框。后来我们想,索性不切除左右边框,反正只要我能把字符切割出来就行,左右边框可以丢弃,只要不切到它们,它们就不会像上下边框那样对识别造成影响。我们发现,车牌的圆点是一个可利用

12、的特征。它出现在第三或者第四个位置,而且它的值明显小于左右两个字符的值,因此只要找到圆点的位置,就可以以它为参照,向前、向后分别找到其他的字符了。确定圆点的步骤如下页图10所示。在图10中,我们的思路是先将二值图片向X轴方向的投影从左之右进行遍历,找出其中所有的值小于阈值的点(我们手动设为1,即如果这个方向上投影的黑点个数为零,那么就判定这个地方出现了中断),这个点就是出现了字符中断的区域。在遍历的时候,为了防止把一些汉字间的中断切掉,我们改进了方法,只有这个点的值小于阈值,而且它前面或者后面一个点的值大于阈值,才可以判定它是一个中断坐标。把这些区域的坐标标注出来之后,将这些坐标两两组成一对,

13、每一对对应的就是一个有字符的区域。然后就对这些区域的宽度相加求和,求出来之后,从前往后找到第一个宽度大于平均值的点,那么这个地方要么是边框干扰,要么是汉字,就从这个区域往后继续遍历,找到的第一个宽度小于平均值的区域,这个区域必然是圆点区域。找出圆点区域之后,往前两个区域就是汉字区域,往前一个就是第一个字母,然后相应地后面的字母或者数字也就能确定出来了。这样做可以解决大多数经过准确定位之后的车牌切割问题,但是抗干扰性不高。因为有些车牌本身不干净,在车牌上也分布着一些干扰因素,这样就无法正常提取了。做完车牌切割这一重要工作之后,就可以生成七个小图片,每个图片保存一个字符,将它们存储到本地文件夹下,

14、分别命名为1.jpg至7.jpg。在保存的时候,需要预先将它们的尺寸按照模板的比例进行调整,本设计用的是网上找的模板,这些模板的尺寸是14*22,因此在存储的时候,调用matlab的imresize(char2,22,14)方法保存切割后的图像。扫描结束? 是从左向右扫描图像 否该点是否是临界点 否 是将该点加入临界点列表结束? 是 否 是将临界点组成可能是字符的区域查看下一个区域的宽度是否大于平均值 否 是从这个地方继续往后找是否小于平均值否 是该区域就是圆点区域图10 找出圆点区域的过程流程图最后是进行匹配识别经过我们的观察,我们发现裁剪生成以后的字符的图像如图11所示。 图11 裁剪后的字符图像我们感觉这些图像比较规整,在与模板匹配的时候可以采用距离算法。首先我们从最简单的求差开始。首先读入待识别的字符对应的图片,然后将这个图片与所有的模板做差(为了尽量减少计算量,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 事务文书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号