模式识别车牌识别文档_第1页
模式识别车牌识别文档_第2页
模式识别车牌识别文档_第3页
模式识别车牌识别文档_第4页
模式识别车牌识别文档_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实际环境下汽车牌照识别办法的研究与实现1设计规定与准备本次设计是硕士一年级上学期的模式识别课程的课程设计,设计内容是实际环境下汽车牌照识别办法的研究与实现。设计有两个重要规定:完毕对实际环境下的汽车牌照部分图像的抽取;对抽取出来的牌照通过有关解决之后,对其上的字符内容进行识别。基于课程设计的规定,需要进行实际环境下的汽车牌照识别,由于条件限制,不能用类似于学校门口的牌照硬件获取实际环境下的汽车照片,因此自行采集了某些汽车照片,用它们作为设计时的调试材料。概述2.1汽车牌照识别现状车牌识别技术在实际生产生活中十分常见。在学校或者单位的门口,在停车场门口,经常能够看到摄像头,汽车驶来,系统会自动拍摄汽车的照片,然后将照片中属于汽车牌照的部分提取出来,然后通过对应的解决手段,识别出车牌,然后送到后台解决系统,或与后台数据库进行比对,以查看该车与否属于正当进入,或者统计下该车的入场时间,等离场时进行计费统计等工作。另外,在交通中车牌识别的应用也有非常重要的意义,例如电子警察,对于违规车辆自动识别统计,或者在罪犯抓捕时,通过车牌识别锁定有关车辆,然后调集警力等。通过平时在学校门口或者超市停车场的观察,发现现在的车牌识别系统已经达成了非常成熟的程度,几乎能够在无人值守的状况下保持正常、精确的运转。其中牵扯到一系列的硬件、软件的配合,据观察,有些系统是有后台计算机,整个汽车门禁系统相称于一种终端,连接到后台计算机上,但是大多数应当都是基于单片机的系统,也就是在系统中有单片机,运行着车牌识别程序。国内外有诸多研究和工作致力于解决车牌是别中的多个问题,例如车牌区域的选定,例如车牌字符的切割,例如车牌字符的匹配,都有诸多有关的工作。2.2汽车牌照识别用到的技术与准备 在本次设计中,整个程序都是用Matlab完毕,由于之前对Matlab不是很熟悉,因此再设计前学习了Matlab的有关内容。 车牌识别能够使用诸多Matlab提供的函数,从而大大减轻对于图像解决等操作所耗费的时间和精力。 在本次设计的条件下,很大一部分工作都是对自行拍摄的照片进行解决,因此用到了诸多图形图像解决的技术,由于以前图像方面的基础局限性,因此也理解了某些图形图像学方面的知识。 除了图像图像学方面的技术,另一种重要的技术就是字符切割与识别技术。这其中需要用到模式识别课程上的分类思想和知识。我们参考了有关文献,即使没有将某些比较好的想法全部实现,但是开阔了思路,在后来的工作和学习中碰到有关问题的时候,对问题的解决有一定的协助。3基本原理与设计思路汽车牌照识别重要能够分为4个环节:首先是汽车图像获取,然后是汽车牌照区域的拟定,然后是对车牌区域的解决与字符分割,最后是对分割出来的字符进行识别。大致流程图如图1所示。开始开始输入图像输入图像寻找车牌寻找车牌区域学习调节重新学习调节重新寻找区域区域拟定与否合理否是字符切割字符切割学习调节重新切割学习调节重新切割切割与否合理切割与否合理否识别是识别结束结束图1汽车牌照识别的流程概要从图1中能够看出,在本次实验规定下,系统的核心构成部分有:(1)汽车牌照区域的拟定;(2)汽车牌照字符的切割;(3)切割后字符的识别这三部分。下面是我们对每一重要构成部分的理解。首先是汽车牌照区域的拟定。我们自行拍摄的照片如图2所示。图2自行拍摄的用于实验设计的照片从这个图片上,很容易想到车牌区域的拟定能够按照颜色进行。因此一开始我们想到的办法是,获取一张图片之后,从上往下进行扫描,当某一行的蓝色像素点的个数不不大于某个阈值之后,那么这部分就可能是车牌区域。扫描过程中,找出蓝色像素数量最大的一行,然后从这一行分别向上、向下扫描,不管向上还是向下扫描,如果蓝色像素的数量不大于某一阈值就停止扫描,这就分别拟定了车牌区域的上下边界。然后用同样的办法左右扫描,这样就能够找到左右边界,左右边界拟定后来,就能够圈定车牌所属的区域了。但是这种办法对于光照条件较好、没有发生偏色,并且少有蓝色背景干扰的状况下比较有效,如果有蓝色干扰背景,或者车牌区域有偏色的状况下,就不是很抱负。例如,对于老师给的如图3所示的照片,这种简朴的统计像素点就没有效果。图3老师提供的汽车图片因此,我们继续观察图片,在颜色统计的办法上提出了两种改善方式:第一种方式是统计蓝色像素点之后,再统计同一行(列)上的白色像素点个数,如果这一行(列)上的白色像素点也达成一种阈值,那么阐明这个区域可能是车牌区域。第二种方式是,发现照片中汽车会有周边的环境有将强的差别,而蓝色的干扰区域普通是出现在图片的上、左、右三个方位,因此在扫描的时候,能够不从照片最上面和最左边开始扫描,而是选定某一种地方,这个地方的背景干扰不多,并且不至于把汽车的牌照截出去。我们认为这里其实能够用某些边沿提取或者是物体形态学的有关办法来实现,但是最后没有实现好。另首先是汽车牌照字符的切割。在设计早期,我们先手动截取了车牌区域的图片进行分析。如图4所示。图4汽车牌照的区域我们分析了这张图片的特点,发现汽车牌照区域的图片构造相对简朴,颜色构成不复杂,因此能够按照图5所示的环节进行操作。倾斜矫正灰度化倾斜矫正灰度化二值化字符切割二值化字符切割图5汽车牌照字符分割的重要环节灰度化运用matlab提供的函数rgb2gray(图片)即可,灰度化之后,图像就变成了一种二维矩阵,这样信息量大大减少,不必要的信息变少,留下的都是车牌识别中需要关心的重要信息。像图4中所示的图片,灰度化之后也很难进行解决,因此需要进行倾斜校正。倾斜校正的时候运用matlab提供的radon(图片,range);进行,先求一种倾斜角,然后按照倾斜角进行旋转。然后为了进一步压缩图像的不必要信息,需要对车牌照片进行二值化,也就是将照片中灰度级不不大于某个阈值的的全部点都置成255,不大于某个阈值的全部点都置成1,这样,图片中就只有两种点:纯白和纯黑,这样就能够抓住重要特性进行分析了。但是在进行二值化解决的时候,碰到了一种问题,就是老师给的照片提出出车牌区域之后,二值化的成果是全黑的。由于我们当时设立的阈值是125,而老师提供的照片光照强度比较暗,因此就造成车牌字符所在的区域的像素值也较低,因此将这一部分也变成了黑色。这个问题能够通过matlab提供的函数level=graythresh(tempLicence);tempLicence=im2bw(tempLicence,level);进行解决,第一种函数graythresh的含义是,matlab会通过对图片进行分析,找一种适宜的阈值,这个阈值能将图片灰度值相对较高和相对较低的点分辨开来,避免了全黑或者全白的状况。得到了如图6所示的二值化图片之后,我们对其进行了分析。图6通过解决后的车牌图像拿到这幅图像之后的下一种要解决的问题就是将其分割成七个小部分,每个小部分对应的是一种中文、字母或者数字。在这样做之前,首先要对图片进行分析,发现图片的中央区域是有用的信息,而周边的点都是干扰,应当将它们截取掉。我们将这个图片向Y方向和X方向进行投影,得到了图7、图8所示的两幅图像。图7二值图Y轴方向的投影通过对图7进行分析,我们发现,图片上、下两部分的干扰与车牌之间在投影之后有很大的差别,很明显,它们之间有着明显的断层。我们能够运用它们之间的断层,对车牌的上下干扰部分进行裁剪。我们采用的办法是:首先找到图像的中央,然后从中央向两端分别扫描,每一种方向如果碰到第一种值不大于阈值,并且下一种值也不大于阈值的时候,就认定找到了字符与边框干扰的边界,记下这个值,进行切割就能够去除上下边框。a)切除上下边框之前的投影b)切除上下边框之后的投影图9二值图向X轴方向的投影然后对图9进行分析,我们发现向X轴方向的投影特性不如Y轴那么明显,干扰部分也出现了与车牌区域很相似的波峰,并且字符与字符之间也存在着间隔,因此不能像切除上下边框那样切除左右边框。后来我们想,索性不切除左右边框,反正只要我能把字符切割出来就行,左右边框能够丢弃,只要不切到它们,它们就不会像上下边框那样对识别造成影响。我们发现,车牌的圆点是一种可运用的特性。它出现在第三或者第四个位置,并且它的值明显不大于左右两个字符的值,因此只要找到圆点的位置,就能够以它为参考,向前、向后分别找到其它的字符了。拟定圆点的环节以下页图10所示。在图10中,我们的思路是先将二值图片向X轴方向的投影从左之右进行遍历,找出其中全部的值不大于阈值的点(我们手动设为1,即如果这个方向上投影的黑点个数为零,那么就鉴定这个地方出现了中断),这个点就是出现了字符中断的区域。在遍历的时候,为了避免把某些中文间的中断切掉,我们改善了办法,只有这个点的值不大于阈值,并且它前面或者背面一种点的值不不大于阈值,才能够鉴定它是一种中断坐标。把这些区域的坐标标注出来之后,将这些坐标两两构成一对,每一对对应的就是一种有字符的区域。然后就对这些区域的宽度相加求和,求出来之后,从前往后找到第一种宽度不不大于平均值的点,那么这个地方要么是边框干扰,要么是中文,就从这个区域往后继续遍历,找到的第一种宽度不大于平均值的区域,这个区域必然是圆点区域。找出圆点区域之后,往前两个区域就是中文区域,往前一种就是第一种字母,然后对应地背面的字母或者数字也就能拟定出来了。这样做能够解决大多数通过精拟定位之后的车牌切割问题,但是抗干扰性不高。由于有些车牌本身不干净,在车牌上也分布着某些干扰因素,这样就无法正常提取了。做完车牌切割这一重要工作之后,就能够生成七个小图片,每个图片保存一种字符,将它们存储到本地文献夹下,分别命名为1.jpg至7.jpg。在保存的时候,需要预先将它们的尺寸按照模板的比例进行调节,本设计用的是网上找的模板,这些模板的尺寸是14*22,因此在存储的时候,调用matlab的imresize(char2,[22,14])办法保存切割后的图像。扫描结束?扫描结束?是从左向右扫描图像从左向右扫描图像该点与否是临界点该点与否是临界点否是将该点将该点加入临界点列表结束?是结束?否是将临界点将临界点构成可能是字符的区域查看下一种区域的宽度查看下一种区域的宽度与否不不大于与否不不大于平均值否是从这个从这个地方继续往后找与否不大于与否不大于平均值否是该区域就是圆点该区域就是圆点区域图10找出圆点区域的过程流程图最后是进行匹配识别通过我们的观察,我们发现裁剪生成后来的字符的图像如图11所示。图11裁剪后的字符图像我们感觉这些图像比较规整,在与模板匹配的时候能够采用距离算法。首先我们从最简朴的求差开始。首先读入待识别的字符对应的图片,然后将这个图片与全部的模板做差(为了尽量减少计算量,能够对不同的位置采用不同的办法,例如第一位一定是中文,因此就不与除中文意外的其它字符进行比较)。做差后得到一种矩阵,对这个矩阵进行统计,首先定义一种变量,用于存储模板与待识别字之间的距离,对这个矩阵中的值进行统计,但凡非0的点,涉及1或者-1,都将总的距离加一。最后,对于这个待识别的字,找出与它的距离最小的模板的编号,根据这个编号得到对应的字符。也能够采用欧式距离,过程与上面类似,但是算的是每个模板到这个待识别的字符的欧式距离,然后进行比较。这种直接求距离的方式,优点是简朴,因此我们在此选择基于距离的模板匹配进行识别。但是这种方式的劣势也是很明显的,那就是抗干扰性太差,如果字体有倾斜,或者提取后的笔迹不清晰,那么很容易识别出错。至此我们的时间不够改善成别的方式,临时采用这种方式,但是我们调查了其它的方式,以及别人解决前面几个环节时做的较好的工作,在第六部分,分析与总结中进行统计与总结,方便扩展思维和后来进行改善。总体上说,通过上述几个环节,就能够对于给出的实景汽车照片进行识别了。4实现4.1顾客界面设计开始时,我们对Matlab的理解极少,因此就将每个部分单独实现,没有统一的界面。直到近来,我们理解了一下matlab界面设计,用figure命令打开一种控制面板,就能够像java的NetBeans或者VC++那样通过拖控件设计界面了。因此,我们设计了程序的界面,如图12所示。界面中包含了课程设计所规定的一切环节的显示界面与互动操作接口,能够很方便地实现动态交互。界面各部分的功效在界面上都有标注,在此就不具体描述。图12汽车牌照识别程序界面4.2车牌区域定位该部分采用的是根据颜色定位的办法。该部分功效的实现在mainFrame中的functionpushbutton2_Callback(hObject,eventdata,handles)函数下实现。首先定义四个变量,分别为Yup、Ydown、Xleft、Xright,分别用于存储车牌区域的四个边界。在获得图片之后,首先从上向下扫描图片,扫描图片的时候,蓝色像素点的判断为:if((blueWhiteImage(i,j,1)<=55)&&((blueWhiteImage(i,j,2)<=100)&&(blueWhiteImage(i,j,2)>=46))&&((blueWhiteImage(i,j,3)<=210)&&(blueWhiteImage(i,j,3)>=75)))这几个数值在实际开发中我们进行了不停的调节,这种方式的弊端也愈发明显:对于不同的照片,判断某像素与否是蓝色像素的时候,需要调节这些点。这样就非常费时,并且通用性不强。因此基于颜色的车牌识别是不太完善的办法。并且如果车牌的颜色原来就不是蓝色的,那么就难以识别。即使向前面所述的,又加上白色像素点的统计,也仍然不能解决这个问题。我们理解了其它的方式,在背面统计下来,以供后来使用。总之,在这次设计中,我们临时采用基于颜色的定位方式。最后,如果照片光照、色彩比较正常,那么会按照规定在照片中将车牌区域用红色框框起来,并且将图片切割下来,寄存在界面的左下方的子框中,如图13所示。图13圈定车牌区域4.3车牌字符分割实现以及字符识别车牌字符分割的方法在上一部分已经具体讲述,这一部分就不再赘述。在最后程序的呈现中,这一部分是与车牌识别和在一起的,字符分割和车牌识别都在点击识别车牌按钮之后进行,对应的代码也写在了一起。其实这种编码习惯非常不好,我之前经惯用Java写程序,编码最忌讳的就是太多的功效集中在一起。在后续改善中,能够将每个小环节分成一种函数,便于修改、扩展和维护。在识别的时候,将剪切好的字符的图片读入,然后二值化之后与每个模板进行对比,先识别中文,在模板库中中文是第46号到第66号,因此第一位只要与这些模板进行对比就能够,之后将背面的与第0号到第35号进行比对。由于比对的成果是通过switch将字符存在一种数组中,因此最后用set(handles.edit6,'string',matchResult(2))(matchResult(2)是寄存待显示识别成果字符的数组元素)显示字母的时候,会将字母对应的ASIC码显示出来,因此在显示之前加一种判断,如果其值<10则直接显示,否则用char(matchResult(2))将其转化成字符后显示即可。总之,点击识别车牌按钮之后,会将上述全部的解决进行完毕之后,应当能够得到最后的成果。识别的效果如图14所示。a)对的识别自己拍摄的照片b)对的识别老师提供的照片图14最后识别完毕后的成果显示5测试 我们用自己拍的照片和老师拍提供的照片分别进行了测试,在编码过程中,重要是用自己拍的照片进行的测试(这些照片在作业文献夹中一并提交)。通过测试,自己拍摄的照片,基本能识别,但是对于老师给的照片,大概三分之一能定位,识别率较低。并且对于晚上拍的照片,基本不能识别。用老师给的照片的识别状况为:白天:大概35张能够对的圈定车牌,但是诸多不能把字符全部对的的识别出来,例如粤识别成苏、兰等,B识别成8等。夜晚的临时不能识别。6分析总结这次课程设计,总体来说实现效果不抱负,因素是在设计中并没有采用优秀的算法,而是采用了比较简朴的办法。但是这次设计总体上增加了我们对于模式识别课程的认识,通过解决一种实际的问题,让我们熟悉了有关的思想,某些算法即使没在设计中实现,但是却让我们对其理解,或许在后来的工作或学习中能够用上。下面就设计中碰到的问题进行分析总结。首先是车牌定位的问题。我们采用的基于颜色的像素点统计定位法鲁棒性很差,容易受到环境影响。然后是车牌分割的问题。在车牌分割的时候,除了上面介绍的问题,有时会出现如图15所示的状况。在切除上下边框的时候,将下半部分也切掉了,分析其因素,通过向左的投影直方图能够发现,这时候粤字下半部分对应的几行的投影为零。图片字符下面部分的笔画明明连接着,但是不懂得为什么会投影为零。为了 a)裁剪边框把文字也裁掉b)此时对应的Y轴投影的直方图图15去除边框的时候碰到的问题通过分析,我们找边框的时候,是从中间向两边扫面,碰到不大于阈值的点,就认为它是字符与非字符噪音的分界点。但是在图15b)中,在60到70之间的空间显然涉及了车牌下半部分的文字部分,而真正的分解点应当是80稍微往前一点的地值区域。现在我们想通过多次扫描,即先从后扫描,再从后向前扫描,再从中间扫描,如果三次扫描得到的两个边界点分别做差,如果它们的差值在一定范畴内,就取它们的平均值,如果差值不不大于某个值,就采用其它手段,但是现在还在讨论中。至于字符的匹配问题,前面已经讲述过。对于如图16所示的夜晚的照片,我们的程序不能识别。图16夜晚的照片很显然,夜晚的时候,多个色彩很难分辨,用基于颜色的识别方式很难进行识别。通过观察,我们认为车灯是一种很重要的噪声影响。因此,我们计划首先将车灯部分去除掉,去除的办法一开始是将车牌灰度化,然后将亮度超出一种阈值的部分变成灰度为125的点,这样就得到了图17所示的成果。这时候,车灯的明显干扰就已经不存在了,下一步能够运用基于边沿的提取办法将车牌提取出来,然后就能够按照后续的办法进行分割、识别了。我们没有采用基于边沿的提取办法,因此这个也就没有继续做下去。下面统计某些我们理解的其它的解决办法,以供后来学习使用。图17将车灯屏蔽掉之后的效果基于边沿检测的车牌提取:这种办法首先是进行灰度变换,它们认为彩色照片包含大量颜色信息,属于无用信息,因此首先进行灰度转换。灰度转换之后,进行边沿提取,边沿是图像的重要特性,图像理解和分析的第一步往往就是边沿检测。现在,边沿检测已成为计算机视觉研究领域最活跃的课题之一,在工程应用中占有十分重要的地位。车牌的一种重要特性就是在该区域存在大量的边沿信息,因此边沿检测对于我们进行车牌识别来说也是相称重要。边沿是以图像的局部特性不持续的形式出现的,也就是指图像局部亮度变化最明显的部分,如灰度值的突变、颜色的突变、纹理构造的突变等,同时边沿也是不同区域的分界处。图像边沿有方向和幅度两个特性,普通沿边沿的走向灰度变化平缓,垂直于边沿走向灰度变化激烈。由于边沿是图像上灰度变化最激烈的地方,传统的边沿检测就运用这个特点,通过计算图像中像素的梯度值来拟定边沿点。惯用的图像边沿提取算子有Roberts算子、sobel算子、Prewitt算子、Laplac

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论