首页 基于Matlab的车牌识别系统设计论文

基于Matlab的车牌识别系统设计论文

举报
开通vip

基于Matlab的车牌识别系统设计论文基于Matlab的车牌识别系统设计论文 目录 1 绪论 ................................................. 1 1.1 车牌号识别研究背景 .............................................. 1 1.2 车牌号识别技术研究现状和趋势 .................................... 2 1.3 车牌识别研究内容 ............................................

基于Matlab的车牌识别系统设计论文
基于Matlab的车牌识别系统设计论文 目录 1 绪论 ................................................. 1 1.1 车牌号识别研究背景 .............................................. 1 1.2 车牌号识别技术研究现状和趋势 .................................... 2 1.3 车牌识别研究 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 ................................................ 4 2 车牌识别系统设计原理概述 ............................. 6 3 车牌识别系统程序设计 ................................. 8 3.1 开发环境选择 .................................................... 8 3.2 图像读取及车牌区域提取 .......................................... 8 3.3 字符切割 ....................................................... 15 3.4 字符识别 ....................................................... 19 4 仿真结果及分析 ...................................... 22 4.1 车牌定位及图像读取及其图像处理 ................................. 22 4.2 车牌字符分割及其图像处理 ....................................... 22 车牌字符识别及其图像处理 ....................................... 23 4.3 5 结论 ................................................ 24 参考文献 ............................................... 25 致谢 ................................................... 26 附录:程序清单 ......................................... 27 1 绪论 1.1 车牌号识别研究背景 随着我国公路交通事业的发展,车辆的数量正在迅速增长,在给出行提供方便的同时,车辆管理上存在的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 日益突出,人工管理的方式已经不能满足实际的需要。微电子、通信和计算机技术在交通领域的应用极大地提高了交通管理效率。作为信息来源的自动检测、图像识别技术越来越受到人们的重视。近年来计算机的飞速发展和数字图像技术的日趋成熟,为传统的交通管理带来巨大转变,先进的计算机处理技术,不但可以将人力从繁琐的人工观察、监测中解放出来,而且能够大大提高其精确度, 汽车牌照等相关信息汽车牌照自动识别系统就是在这样的背景与目的下进行开发的。 的自动采集和管理对于交通车辆管理、园区车辆管理、停车场管理、交警稽查等方面有着十分重要的意义,成为信息处理技术的一项重要研究课题。 关于车牌识别技术及定位系统研究,在我国已经有了十几年的发展历程,目前系统的应用还处于起步阶段,大规模投入使用的成熟系统还没有出现,汽车牌照识别系统作为改进交通管理的有效工具,技术水平仍需完善。国内外学者对此已经有了较多工作,但实际效果并不理想,尤其是对车牌自适应性强、速度快、准确率高的高速车牌定位方法还有待进一步研究。另外,对辅助光源要求高,也很难有效解决复杂背景下多车牌移动识别的技术难题,如:车牌图像的倾斜、车牌表面污秽或磨损、光线干扰等都会影响定位的准确性。传统车牌识别一般仅支持单一车辆,背景比较简单。而当今许多实际应用场合,如在繁忙交通路口临时对欠税费、报废、挂失等车辆的稽查,则监视区域比较复杂,现有识别方法无法直接应用;而且多数情况下,同时出现多辆汽车,背景有广告牌、树木、建筑物、斑马线以及各种背景文字等,现有的识别方法也不能很好的适应多变的环境,所以对车牌识别技术的研究依然是目前高科技领域的热门课题之一。车牌识别系统的成功设计、开发和应用具有相当大的社会效益、经济效益和学术意义。 车牌识别的难点: 1)由于车牌图像多在室外采集,会受到光照条件、天气条件的影响,会出现图像模糊,对比度低,目标区域过小,色彩失真等影响,并且会伴随复杂的背景图像,这些都会影响车牌定位及识别。 1 2)每次采集时目标所处位置不会一样,采集视角会有很大变化,并且由于车牌挂的不正,都将导致车牌出现扭曲。 3)牌照多样性。其他国家的汽车牌照格式,如尺寸大小,牌照上字符的排列等,通常只有一种。而我国则根据不同车型、用途,规定了多种牌照格式,例如分为军车、警车、普通车等。我国标准车牌照是由汉字、英文字母和阿拉伯数字组成的,汉字的识别与字母和数字的识别有很大的不同,增加了识别的难度。 4)我国汽车牌照的底色和字符颜色多样,蓝底白字、黄底黑字、黑底白字、红底黑字、绿底白字等多种。 5)由于环境、道路或人为因素造成汽车牌照污染严重,这种情况下国外发达国家不允许上路,而在我国仍可上路行驶。使得车牌的对比度降低,特征不是很明显,即使在定位准确的情况下,字符的识别也会受到很大影响。 目前在国内存在多种牌照格式,且存在以上种种困难和特殊性,加大了我国车牌自动识别的难度,使得中国车辆牌照识别远远难于国外的车辆牌照识别。因而如何提高识别率和识别处理的实时性及实用性成了一个紧要的任务。 1.2 车牌号识别技术研究现状和趋势 1.2.1国内外车牌识别技术情况及我国车牌特点 目前,一些发达国家车牌识剐系统在实际交通系统中已经成功应用,而我国的开发应用进展缓慢,基本停留在实验室阶段。这是因为我国的实际情况与国外有所区别。国外车牌比较规范统一,而我国车牌规范不够,较为多样化。不同汽车类型有不同的规格、大小和颜色,所以车牌的颜色多,且字符位数不统一,对处理造成了一定的困难。虽然很多研究人员已对车牌识别进行了较为深入的研究,但目前在车牌定位和字符分割这两个关键环节还存在着有待解决的难题。一是当车牌图像的对比度较小、光照不均匀、车牌磨损褪色以及有类似车牌纹理特征的干扰时,有效定位率下降;其次在车牌字符分割时,光照不均、对比度较小、倾斜、污迹、字符粘连和断裂等严重退化的车牌图像的字符分割效果也不理想。而对于车牌字符的识别来说,其识别的准确率很大程度上依赖于车牌定位和字符分割是否成功。车牌字符的识别作为最终对车牌图像的理解,可以借鉴光学字符识别的宝贵经验,相对于车牌定位和字符分割来说反而比较容易实现。 2 国内外有大量关于车牌识别方面的研究报道。国外在这方面的研究工作开展较早。在上世纪70 年代,英国就在实验室中完成了“实时车牌检测系统”的广域检测和开发。同时代,诞生了面向被盗车辆的第一个实时自动车牌监测系统。发展到今日,国外对车牌检测的研究已经取得了一些令人瞩目的成就,识别率都在80%以上,甚至 0%。并且已经实现了产品化,并在实际的交通系统中得到了广泛的应用。 有高于9 由于中国车牌的格式与国外有较大差异,所以国外关于识别率的报道只具有参考价值,其在中国的应用效果可能没有在其国内的应用效果好,但其识别系统中采用的很多算法具有很好的借鉴意义。从车牌识别系统进入中国以来,国内有大量的学者在从事这方面的研究,提出了很多新颖快速的算法。中国科学院自动化所的刘智勇等开发的系统在一个样本量为3180 的样本集中,车牌定位准确率为99.42%,切分准确率为94.52%,这套系统后来应用于汉王公司的车牌识别系统,取得了不错的效果。但是包括其他研究人员提出的算法,都存在计算量和存储量大的问题,难以满足实时性的要求。此外,当车辆区域的颜色和附近颜色相近时,定位失误率会增加。国内还有许多学者一直在进行这方面的研究,并且取得了大量的研究成果。 目前我国有普通地方车牌号、武警车牌号、军队车牌号三种类型,普通地方车牌 520122.5,MM号又叫自选号牌车牌(如图1所示),自选号牌车牌尺寸是,即车牌长宽比为4.5:1,一共7个字符,每个字符的高宽比为2:1。首个字符为中文字符,为各个省或直辖市的简称,第二个字符为英文大写字符,前两个字符确定该车牌所在地,后五个字符由阿拉伯数字及英文大写字符组合而成,并且后五个字符间距相同,七个字符大小也相同。 图 1.1 我国车牌号示例 3 1.2.2车牌识别技术的应用前景 车辆牌照自动识别技术是智能交通系统的一个重要组成部分,广泛应用于交通的监控及管理。车辆牌照识别系统技术能够从一幅车辆图像中准确定位出车牌区域,然后经过字符切割和识别实现车辆牌照的自动识别。目前车牌识别系统主要应用于以下领域: 1)停车场管理系统。利用车牌识别技术对出入车辆的号牌进行识别和匹配,与停车卡结合实现自动计时、计费的车辆收费管理系统。 2)公路自动管理系统。以车牌自动识别技术为基础,与通信等其他高科技结合,对高速公路交通流状况进行自动监测、自动布控,从而降低交通事故的发生率,确保交通顺畅。 3)安防布控。采用车牌识别技术实现对车辆的自动识别,快速报警,既可以有效查找被盗车辆,同时又为公安机关提供了对犯罪嫌疑人的交通工具进行远程跟踪与监查的技术手段。 4)城市十字交通路口的“电子警察”。可以对违章车辆进行责任追究,也可以辅助进行交通流量统计,交通监测和疏导。 5)小区、校园车辆管理系统。社区保安系统将出入的车辆通过车牌识别技术进行记录,将结果与内部车辆列表对比可以实现防盗监管。 1.3 车牌识别研究内容 车牌系统是计算机视觉和模式识别技术在智能交通领域的重要应用课题之一。车牌识别系统是一特定目标位对象的专用计算机系统,该系统能从一幅图像中自动提取车牌图像、自动分割自符,进而对分割自符的图像进行图像识别。系统一般由硬件和软件构成。硬件设备一般由车体感应设备、辅助光源、摄像机、图像采集卡和计算机。软件部分是系统的核心,主要实现车牌自符的识别功能。 车牌识别学科主要有模式识别、人工智能、图像处理、计算机视觉和信号处理等。这些领域的许多技术都可以应用到车牌识别系统中,车牌识别技术的研究也必然推动这些相关学科的发展。车牌识别的关键技术有:车牌定位、字符切割和字符识别等。 车牌定位是要完成从图像中确定车牌位置并提取车牌区域图像,目前常用的方法有:基于直线检测的方法、机遇与域值化的方法、基于灰度边缘检测方法、基于彩色 4 图像的车牌分割方法、神经网络法和基于矢量量化的牌照的定位的方法等。 字符切割时完成车牌区域图像的切分处理从而得到所需要的单个字符图象。目前常用的方法有:基于投影的方法和基于连通字符的提取等方法。 字符识别是利用字符识别的原理识别提取出的字符图像,目前常用的方法有:基于模板匹配的方法、基于特征的方法和神经网络法等。 5 2 车牌识别系统设计原理概述 一个完整的车牌号识别系统要完成从图像采集到字符识别输出,过程相当复杂,基本可以分成硬件部分跟软件部分,硬件部分包括系统触发、图像采集,软件部分包括图像预处理、车牌位置提取、字符分割、字符识别四大部分,一个车牌识别系统的基本结构如图2.1所示: 原始 图像车牌 字符 字符 输出 预处 位置 图像 分割 识别 结果 理 提取 图 2.1 车牌识别系统基本结构框图 一:原始图像:由停车场固定彩色摄像机、数码相机或其他扫描装置拍摄到的图像。 二:图像预处理:对动态采集到的图像进行滤波,边界增强等处理以克服图像处理。 三:车牌位置提取:通过运算得到图像的边缘,再计算边缘图像的投影面积,寻找谷峰点以大概确定车牌的位置,再计算连通域的宽高比,剔除不在阈值范围内的连通域,最后便得到了车牌区域。 四:字符分割:利用投影检测的字符定位分割方法得到单个的字符。 五:字符识别:利用模板匹配的方法与数据库中的字符进行匹配从而确认出字符。 六:输出结果:得到最后的汽车牌照,包括汉字、字母和数字。 车牌号图像识别要进行牌照号码、颜色识别 。为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来; c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。 牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与牌照识别互相配合、互相验证。 6 (1)牌照定位: 自然环境下,由于汽车图像背景复杂、光照不均匀等原因,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。一般采用的 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 是首先对采集到的视频图像进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为牌照区域,并将其从图象中分割出来。通过以上步骤,牌照一般能够被定位。 (2)牌照字符分割 : 在完成牌照区域的定位后,还需要将牌照区域分割成单个字符,然后进行字符识别,最后输出结果。字符分割一般采用垂直投影法。垂直投影法的原理是由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 写格式、字符、尺寸限制和一些其他条件。所以利用垂直投影法对复杂环境下的汽车图像的字符分割有较好的效果。 (3)牌照字符识别: 字符识别方法目前主要得算法有两种即基于模板匹配算法和基于人工神经网络算法。基于模板匹配算法首先将分割后的字符二值化,并将其尺寸大小缩放为字符数据库中模板的大小,然后与所有的模板进行匹配,最后选最佳匹配作为结果。基于人工神经元网络的算法有两种: 一种是先对待识别字符进行特征提取,然后用所获得特征来训练神经网络分配器;另一种方法是直接把待处理图像输入网络,由网络自动实现特征提取直至识别出结果。实际应用中,牌照识别系统的识别率与牌照质量和拍摄质量密切相关。牌照质量会受到各种因素的影响,如生锈、污损、油漆剥落、字体褪色、牌照被遮挡、牌照倾斜、高亮反光、多牌照、假牌照等等;实际拍摄过程也会受到环境亮度、拍摄亮度、车辆速度等等因素的影响。这些影响因素不同程度上降低了牌照识别的识别率,也正是牌照识别系统的困难和挑战所在。为了提高识别率,除了不断的完善识别算法,还应该想办法克服各种光照条件,使采集到的图像最利于识别。 7 3 车牌识别系统程序设计 3.1 开发环境选择 车牌号识别系统的软件部分大都采用VC++,VB或者Matlab,本课题选用Matlab,主要是因为Matlab具有以下优点 1) Matlab绘图功能很强大,但在VC++,VB语言里绘图都很不容易,但Matlab里数据的可视化程度非常高,并且具有较强的编辑图形界面的能力。 2) Matlab语言简单,入门容易,程序设计不严格,自由度大,例如用户无需对矩阵预定义即可使用。 3)Matlab语言简洁紧凑,使用方便灵活,库函数丰富,并且内部集成了很多工具箱,为程序开发提供现成模块。 4)Matlab的可移植性很好,基本上不做修改就可以在在各种型号的计算机和操作系统上运行。 3.2 图像读取及车牌区域提取 图像读取及车牌区域提取主要有:图像灰度图转化、图像边缘检测、灰度图腐蚀、图像的平滑处理以及车牌区域的边界值计算。其程序流程图如下: 输入车牌图象 灰度校正 平滑处理 提取边缘 图 3.1 预处理及边缘提取框图 目前比较常用的图像格式有*.BMP、*.JPG、*.GIF、*.PCX、*.TIFF 等,本课题采集到的图片是*.JPG 的格式。因为使用*.JPG图像时有一个软件开发联合会组织制 8 定、有损压缩格式,能够将图像压缩在很小的储存空间,而且广泛支持 Internet 标准,是面前使用最广的图片保存和传输格式,大多数摄像设备都以*.JPG格式保存。利用图像工具箱的 Car_Image_RGB=imread(‘Image_Name’); 即可将图像读取出来,这样读取得到的是RGB图像,RGB图像分别用红、绿、蓝三个色度值为一组代表每个像素的颜色,因此Car_Image_RGB是一个错误~未找到引用源。mn,,3的数组,m、n表示图像像素的行、列数。 3.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可由下面的公式计算: HRGB,,,0.2290.5870.114 (3.1) BGR,,H, (3.2) 3 (3.1)式使用了权值加重法,(3.2)式使用均值法,使用权值法的好处是可以突出某个通道,Matlab内的RGB转灰度图函数rgb2gray()就是使用的(3.1)式权值比例公式,这样就可以利用边缘检测方法,识别出临近区域灰度值相差大的分界区。通过程序运行其效果图见图3.2和图3.3: 9 图 3.2 原始图像 图 3.3灰度图像 由原图和灰度图运行结果可知,能清晰地读出原彩色图样,通过图形的对比分析,原始图中车牌区域的灰度明显不同于其他区域,蓝底部分最为明显。经过程序运行出来的灰度图可以比较容易的识别出车牌的区域,达到了预期的灰度效果。 3.2.2图像的边缘检测 在Matlab中利用函数edge()实现边缘检测,具体的用法如下所示: Car_Image_Bin=edge(Car_Image_Gray,'robert',0.15,'both'); 在edge()函数中有Sobel算子,Prewitt算子,Roberts算子,Log算子,Canny算子及Robert算子,几种算法相比之下,Roberts算子是一种最简单的算子,是一种利用局部差分算子寻找边缘的算子,他采用对角线方向相邻两象素之差近似梯度幅值 10 检测边缘。检测垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感,无法抑制噪声的影响。 因此本课题使用了Robert算子。 由于Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子, 根据任一相互垂直方向上的差分都可用来估计梯度,Robert 算子采用对角方向相邻两像素之差,其计算公式如下: ,,,,,xffxyfxy,1,1,,,, (3.3) ,,,,,yffxyfxy1,,1,,,, (3.4) 22Gxyxfyf,,,,,,,其幅值为: 错误~未找到引用源。 (3.5) ,11,11,,xy,,,xy,,,,,,,222245:135:,,,,Robert梯度以为中心,所以他度量了点处和错误~未找到 GxyT,,,引用源。方向(相互正交)的灰度变化。适当取门限T,做如下判断:,(x,y) 0110,,,, ,,,,1001,,,,为阶跃状边缘点。Roberts边缘检测算子相当于用和错误~未找到引用源。对图像进行卷积。both表示双向0.15为敏感度值检测算法。使用边缘检测,腐蚀效果如图3.4所示: 图 3.4 边缘效果图 从边缘效果图可以看出,经过处理以后车牌的轮廓已经非常明显了,车牌区域及汽车标志的边缘呈现白色条纹,基本上达到了边缘检测的效果。但是,在车牌附近的其他区域也由于各种干扰的影响,也存在一些白色区域。所以要对图像做进一步的处理,用灰度图腐蚀来消除多余的边界点。 11 3.2.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的点决定结构元素的领域像素在进行腐蚀操作时是否需要参加运算。结构元素太大,会造成腐蚀过度,造成信息丢失,太小起不了预期的效果,这 Se,1;1;131,里使用矩阵的线性结构元素,即。腐蚀后如图: ,, 图 3.5 腐蚀效果图 从腐蚀的结果分析,腐蚀的目的是消除小而无意义的物体,对比边缘效果检测图与腐蚀效果图可以看出,在边缘检测图中还有的小的无意义的图像已经被完全消除了,留下来的仅仅是车牌区域以及车的标志。已经得到了车牌图像的轮廓线了,只要再经过适当的处理即可把车牌提出出来。 3.2.4图像平滑处理 得到车牌区域的图像轮廓线后,由于图像的数字化误差和噪声直接影响了脚点的提取,因此在脚点提取之前必须对图像进行平滑处理,Matlab有一个图像平滑处理 12 函数imclose(),它与开运算相反,融合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。 Car_Image_Perform=imclose(Car_Image_Erode,Se); 结构单元中Se一个小于对象闭合图形,只要两个封闭域的距离小于Se,就将这两 生成方式采用 个连接成一个连通域,Se Se=strel('rectangle',[25,25]); 2525,即Se是一个一个的矩形,使用矩形是因为车牌是一个矩形,这样,可以是提取的图像最接近预期效果。由于车牌图像经过腐蚀以后只剩下车牌区域以及车的标志。在程序运行的图像平滑后效果如下: 图 3.6 平滑处理后效果 从平滑后的效果图分析,达到了预定的目标。消除了图像的数字化误差和噪声对脚点的直接提取的影响。 3.2.5移除小对象 图像平滑处理了,可能会有多个闭合区域,对于不是车牌区域的必须予以删除,Matlab提供了一个函数bwareaopen(),用于删除二值图像中面积小于一个定值的对象,默认情况下使用8邻域, Car_Image_Perform2=bwareaopen(Car_Image_Perform,2000); 这样,Car_Image_Perform中面积小于2000的对象都被删除了。 小对象被删除后的图像如图3.7所示: 13 图 3.7 移除小对象后效果图 移除小对象后的效果图已经非常明显了,图像中最后只存在车牌区域,其他的图像已经完全滤除掉了,包括小物体,车的标志等影响已经没有了。 3.2.6车牌区域的边界值计算 在将原始图像进行二值化,然后轮廓平滑处理后,图像的每个点为两个离散值中的一个,这两个值代表开(1)与关(0),即只有黑与白的特殊灰度图像,并且整个图像只有两个域(如果有多个域需改变参数后重新进行一此剔除干扰对象处理),全1的域即为车牌区域,并且近似矩形,长宽比为4.5:1,也可以用这两个特性去检验提取的区域是否为车牌区域。 经区域确定了,即可将车牌的四个边界值确定下来。这里采用水平与垂直双向投影法。 ,1,x 水平坐标的确定,先定义一个的数组,其中错误~未找到引用源。为原始图像的宽度值,然后将二值图像垂直投影到轴。从直方图中基本可以看书水平方向x 上的两个分界线,为了便于处理,该课题将像素值临界值定量化,取值5个像素。从 ,左向右寻找第一个1值像素大于5的错误~未找到引用源。坐标为水平方向左侧分界线,从右向左寻找到第一个1值像素量大于5的为右侧分界线,程序可以用for循环语句。 垂直方向的分界线可用同样的方法实现。分界线计算后,即可从原图像中剪切出只包含车牌的区域图像。剪切得到的图像如下。图3.8为二值图切割的车牌区域,图3.9为RGB图像切割出来的图像: 14 图 3.8 车牌区域二值图裁减图像 图 3.9 原图中的车牌区域图像 对比原始图像与二值图裁减图可以看出,车牌的四个边界值基本上被确定下来了,这样就可以从原始图像中直接确定车牌的区域了。所以车牌就成功地被提取出来了。 3.3 字符切割 3.3.1字符切割前的图像去噪处理 由于图像车牌号区域提取后获得的是从原始图像中剪切的,是RGB图像,分割同样采取投影法,故同样需要先将RGB图像转换成灰度值,再将灰度图转化成二进制图,转化的方法就是限定一个阀值,如果大于阀值则为1,小于阀值为0,阀值采用全局阀值,全局阀值是指整幅图像都采用相同的阀值T处理,适用于背景和前景有明显对比的图像。虽然图像间受背景、光照等影响存在较大的差异,但计算简单,程序运算效率高。在Matlab实现方式如下: T=round(License_Image_Gray_max-(License_Image_Gray_max-License_Image_Gray _min)/3); 同时采集大的图像噪点依然存在,因此可以通过处理图像的低频部分来锐化图像。这里采用高通滤波算法。由此可得出滤波前后的图像如下所示: 15 图 3.10 车牌区域图像滤波前效果 图 3.11 车牌区域图像滤波后效果 可以对比滤波前跟滤波后的图像,如图3.10和图3.11所示,很明显,不但噪声去除了,而且图像得到了锐化。 3.3.2字符切割前的图像膨胀和腐蚀处理 腐蚀已经在在上文介绍,膨胀刚好与腐蚀相反,运算规则是输出图像的像素值是输入图像邻域中的最大值,在一个二值图像中,只要一个像素值为1,则相应的输出像素值为1。 根据经验值,车牌图像中,字符面积与车牌面积之比在(0.235,0.365)之间,因此计算字符面积与车牌面积比值,如果大于0.365则对图像进行腐蚀,如果小于0.235则对图像进行膨胀, 10,, ,,01,,在这里结构元素Se使用一个二维单位矩阵错误~未找到引用源。。 对于此对象,系统给予膨胀处理,效果图如图3.12所示: 图 3.12 车牌区域图像腐蚀、膨胀后效果 3.3.3字符切割 完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符内的间隙 16 处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。 计算水平投影进行车牌水平校正 去掉车牌的框架 分析垂直投影找到每个字符中心位置 按左右宽度切割出字符 图 3.13 牌照字符切割框图 2007年颁布的我国车牌规范(普通中小型汽车)规定车牌总长440mm,牌照中的7个字符的实际总长为409mm 左右,宽140mm,每个字符45mm宽,90mm高,字符间距为10mm,其中第二个字符与第三个字符的间距较为特殊,为15.5mm,最后一个字符与第一个字符距边界25mm。这样,如果平均分配每个字符在牌照中占据的宽度,那么每个字符宽度为:width/7(width 为车牌图像的宽度)。但是,实际上,第二个第三个字符之间存在一个黑点,牌照左右两边与图像边缘也都有一定的宽度,所以每个字符的宽度应该小于width/7。考虑所有的情况,一般情况下最小的宽度为width/9。因此,字符的宽度可以从width/9 到width/7 之间渐进的变化得到,程序流程图。 字符切割流程图如下图所示: 17 开始 车牌二值图像 切除周边空白 垂直投影 从左往右查找,垂直投影白色像素点累计小于10的值的wide 以水平区域(0, wide)剪切出 Y 判断是否为标保存这个字符 准字符 N 将剩余部分保存并覆盖原先图像 N 字符个数是否 为7 Y 结束 18 图 3.14 字符切割流程图 字符分割一般采用垂直投影法。在这之前还必须切除周边空白,由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。 经过切割,切割的字符图像如下: 图 3.15 经切割的七个字符 切割后一连串的字符串变成了单个字符,为后面的字符匹配识别奠定了基础。 3.4 字符识别 3.4.1字符识别方法选择 目前字符识别的方案有使用神经网络和模板匹配法进行比对。人工神经网络是模拟人脑思维功能和组织建立起来的数学模型,虽然现在神经网络正在迅速发展,但总体来说应用还是相对复杂的。模板匹配法虽然识别率低,但实现简单,计算量小,只有矩阵的加减与统计,而且车牌字符是有阿拉伯数字,英文大写字母,还有部分汉字,虽有字库量不大,字符较规整时对字符图像的缺损、污迹干扰适应力强且识别率相当高,因此本课题使用这种方法。对于模板匹配,首先建立标准模板库,库中字符使用 2040,统一的尺寸,这里使用。 3.4.2字符归一化 由于图像采集时图像的像素值不一样,经切割出来的字符的大小也会不一样,所以在进行匹配前必须先进行字符图像归一化。使图像字符大小跟模板图像大小一致,Matlab提供一个改变图像大小的函数imresize(I,Size,Model),Model是插值运算方法,这里选用'nearest'最近邻插值法,经归一化后的图像如下。 19 图 3.16 经归一化后的七个字符 切割的字符经过归一化之后,每个字符的大小基本一致,由此便解决了像素值不一致带来的问题,并且利于和库中的字符进行匹配比较。 3.4.3字符匹配识别 字符匹配识别的是要前提要简历可以与之相比较的字库表,再将已切割并进行了归一化处理的单个字符相比较,逐个字符进行匹配比较,再将待识别的字符的特征值和模板字符相减,找到相减值为最小的那个即为匹配得最好的字符。字符识别步骤如下: 建立模板字库表 读取分割出来的字符 第一个字符与模板中 的汉字模板进行匹配 第二个字符与模板中 的字母模板进行匹配 待识别字符与模板字符相减,值越小相似度 越大,找到最小的一个即为匹配的最好的 识别完成,输出此模板对应值 图 3.17 字符匹配框图 20 字符匹配的准确度是车牌识别中的关键部分,所以首先要简历精准有效的模板字库表,便于切割完的字符与库中内容相比较,接下来是读取切割的字符,从第一个字符开始一次与库中字符相比较匹配,切割后的字符特征值与库中模板字符相减,找到值最小的那个就是匹配得最恰当的字符。 匹配方法采用将目标图像与模板图像逐点做差,得到第三幅图像,程序实现如下 for ii=1:40 or jj=1:20 Word_Image_Diff(ii,jj)=Word_Image(ii,jj)-Word_Image_Code(ii,jj); end end 最后计算第三幅二进制图像中像素值为1的个数,数值最小的即为匹配出来的结果,经对比可得相似度最高的数字 图 3.18 字符相似度比较 如图3.18所示:第一个字符在Lib_Code_No=39处取得最大相似度,查字库Lib_Code_No=39的字符为“鲁”,则可以确定该字符为“鲁”,同理可得出其他6个字符。 21 4 仿真结果及分析 4.1 车牌定位及图像读取及其图像处理 车牌定位后系统边缘检测的仿真结果图如下图所示: 图 4.1 图像读取及检测结果图 结果分析:图像车牌区域提取就是从原图中截取含车牌的部分,即RGB图像,然后进行字符的切割与识别。为了去除图像中的噪声点必须对截取的图像进行滤波处理,经滤波后,不仅去除了噪声,并且使图像得到了锐化。经过这些步骤可以使得最终识别出的图像与原图的相似度更高,即结果更精确。仿真的结果也使得车牌部分从原图被准确的提取出来了,达到了车牌定位及图像读取及其图像处理的目的。 4.2 车牌字符分割及其图像处理 对经边缘检测扫描后的图像经字符切割后的图像如下图所示: 22 图 4.2 字符分割及归一化结果图 结果分析:从MATLAB编程运行结果看,便于图像进行匹配识别,必须先将连续的字符切割成单个字符,并且在切割字符之前要将周边空白切除掉。由以上结果图可以看到,车牌被切成只含字符部分,并且七个字符被切成清晰的七个字符,实现了字符切割。由右侧的归一化图像可以看出,切割出的图像像素值和模板图像达到了一致,由此便避免了切割出的图像像素值不一致所带来的问题。 4.3 车牌字符识别及其图像处理 图像经上述处理后再进行识别,次图像和原图有一定的差异,其字符相似度曲线成一定规律,其曲线图如下图所示: 图 4.3 字符识别结果图 结果分析:字符识别是这样一个过程,根据建立的模板字符库将分割出来的字符和模板库中的字符一一匹配,将切割的字符和模板相减得到一个差值,差值越小表明字符匹配程度越高。由图4.3可知,字符匹配识别的难易程度不一致,但总体能识别出汉字、字母和数字。 23 5 结论 本课题对车牌识别系统的软件部分进行了研究,分别从图像预处理、车牌定位、 字符分割以及字符识别等方面进行了系统的分析。主要工作内容及结论如下: (1)整理和 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 了国内外在车牌定位、分割、字符识别方面的研究成果和发展方向,系统介绍了我国车牌的固有特征,以及车牌识别的特点。 (2)在车牌定位我们采用基于灰度跳变的定位方法,采用先对图像进行预处理,再进行二值化操作的方法。实验表明本方法既保留了车牌区域的信息,又减少了噪声的干扰,从而简化了二值化处理过程,实验表明本方法既保留了车牌区域的信息,又减少了噪声的干扰,从而简化了二值化处理过程,提高了后续处理的速度。 (3)基于彩色分量的定位方法,运用基于蓝色象素点统计特性的方法对车牌是蓝色的车牌进行定位。实验表明,用该方法实现的车牌定位准确率较高。 (4)用MATLAB编程运行结果可以得出,本设计采用的图像预处理、边缘检测、开闭运算子、车牌长宽比特征识别等对车牌的定位都是非常有效的,而本设计提出的二次水平投影分析和阈值技术有效检测了车牌图像的上下左右边框、旋转角度,准确实现的车牌字符的分割,对多个车牌进行实验,均有很高的正确率。 本设计虽然只对蓝底白字车牌进行分割识别,对黑底白字车牌原则上整个算法可直接适用,对白底黑字车牌、黄底黑字车牌,需要对车牌定位算法进行调整,并将图像反转(0变1、1变0),而车牌字符的分割算法仍然行之有效。 因此,本设计提出的车牌字符的分割算法实验证明是准确、有效、可行的。 24 参考文献 [1]. 赵丹,丁金华.基于Matlab的车牌识别[J].大连:大连大连理工学报,2008.6,14(4):44,48 [2]. 冀小平.基于Matlab的车牌识别系统研究[J].北京:电子设计工程,2009.11,11(3):18,21 [3]. 徐辉.基于Matlan实现汽车车牌自动识别系统[M]. 北京:国防工业出版社,2010.6 [4]. 王爱玲,叶明生等.MATLAB R2007图像处理技术与应用[M].北京:电子工业出版社,2008.1 [5]. 张德丰.MATLAB模糊系统设计[M].北京:国防工业出版社,2009.2 [6]. 叶晨洲等.车辆牌照字符识别[J].上海:上海交通大学学报,2000.4,6 [7]. 刘智勇等.车牌识别(LPR)中的图像提取及分割[J].北京:中文信息学报,2000,14(4):29,34 [8]. 贺兴华、周媛媛、王继阳等.MATLAB 图像处理[M].北京:人民邮电出版社,2006.96,100 [9].刘佐濂 , 邓荣标 , 孔嘉圆.中国科技信息 [J].2005(23期)9,12. [10]. 张禹、马驷良、韩笑、张忠波.车牌识别中的图像提取及分割算法[J].吉林大学学报,2006. 第44卷第3期,407,410 [11]. 霍宏涛.数字图像处理[M].北京:机械工业出版社,2003.5 [12]. 许志影、李晋平.MATLAB极其在图像处理中的应用[J].计算机与现代化,2004(4):20,28 [13]. 戚飞虎.模式识别与图象处理,M,.上海:上海科学技术出版社,1998 [14]. 雷英杰. MATLAB遗传算法工具箱及应用[M].西安:西安电子科技大学出版社,2005 [15]. 杨淑莹.模式识别与智能计算:Matlab技术实现[M].北京:电子工业出版社,2008 [16]. 张强,王正林.精通MATLAB图像处理[M].北京:电子工业出版社,2009 [17]. D. S. Kim and S. I. Chien,. Automatic car license plate extraction using modified generalized symmetry transform and image warp ing[ J ]. in Proc. IEEE Int. Symp. Industrial Elec2tronics, vol. 3, 2001, pp. 2022 - 2027 25 致谢 非常感谢张恒老师、张小林老师在我大学的最后学习阶段——毕业设计阶段给自己的指导,从最初的校外毕设申请、定题,到资料收集、写作、修改以及论文定稿, 们放弃了自己的他们给了我耐心的指导和无私的帮助。为了指导我们的毕业论文,他休息时间,他们的这种无私奉献的敬业精神令人钦佩,在此我向她们表示我诚挚的谢意。同时,感谢所有任课老师和所有同学在这四年来给自己的指导和帮助,是他们教会了我专业知识,教会了我如何学习,教会了我如何做人。正是由于他们,我才能在各方面取得显著的进步,在此向他们表示我由衷的谢意,并祝所有的老师身体健康、工作顺利,培养出越来越多的优秀人才,桃李满天下~ 26 附录:程序清单 function [d]=main(jpg) close all clc %I=imread('car1.JPG'); I=imread('chepai.jpg'); figure(1),imshow(I);title('原图') I1=rgb2gray(I); figure(2),subplot(1,2,1),imshow(I1);title('灰度图'); figure(2),subplot(1,2,2),imhist(I1);title('灰度图直方图'); I2=edge(I1,'robert',0.15,'both'); figure(3),imshow(I2);title('robert算子边缘检测') se=[1;1;1]; I3=imerode(I2,se); figure(4),imshow(I3);title('腐蚀后图像'); se=strel('rectangle',[25,25]); I4=imclose(I3,se); figure(5),imshow(I4);title('平滑图像的轮廓'); I5=bwareaopen(I4,2000); figure(6),imshow(I5);title('从对象中移除小对象'); [y,x,z]=size(I5); myI=double(I5); tic Blue_y=zeros(y,1); for i=1:y for j=1:x if(myI(i,j,1)==1) Blue_y(i,1)= Blue_y(i,1)+1;%蓝色像素点统计 end end end [temp MaxY]=max(Blue_y);%Y方向车牌区域确定 PY1=MaxY; while ((Blue_y(PY1,1)>=5)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY; while ((Blue_y(PY2,1)>=5)&&(PY2PX1)) PX2=PX2-1; end PX1=PX1+50;%对车牌区域的校正 PX2=PX2-50; PY1=PY1+45; PY2=PY2-45; dw=I(PY1:PY2-8,PX1:PX2,:); t=toc; figure(7),subplot(1,2,1),imshow(IY),title('行方向合理区域'); figure(7),subplot(1,2,2),imshow(dw),title('定位剪切后的彩色车牌图像') imwrite(dw,'dw.jpg'); [filename,filepath]=uigetfile('dw.jpg','输入一个定位裁剪后的车牌图像'); jpg=strcat(filepath,filename); a=imread('dw.jpg'); b=rgb2gray(a); imwrite(b,'1.车牌灰度图像.jpg'); figure(8);subplot(3,2,1),imshow(b),title('1.车牌灰度图像') g_max=double(max(max(b))); g_min=double(min(min(b))); T=round(g_max-(g_max-g_min)/2); % T为二值化的阈值 [m,n]=size(b); d=(double(b)>=T); % d:二值图像 imwrite(d,'2.车牌二值图像.jpg'); figure(8);subplot(3,2,2),imshow(d),title('2.车牌二值图像') figure(8),subplot(3,2,3),imshow(d),title('3.均值滤波前') 28 % 滤波 h=fspecial('average',3); d=im2bw(round(filter2(h,d))); imwrite(d,'4.均值滤波后.jpg'); figure(8),subplot(3,2,4),imshow(d),title('4.均值滤波后') % 某些图像进行操作 % 膨胀或腐蚀 % se=strel('square',3); % 使用一个3X3的正方形结果元素对象对创建的图像进行膨胀 % 'line'/'diamond'/'ball'... se=eye(2); % eye(n) returns the n-by-n identity matrix 单位矩阵 [m,n]=size(d); if bwarea(d)/m/n>=0.365 d=imerode(d,se); elseif bwarea(d)/m/n<=0.235 d=imdilate(d,se); end imwrite(d,'5.膨胀或腐蚀处理后.jpg'); figure(8),subplot(3,2,5),imshow(d),title('5.膨胀或腐蚀处理后') % 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割 d=qiege(d); [m,n]=size(d); figure,subplot(2,1,1),imshow(d),title(n) k1=1;k2=1;s=sum(d);j=1; while j~=n while s(j)==0 j=j+1; end k1=j; while s(j)~=0 && j<=n-1 j=j+1; end k2=j-1; if k2-k1>=round(n/6.5) [val,num]=min(sum(d(:,[k1+5:k2-5]))); d(:,k1+num+5)=0; % 分割 end end % 再切割 d=qiege(d); % 切割出 7 个字符 29 y1=10;y2=0.25;flag=0;word1=[]; while flag==0 [m,n]=size(d); left=1;wide=0; while sum(d(:,wide+1))~=0 wide=wide+1; end if widey2 flag=1;word1=temp; % WORD 1 end d(:,[1:wide])=0;d=qiege(d); end end % 分割出第二个字符 [word2,d]=getword(d); % 分割出第三个字符 [word3,d]=getword(d); % 分割出第四个字符 [word4,d]=getword(d); % 分割出第五个字符 [word5,d]=getword(d); % 分割出第六个字符 [word6,d]=getword(d); % 分割出第七个字符 [word7,d]=getword(d); subplot(5,7,1),imshow(word1),title('1'); subplot(5,7,2),imshow(word2),title('2'); subplot(5,7,3),imshow(word3),title('3'); subplot(5,7,4),imshow(word4),title('4'); subplot(5,7,5),imshow(word5),title('5'); subplot(5,7,6),imshow(word6),title('6'); subplot(5,7,7),imshow(word7),title('7'); [m,n]=size(word1); % 商用系统程序中归一化大小为 40*20,此处演示 word1=imresize(word1,[40 20]); 30 word2=imresize(word2,[40 20]); word3=imresize(word3,[40 20]); word4=imresize(word4,[40 20]); word5=imresize(word5,[40 20]); word6=imresize(word6,[40 20]); word7=imresize(word7,[40 20]); subplot(5,7,15),imshow(word1),title('1'); subplot(5,7,16),imshow(word2),title('2'); subplot(5,7,17),imshow(word3),title('3'); subplot(5,7,18),imshow(word4),title('4'); subplot(5,7,19),imshow(word5),title('5'); subplot(5,7,20),imshow(word6),title('6'); subplot(5,7,21),imshow(word7),title('7'); imwrite(word1,'1.jpg'); imwrite(word2,'2.jpg'); imwrite(word3,'3.jpg'); imwrite(word4,'4.jpg'); imwrite(word5,'5.jpg'); imwrite(word6,'6.jpg'); imwrite(word7,'7.jpg'); liccode=char(['0':'9' 'A':'Z' '苏豫陕鲁']); %建立自动识别字符代码表 SubBw2=zeros(40,20); l=1; for I=1:7 ii=int2str(I); t=imread([ii,'.jpg']); SegBw2=imresize(t,[40 20],'nearest'); if l==1 %第一位汉字识别 kmin=37; kmax=40; elseif l==2 %第二位 A~Z 字母识别 kmin=11; kmax=36; else l>=3 %第三位以后是字母或数字识别 kmin=1; kmax=36; end for k2=kmin:kmax fname=strcat('字符模板\',liccode(k2),'.jpg'); SamBw2 = imread(fname); for i=1:40 31 for j=1:20 SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j); end end % 以上相当于两幅图相减得到第三幅图 Dmax=0; for k1=1:40 for l1=1:20 if ( SubBw2(k1,l1) > 0 | SubBw2(k1,l1) <0 ) Dmax=Dmax+1; end end end Error(k2)=Dmax; end Error1=Error(kmin:kmax); MinError=min(Error1); findc=find(Error1==MinError); Code(l*2-1)=liccode(findc(1)+kmin-1); Code(l*2)=' '; l=l+1; end figure(10),subplot(5,7,1:7),imshow(dw),title('第一步车牌定位'), xlabel({'','第二步车牌分割'}); subplot(6,7,15),imshow(word1); subplot(6,7,16),imshow(word2); subplot(6,7,17),imshow(word3); subplot(6,7,18),imshow(word4); subplot(6,7,19),imshow(word5); subplot(6,7,20),imshow(word6); subplot(6,7,21),imshow(word7); subplot(6,7,22:42),imshow('53.jpg'); xlabel(['第三步识别结果为: ', Code],'Color','b'); function [word,result]=getword(d) word=[];flag=0;y1=8;y2=0.5; while flag==0 [m,n]=size(d); wide=0; while sum(d(:,wide+1))~=0 && wide<=n-2 wide=wide+1; end 32 temp=qiege(imcrop(d,[1 1 wide m])); [m1,n1]=size(temp); if widey2 d(:,[1:wide])=0; if sum(sum(d))~=0 d=qiege(d); % 切割出最小范围 else word=[];flag=1; end else word=qiege(imcrop(d,[1 1 wide m])); d(:,[1:wide])=0; if sum(sum(d))~=0; d=qiege(d);flag=1; else d=[]; end end end %end result=d; function e=qiege(d) [m,n]=size(d); top=1;bottom=m;left=1;right=n; % init while sum(d(top,:))==0 && top<=m top=top+1; end while sum(d(bottom,:))==0 && bottom>=1 bottom=bottom-1; end while sum(d(:,left))==0 && left<=n left=left+1; end while sum(d(:,right))==0 && right>=1 right=right-1; end dd=right-left; hh=bottom-top; e=imcrop(d,[left top dd hh]); 33
本文档为【基于Matlab的车牌识别系统设计论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_682974
暂无简介~
格式:doc
大小:213KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-09-17
浏览量:64