版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号:南湖学院毕业设计(论文)题目:基于MATLAB的车牌分割与数字识别算法设计作者届别系别机械与电子工程系专业电子信息工程指导老师职称完成时间2013.05摘要车牌识别技术是智能道路交通管理的重要容,其识别的准确性和可靠性直接影响到交通管理系统的性能。车牌识别技术包括车牌图像获取、车牌定位、车牌分割、车牌校正、车牌字符分割、车牌字符归一化和车牌字符识别,本文重点针对车牌图像的分割和车牌数字的识别进行了算法研究和设计,同时也对其它步骤进行了探讨。论文首先对获取的车牌图像进行了预处理,包括车牌图像增强、车牌区域提取、车牌几何校正以与车牌字符分割和归一化,然后设计了BP网络算法,最后在MATLAB平台上设计实现了以上各种算法。实验结果表明,本文中的分割算法能准确的获取字符区域并实现对字符的分割和归一化,经过训练后的BP网络能稳定、可靠的实现对分割后字符的识别,实验结果达到预期要求。关键词:MATLAB;车牌分割;图像预处理;数字识别AbstractLicenseplaterecognitiontechnologyisanimportantcontentofintelligenttrafficmanagement,accuracyandreliabilityidentificationdirectlyaffectstheperformanceoftrafficmanagementsystem.Licenseplaterecognitiontechnologyincludelicenseplateimageacquisition,licenseplatelocation,licenseplatesegmentation,licenseplatecorrection,licenseplatecharactersegmentation,normalizationoflicenseplatecharactersegmentationandlicenseplatecharacterrecognition.Thispapermainlydesignandresearchonthealgorithmforlicenseplateimagesegmentationandlicenseplatenumberrecognition,butalsoforothersteps.Firstly,thethesisgetthelicenseplateimagepreprocessing,includinglicenseplateimageenhancement,plateregionextraction,plategeometriccorrectionandlicenseplatecharactersegmentationandnormalization,andthendesignstheBPnetworkalgorithm,finallyusetheMATLABplatformtodesignalgorithmstoimplementabove.Experimentalresultsshowthatthesegmentationalgorithminthisthesiscanobtaincharacterareaandrealizethecharactersegmentationandnormalizationaccurately,aftertrainingtheBPnetworkcanimplementtherecognitionforcharactersegmentationstablyandreliably,theexperimentalreachesexpectation.Keywords:MATLAB;Licenseplatesegmentation;Imagepreprocessing;Digitalidentification目录摘要IAbstractII1绪论11.1引言11.2车牌识别技术概述11.3车牌分割和数字识别的发展历史和现状21.4车牌分割和数字识别在车牌识别中的作用31.5本文的主要容与结构安排32车牌分割方法42.1车牌获取42.2车牌预处理42.3车牌分割73车牌数字识别方法113.1数字识别概述113.2车牌数字特点113.3基于神经网路的车牌数字识别124基于MATLAB的算法设计与实现154.1MATLAB概述154.2车牌分割算法设计154.3车牌字符识别算法设计245总结与展望315.1总结315.2展望31参考文献32致341绪论1.1引言近年来,由于国外的交通迅速发展,车牌识别系统作为数字摄像、计算机信息管理、图像分割和图形识别技术在智能交通领域得到广泛的应用,该项技术成为了智能交通管理系统中不可或缺的重要组成部分,例如道路交通监控、交通事故现场勘察、交通违章自动记录、高速公路超速管理系统、小区智能化管理等各方面,是智能交通管理系统中高效、时效的最重要手段之一[1-2]。目前,全球各国都在研究适合于本国的车牌识别系统,美国、日本、国等诸多国家都已经研究出相关的识别系统(基于传感器)。由于引进这些系统成本极高,而且引进的技术也不一定适用于我国的车牌以与实际的交通环境,所引进的系统往往并不能满足我国需求,尽管国市场上已有不少投入生产并使用的产品,但是这些产品的后续处理仍然需要大量的人工识别,所以车牌识别技术的研究依然是我国目前高科技领域的热门课题之一。为了促使车牌识别技术的快速发展,需要对该项技术提出更高的要求,使得该项技术日益精湛。该系统软件处理具有两大主要模块:图像处理模块和字符识别模块。由于MATLAB语言对图像处理和字符识别异常方便,在数字图像处理中有着其他语言所无法比拟的优势,由于它能直接调用预先编好的函数,使得整个系统有了较高的保障。所以本文介绍的是利用MATLAB对图像处理模块和字符识别模的设计和研究。1.2车牌识别技术概述随着日益发展的计算机科技和不断提高的硬件水平,数字识别技术以与人工智能理论的有效结合,智能车牌识别技术发展日趋完善。智能车牌识别系统以与工作原理实质上就是融合数字摄像技术和计算机信息管理技术,采用先进的数字图像处理工具、数字识别以与人工智能技术,通过对原始图像的采集、预处理、分割、识别等相应的措施,获得我们想要的图像信息,进而实现对车牌字符自动识别的系统,该系统是数字识别技术在现实生活中实际应用中的实践之一。目前,一个完整的车牌识别系统需要完成从图像采集到字符的识别以与输出的复杂过程,需要硬件和软件两大组成部分。其中硬件包括系统触发、图像采集两个主要组成部分,软件则包含了图像预处理、车牌获取、字符分割以与字符识别四个主要模块。一个完整的车牌识别系统主要结构如图1.1所示:图1.1车牌识别系统结构图1.3车牌分割和数字识别的发展历史和现状自1988年提出车牌识别(LicensePlateRecognition,LPR)技术以来,人们己经对其进行了广泛的研究,而近些年来,车牌识别的技术发展迅速,就识别基础而言,主要可以分为基于IC(即无线电频率鉴别(REID))或是基于条码识别的间接法和基于图像车牌识别的直接法。原始的图像采集,由于受到外界环境中光线差异、光路中灰尘密度差异、季节环境变化的影响,以与车牌本身比较模糊等诸多客观因素影响,使得LPR技术的发展受到一定的限制。为了解决图像的恶化等问题,国外的许多研究机构、高校以与公司企业采取的主要采用的方法是主动红外照明摄像或使用特殊的传感器来提高图像的质量,从而提高识别率,但这种做法的同时也使得投资的成本加大了不少,且减小了应用领域,不并适合普遍的推广与工业生产。国外己有不少关于车牌数字识别的文章发表,有相当一部分比较成熟,并已经投入实际生产使用中。早在70年代,国外就已经存在自动车牌检测系统,且应用于检查被盗车辆的情况,车牌识别系统发展到今天,已经达到较高的应用水平。在车牌识别发展的过程中,也出现了许多不同的技术方法,例如英国IPI公司研发了RTVNPR系统,新加坡Optasia公司的VLPRS产品,以色列Hi-Tech公司的SeeCarSystem系列产品,HSTOL公司开发的LPR系统,以与中国AsiaVisionTechnology公司的VECON产品等较为实用[3]。由于VECON系统和VLPRS系统都只是适合于当地的车牌,摒弃SeeCarSystem对我国的汉字识别较低,加上我国车牌自动识别的研究起步较晚,且我国的车牌并不规,多样化,不同的车型车牌规格、大小、颜色也不同,这也就造成了对车牌识别相当大的困难。目前,比较适合我国的产品主要有中科院自动化研究所汉王公司的“汉王眼”、川大智胜软件的ZT2000车牌自动别系统等。与此同时,国许多研究机构和高等院校也开始对车牌识别系统进行理论研究与实际开发。1.4车牌分割和数字识别在车牌识别中的作用车牌识别系统的核心是微处理器,它基于图像处理、数字识别等技术的高智能电子系统,该系统主要由摄像头、视频采集接口、辅助照明装置、计算机以与识别软件等组成。基本过程是摄像头所拍摄的原始图像通过视频采集接口输入计算机,通过所预设的识别软件进行识别并输出。因此,在车牌识别中,车牌分割和数字识别占有主要的作用。在车牌识别系统中,车牌分割需要完成的任务是将原始图像中的车牌区域分割出来,并将车牌字符准确的切分出来。在正式识别前,我们要做的仅仅是字符的分割,字符分割的好坏,直接影响着字符识别的准确率。也就是说,一个好的车牌识别系统的前提是有一个好的车牌分割模块,无法将字符很好的从原始图像中分割出来,意味着字符无法被准确的识别,也就意味着该车牌自动识别系统无法投入实际中应用。经过图像预处理、车牌定位、字符分割并校正后,才可以进行字符识别。车牌识别中最关键的步骤就是字符识别。字符识别模块是目前最难处理的部分,却也是车牌识别技术中最关键的部分。字符的识别率和识别时间是字符识别性能的主要技术指标。快速、准确以与具备较强的鲁棒性是字符识别的目标。一个好的车牌自动识别系统,关键就看其字符识别的性能。由此可知,车牌分割和数字识别是车牌识别技术中的两大主要技术指标。其中最关键的是数字识别技术。1.5本文的主要容与结构安排本文研究的容包括了车牌识别系统的五个主要组成部分的算法,提出了有效的解决策略,进行了测试,并完成了车牌识别系统的开发。本文的主要容共分为五章,容安排如下:第一节绪论,概述了车牌识别技术,总结了国外车牌识别系统的发展历史和现状,介绍了车牌分割和数字识别在车牌识别中的作用,最后简述了本文的主要容与结构安排;第二节车牌分割方法的研究,首先介绍了车牌获取的方法,接下来简述了车牌预处理的基本算法,包括灰度话、二值化、滤波、增强、边缘检测等,然后是车牌分割的基本步骤,最后介绍了归一化处理。第三节车牌数字识别方法的研究,概述了数字识别的现状,简述了车牌数字特点,最后介绍了基于BP神经网络的车牌数字识别的算法。第四节主要介绍的是基于MATLAB的算法设计与实现,主要介绍MATLAB概述、车牌分割算法设计、车牌字符识别算法设计三个方面,包括系统的算法流程、程序设计,并给出了设计的仿真结果与分析。最后一部分是结论,总结了本文的研究成果,并做出了分析和评价,同时对未来提出了展望。2车牌分割方法2.1车牌获取车牌获取即图像采集部分,大体分为检测和成像两个部分。车辆检测即使用传感器技术,检测目标区域有无车辆。当机动车辆在路过预先设置好的摄像头并达到触发条件,摄像头即可拍摄出原始图像,图像采集卡将所拍摄的图像从视频信号转化为数字信号传输到计算机中,这就完成了车牌的获取过程。其中车牌获取流程图如图2.1所示图2.1车牌获取流程图实质上,车牌获取就是指在实际拍摄的图像中确定车牌区域、位置,以便提取、分割车牌区域。受自然等客观条件的影响,需要对车牌进行预处理,以便提高车牌的识别率。车牌识别主要包括三个步骤:(1)对拍摄的图片进行格式识别、灰度化、二值化、滤波、边缘检测等图片预处理;(2)利用各种算法将已通过预处理的图片准确定位其车牌的位置,并将车牌所处的位置分割出来,为接下来的字符切割做好相关准备;(3)对切割出来的字符进行归一化和识别。2.2车牌预处理照片拍摄的好坏受许多外界因素决定,例如光照强度因素,晴天与阴天所拍摄的照片质量是不一样,白天和晚上所拍摄的照片质量更是不同;再比如说,车辆行驶速度因素,行驶慢的原始图像会比行驶快的原始图像质量要好一些,此外,过快的车速,会导致照片的字迹模糊不清,这也就必定在一定程度上影响着字符识别率。这也就是为什么要对原始图像进行灰度化、二值化、滤波等预处理的原因[4]。2.2.1灰度化目前,我国车牌的原始图像采集,由于基本上都是通过摄像机、数码相机等拍摄设备拍摄获取,所以一般情况下,原始图像为彩色图像。由于彩色图像包含着大量的颜色信息,且每个像素都具有R、G、B三种不同颜色分量,所以在对其进行处理时,浪费许多系统资源的同时也会降低系统的执行速度。因而,我们需要对原始图像进行灰度化,以便减小图像占用的存储空间。最基本的灰度化是直接取彩色图像R、G、B三个分量中最大值或平均值代替各分量。由于灰度化后,每一个像素的三个分量都是均等的,解决可彩色图像中颜色差异的问题,只存在亮度上的差异。灰度图像存在256个亮度级,其中白色的灰度值为255,黑色的亮度级为0[5]。另外,我们也可以采用加权系数对图像进行灰度化,常用到的灰度化公式:(2-1)其中I为灰度化之后的像素值,R、G、B分别为红、绿、蓝的像素。2.2.2增强拍摄车牌图像时往往受到许多条件的限制和干扰,这使得图像的灰度值与实际景物不完全一样。成像系统有它一定的亮度围,亮度最大值与其最小值之比称为对比度。因为成像系统的有限亮度,常使得对比度不足,导致图像视觉效果很差,这也就直接影响了图像的后续处理。因此,研究者常常通过灰度变换和直方图均衡化来增强对比度,以改善视觉效果。造成对比度不足的原因主要有:(1)目标的远近不同导致的图像中央区域和边缘区域的灰度失衡;(2)摄像头扫描时各点的灵敏度差异产生的灰度失真;(3)曝光不足或过度而导致灰度值限定在较小的围。这时可以采取灰度变换增强灰度变化围,丰富灰度层次,以达到增强图像对比度的目的。用线性单值函数,对图像各像素点作线性扩充,从而有效的改善图像的视觉效果。为了克服上述问题,本文采用灰度信息与背景信息相结合的局部灰度修正增强方法,其基本原理是将原图像的灰度和背景图像区域相减,实现图像的增强,即所谓的形态学top-hat变换[9]。设用h表示top-hat变换后的结果,则top-hat变换可定义为:(2-2)其中,表示原灰度图,表示使用结构元素对集合进行开操作[6]。图像的top-hat变换对增强目标区域,隐藏背景细节有很大用处,最初的命名是由于使用了带有一个平顶的圆柱形或平行六面体形的结构元素。2.2.3二值化灰度图像一般有256个灰度级的单色图像,能表现出比较丰富的明暗度。但在车牌识别时,我们需要彻底的从原始图像中分离出目标。为了减少背景像素的干扰,保留并增强目标区域的信息,通常将图像分为目标和背景两部分。即得到的图像只有0和1两个灰度级,常规是将目标区设为1,背景区为0,这样就可以得到我们所说的二值图像。用数学式可以表示为:(2-3)其中,BW为二值图像某像素的像素值,为该像素在灰度图像中对应的灰度值。为选定的阈值。图像的二值化处理即将灰度图像中除了灰度值为0的像素点外,其余的像素点均设为255.通过二值化处理后的整个图像明显呈现出黑白效果。为了得到理想的二值图像,一般采用封闭、连通的边界定义不叠交的区域。二值化算法一般分为全局阈值算法和局部阈值算法或称为自适应阈值算法[7-8]。从二值图像可以得到图像中对象物的形状特征的主要信息。与灰度化后的图像相比,二值化后的图像具有以下几个特点:大量减小了信息量,加快了处理速度,降低了成本,实用价值更高。所以一般情况下,在对车牌字符分割前,会对图像进行二值化处理。2.2.5滤波图像的本质其实就是光电信息,图像噪声主要有以下三个来源:图像在信号的转换过程中所引入的噪声;大气层中的浪涌等引起的脉冲干扰;粒子性或不连续性所引起的自然起伏性噪声[10]。由于图像的质量被噪声所恶化,导致图像模糊不清,甚至连图像的本身特征都会被淹没或改变,这给图像的分析与识别带来了较大的困难。为了消除图像的噪声,常常采取滤波措施,且合适的滤波还可以锐化图像与增强图像的边缘信息。常用的滤波方法有空间域滤波和同态滤波两种,其中空间滤波又分为三种:平滑滤波、中值滤波、高通滤波。其中,平滑滤波主要的作用是模糊和消除噪声,常用的方法是领域平均法,即求邻近像素点的平均亮度。这种方法简单,且处理速度快,但在降低噪声的同时使图像产生了模糊,尤其是在边缘与细节处。中值滤波是非线性滤波,也是领域算法,类似卷积。与平滑滤波不同的是,它的计算不是加权求和,当其像素点数为奇数时,则将该领域的像素按其灰度值排序,再去其中间值作为领域中心像素点的输出值;当其像素点数为偶数时,取排序后的中间两个像素灰度值的平均值作为输出值[11]。为了锐化图像突出图像边缘,常对图像采用了高通滤波,在增强图像边缘的同时孤立的噪声点也得到了增强。高通滤波的效果也可以通过原始图像减去低通图像得到,这种方法称为非锐化掩模法。比较常见的高通滤波的冲激响应阵列有以下三种:(2-6)2.2.4边缘检测边缘是图像的重要特征,图像理解、分析的第一步通常是边缘检测。由于边缘是图像灰度变化最严重的区域,传统的边缘检测通常是通过计算图像中像素的梯度值来确定边缘点。此外,比较常见的图像边缘提取算子有Robert梯度算子、滤波算子、Canny算子、拉斯算子等。拉斯算子前几种算子都是通过计算一阶导数来检测边缘,但这几种算子导致检测到的边缘点过多,不利于后期处理。而拉斯算子是二阶导数段子,再找出梯度局部最大值对应点后才确定其为真正的边缘点。其中拉普拉斯的运算公式为:(2-4)拉普拉斯算子同样是借助模板实现,其中最为常见的模板如下:(2-5)上文所提到的几种边缘检测算子都对噪声非常的敏感,也就是说必然会在计算的过程中加大噪声的成分。因此,通常在处理含有比较大的噪声图像时,需要先对图像进行平滑操作,然后再进行微分,这也就产生了新的边缘检测方法——LOG边缘检测。这种检测方法需要用高斯函数对图像进行平滑处理后,再用拉普拉斯算子计算[09]。2.3车牌分割2.3.1车牌定位车牌定位的本质是把车牌图像从含有汽车和背景的图像中提取出来,即输入车牌原始图像输出车牌图像。在自然环境下,原始图像采集背景复杂,光照不均,在自然背景中准确地确定牌照区域是整个牌照是别的关键。经过图像于处理后所得到的图像,在垂直方向上的面积投影出现了峰-谷-峰的特性。根据这种特性,可以检测到车牌的区域,即车牌区域定位法,这种初步定位后的车牌还需要进一步微定位。对初步确定出来的车牌进行微定位,而所谓的微定位法即对基本定位后的车牌图像进行局部分析,以便进一步确定字符围,缩减车牌的左右、上下边界,这有利于后续的车牌处理,确定车牌的具体位置后再提取车牌[12]。微定位技术包括三部分:(1)横向定位;(2)纵向定位;(3)微定位。需要在大围的原始图像中找到车牌的区域,需要对原始图像进行搜索,找到符合车牌特征的部分区域作为车牌候选区域,在对其进行深层次的分析、评判,计算,最终找到真正的车牌区域,并将该区域从图像中分割出来。图2.2车牌图像定位示意图目前,国外车牌定位的主要方法有:特征定位法,边缘检测定位法,数学形态定位法,小波变换法,开运算定位法等。本文中所采用的是开运算定位法。2.3.2几何校正在实际的车牌获取过程中,通常是由道路某侧或上方的摄像机拍摄所得。因此,所得到的原始图像车牌区域角度、距离有一定的差距,也就是说原始图像中的车牌存在一定的倾斜度。主要的三种倾斜方式是:水平上的倾斜、垂直上的倾斜、水平和垂直上的倾斜。车牌的倾斜度校正前,需要先对车牌的倾斜进行检测。其检测公式如下:(2-7)其中,表示第i行的0、255的跳跃次数。常见的几种倾斜校正的方法为:(1)基于霍夫变换的校正算法,(2)基于车牌投影变换的校正算法[13-14],(3)基于直线拟合的校正算法[15]。本文所采用的方法是基于车牌投影变换的倾斜校正算法。基于车牌投影的倾斜校正算法实质上是一种基于Radon变换的校正算法。用二维函数表示原始图像坐标为(x,y)的像素值,某方向上的投影可用该方向上的积分表示。积分公式如(2-8)所示:(2-8)其中为的周期函数,T=180°,且[0°,180°]。坐标变换的公式如(2-9)所示:(2-9)Radon变化所检测的直线是在坐标的峰值,可根据横坐标和纵坐标确定一条直线。2.3.3分割算法字符分割实质上是把车牌上的字符分割成一个个单个的字符,传统的字符分割方法有投影法[16-18]、模板匹配法、聚类分析法[19-20]。由于投影法比较准确、编程较简单,且易于实际操作,能满足在复杂环境下,所以本文采用的是投影法分割车牌字符。投影法的具体操作如下:(1)对灰度化的车牌图像从下向上逐行扫描,逐行统计出像素值为255的像素的个数,当其个数大于7时(车牌有7个字符),认为寻找到车牌字符的下边界,同理,找到车牌的上边界。去除车牌字符上下边界以外的区域,之后设车牌的高度为height,宽度为width。(2)对车牌图像从左向右逐列扫描,逐列统计像素值为255的像素的个数,并将结果保存在一位数组count[width+1]中,其中count[i]用于存储第i列像素值为255的像素的个数。(3)根据汉字特征,需要设置两个阈值来分割一个汉字字符。设两个阈值分别为threshold1,threshold2。从左向右扫描经过预处理后的车牌图像,记第一个大于阈值threshold1的列为汉字的开始位置S,记第一个小于阈值threshold1的列为H,比较这两列的宽度H-S与threshold2的大小直到找到与S列相差的宽度大于threshold2且满足像素值为255的像素的个数小于阈值的列,设为车牌的汉字字符的结束列。在分割不连通的汉字的时候,这种改进的方法起到作用是显著的。(4)之后的英文字母和阿拉伯数字不存在不连通性的问题,所以只要利用第一个阈值threshold1就可以分割出车牌剩下的字符。(5)若出现像素值为255的像素个数大于阈值threshold1时记为车牌字符开始的位置,小于阈值threshold1时记为车牌字符的结束位置。如此重复的下去,直到字符全部分割出来为止。流程图如图2-1所示:图2.3车牌图像定位示意图2.3.4归一化处理由于原始图像采集的时候,图像像素值不一致,所以经过字符切割后所得到的字符大小也不一致,因此需要在进行字符匹配之前需要对字符图像进行归一化处理。不言而喻,归一化处理的目的是使得车牌字符与标准模块中的字符特征一致。归一化处理可以分为倾斜度校正和大小归一化两个主要部分,其中倾斜度校正部分使用的是MATLAB工具箱中的Imrote函数。由于大小归一化值得是长度和宽度上分别乘以某个比例因子,使其大小与模块中的字符大小一致,大小归一化最为常用的方法是将整个牌照图像按线性比例放大或缩小到标准模快的大小。归一化流程图如2.4所示:图2.4归一化流程图3车牌数字识别方法3.1数字识别概述早期,约在1870年时字符识别作为视力障碍人的辅助工具。随着计算机的日益发展,约在29世纪40年代,OCR(字符识别OpticalCharacterRecognition,简称OCR)系统问世,但在当时也只是商业界的数据处理手段。20世纪50年代中期以后,商业OCR机并正式开始投入市场。自50年代后,人们开始研究印刷体字符,随着算法的日益完善,到80年代末90年代初字符识别已经发展到可以识别出手写字体。在当时看来,手写汉字的识别成为字符识别的最终目标之一。到1992年时,单个字符的手写体达到较高的识别率,特别是数字的识别率接近95%,于是识别系统开始步入市场。虽然国对车牌字符研究起步较晚,但国外在字符研究方面早已有所成就,如英国、日本、德国、加拿大等不少国家已经研究出适合本国的车牌识别系统,并且拥有比较高的字符识别率和比较少的识别时间。由前文可知,车牌识别系统中最为关键的技术是字符识别,字符识别中的主要指标是识别率和识别时间。目前,国外的车牌字符识别的方法[21]主要有模板匹配字符识别算法、神经网络字符识别算法[22]、统计特征匹配法、支持向量机模式识别算法等几种方法,其中最早使用于车牌识别的是模版匹配字符识别算法,然而目前最受研究者和学者们青睐的时神经网络识别算法。随着我国的数字图像处理技术的发展以与实际应用,我国利用数字图像处理技术对字符进行处理识别的技术也有所进展,目前国比较具有代表性的研究院、高校有清华大学、信息工程学院、中字汉王、邮电大学、自动化等。3.2车牌数字特点目前,我国的车牌主要分为蓝底白字和黄底黑字两种[23]。一般情况下,国轻型车所使用的是蓝底白字车牌,常常用于一些中小型的民用汽车,也是目前国最为常见的车牌。大型车辆一般所采用的是黄底黑字车牌,通常是大型民用汽车、重型载重车辆,这种车牌与蓝底白字的车牌相比较少,但也是我国常用车牌。除此以外,我国还存在一些比较特殊的车牌,例如使馆车牌、领馆车牌、军车车牌等。目前,我国车牌的具体规格,如表3-1所示:表2-1车牌格式分类外廓尺寸(mm)颜色面数大型民用汽车440*140/440*220黄底黑字2小型民用汽车440*140蓝底白字2公安专用汽车440*140白底红“GA”、黑字2武警专用汽车440*140白底红“WJ”、黑字2大使馆外籍汽车440*140黑底白字与空心“使”字2领事馆外籍汽车440*140黑底白字与空心“领”字2外籍汽车440*140黑底白字2实验汽车440*140白底红字,数字前有“试”字2学习汽车440*140白底红字,数字前有“学”字2临时牌照白底红字,数前有“临时”字2汽车补用牌照白底黑字2车辆移动证白底红字2本文主要分析蓝底白字和黄底黑字的车牌,具有以下几个特点:(1)车牌拍照一共七位,第一个为汉字,一般为各个省级行政区的简称;(2)第二个字符一般为英文字符,作为地市一级代号,后五位是数字和字母的排列组合;(3)车牌大小尺寸高度统一为140mm左右,宽度统一为均为440mm,字体规、科学、容易辨认;(4)字符总长度409mm,单个字符宽度45mm,高度为90mm,第二三个字符之间的间隔是34mm.这也就是说标准的车牌字符识别可以分为三部份,按照车牌上的七个字符的排列原则可知,首位是省名缩写的汉字,接下来是因为字母,接下来的一位可能是数字也可能是字母,末四位是数字。所以车牌的额构造大体为“”的车牌中,其中代表着省级行政区(汉字)的集合,可能出现的汉字集合为{湘,,皖,京…};为车牌所在地的英文字母代码的集合,构成的集合时出I以外的25个字母{A,B,C…};可能是数字也可能是字母,所以有34个字符构成{0,1,…,9,A,B,…Z};只可能是数字,所以可能的集合时{0,1,2,…,9}。3.3基于神经网路的车牌数字识别由于字符识别率是车牌识别研发成功与否的关键指标,可知字符识别在车牌识别系统中的作用是极其重要的,字符识别的主要涉与到特征提取和识别方法两方面,并且两者是继承互补的关系。经过训练后的神经网络不仅可以有效地提取信号、图像等感知模式的特征,还可以调试现有的启发模式识别系统,使其更好的解决不变量探测、自适应、抽象或者概括等一些常见问题,也就是说神经网路可以很好的应用于数组识别系统算法的设计之中。预处理好以后的饿图片,需要使用神经网络对样本进行训练,本文中所使用的是前馈后向传播网络(BP网络)[20-22]。BP网络的设计主要包括了输入层、隐层、输出层以与各层之间的传输函数的设计。BP网络用于模式分类是基于以下原理,首先,隐层将输入模式空间的样本映射到隐层模式空间;其次输入层将隐层模式空间的输出模式样本映射到输出模式空间;最后,根据判断依据判决规则决定决策空间,进行模式分类。结构示意图如图3.1所示:……………图3.1BP网络结构图其中单个的神经元结构如图3.2所示:图3.2单个神经元结构图设第k-1层中第i个神经元的输入为,输出为,则输入与输出的关系如公式3-1所示:(3-1)式中:是第k-1层第i个神经元到第k层的第j个神经元的连接权值;是第k层神经元的数目;是第k层神经元的阈值;f(x)是神经元的传递函数。尽管BP网络在模式识别中取得相对比较大的成功,但还是存在一些不足:学习率与稳定性的矛盾、学习率的选择缺乏有效的方法、训练过程可能陷入局部最小网络、没有确定隐层神经元数的有效方法。这需要我们不断地改变训练方法,从而找到比BP网络更适合字符识别的神经网络,以便提高字符识别的精度、准确率以与时间。4基于MATLAB的算法设计与实现4.1MATLAB概述MATLAB语言是由CleverMoler博士于20世纪80年代开发的一种功能强、效率高、简单易学的数学软件,它是MATrixLABoratory(矩阵实验室)的缩写,设计者的初衷是为了解决“线性代数”课程的矩阵运算问题。该语言具有四大特点:(1)具有丰富的工具箱,功能十分强大,支持的图像文件格式非常丰富,如*.BMP、*.JPG、*.JPEG、*.GIF、*.TIF、*.TIFF、*.PNG、*.PCX、*.XWD、*.HDF、*.ICO、*.CUR等,MATLAB7.1提供了20多类图像处理函数,几乎涵盖了图像处理的所有技术方法,是学习和研究图像处理的人员难得的宝贵资料和加工工具箱;(2)具有超强的数值运算功能,超过500种数学、统计、科学以与工程方面的函数运算,并且简单快捷;(3)具有强大的数据可视化功能,高质量的图形;(4)具有开放式的构架和可延拓的特性,除了部函数外,MATLAB主包文件和各种工具箱均可读可改,还可以加入自己的函数构成新的工具包。MATLAB函数按其功能可分为:数值的分析、数值与符号的计算、工程与科学的绘图、控制系统的设计与仿真、数字图像的处理、数字信号的处理、通讯系统的设计与仿真、财务与金融工程、图像转换等。MATLAB在图形用户界面(GUI)的制作上做了较大的调整,使得即使在这方面有特殊要求的用户也可以得到相应的满足[23]。本文将给出MATLAB的图像处理工具箱中图像处理与分析的实际应用技术实例。4.2车牌分割算法设计简而言之,投影法实质上是将车牌图像二值化后,将二值图像所有列的垂直投影做一个统计,再利用之前所得到的垂直投影直方图的期望与方差计算阈值,从而根据车牌的形状、车牌的纹理特征、字符特征、字符宽度以与相对位置,可以准确的分割出车牌的字符位置。但是基于投影分割法也有他一定的缺点,例如无法精确地分割出倾斜车牌的字符位置。4.2.1算法流程图4.1车牌分割流程图4.2.2程序设计主要代码:%ex1505clcclearfilename='car.jpg';I=im2gray(filename);%调用自编函数读取图像,并转化为灰度图像;tic%计时开始[height,width]=size(I);%预处理I_edge=zeros(height,width);fori=1:width-1I_edge(:,i)=abs(I(:,i+1)-I(:,i));endI_edge=(255/(max(max(I_edge))-min(min(I_edge))))*(I_edge-min(min(I_edge)));[I_edge,y1]=select(I_edge,height,width);%%%%%%调用select函数BW2=I_edge;%%%%%%%%%%%%%%%%%一些形态学处理SE=strel('rectangle',[10,10]);IM2=imerode(BW2,SE);IM2=bwareaopen(IM2,20);IM3=imdilate(IM2,SE);%%%%%%%%%%%%%%%%%%投影以粗略估计车牌位置p_h=projection(double(IM3),'h');%调用projection函数if(p_h(1)>0)p_h=[0,p_h];endp_v=projection(double(IM3),'v');%调用projection函数if(p_v(1)>0)p_v=[0,p_v];end%%%%%%p_h=double((p_h>5));p_h=find(((p_h(1:end-1)-p_h(2:end))~=0));len_h=length(p_h)/2;%%%%%p_v=double((p_v>5));p_v=find(((p_v(1:end-1)-p_v(2:end))~=0));len_v=length(p_v)/2;%%%%%%%%%%%%%%%%%粗略计算车牌候选区k=1;fori=1:len_hforj=1:len_vs=IM3(p_h(2*i-1):p_h(2*i),p_v(2*j-1):p_v(2*j));if(mean(mean(s))>0.1)p{k}=[p_h(2*i-1),p_h(2*i)+1,p_v(2*j-1),p_v(2*j)+1];k=k+1;endendendk=k-1;%%%%%%%%%%%%%%进一步缩小车牌候选区fori=1:kedge_IM3=double(edge(double(IM3(p{i}(1):p{i}(2),p{i}(3):p{i}(4))),'canny'));[x,y]=find(edge_IM3==1);p{i}=[p{i}(1)+min(x),p{i}(2)-(p{i}(2)-p{i}(1)+1-max(x)),...p{i}(3)+min(y),p{i}(4)-(p{i}(4)-p{i}(3)+1-max(y))];p_center{i}=[fix((p{i}(1)+p{i}(2))/2),fix((p{i}(3)+p{i}(4))/2)];p_ratio(i)=(p{i}(4)-p{i}(3))/(p{i}(2)-p{i}(1));end%对上面参数和变量的说明:p为一胞元,用于存放每个图像块的左上和右下两个点的坐标;%存放格式为:p{k}=[x1,x2,y1,y2];x1,x2分别为行坐标,y1,y2为列坐标%p_center为一胞元,用于存放每个图像块的中心坐标,p_center{k}=[x,y];x,y分别为行,列坐标%p_ratio为一矩阵,用来存放图像块的长宽比例%%%%%%%%%%合并临近区域%%%%%%%%如果有多个区域则执行合并ifk>1n=0;ncount=zeros(1,k);fori=1:k-1%%%需要调整if条件中的比例%%%需要调整%检查是否满足合并条件if(abs(p{i}(1)+p{i}(2)-p{i+1}(1)-p{i+1}(2))<=height/30&&abs(p{i+1}(3)-p{i}(4))<=width/15)p{i+1}(1)=min(p{i}(1),p{i+1}(1));p{i+1}(2)=max(p{i}(2),p{i+1}(2));p{i+1}(3)=min(p{i}(3),p{i+1}(3));p{i+1}(4)=max(p{i}(4),p{i+1}(4));%向后合并n=n+1;ncount(n)=i+1;endend%如果有合并,求出合并后最终区域if(n>0)d_ncount=ncount(2:n+1)-ncount(1:n);%避免重复记录临近的多个区域。index=find(d_ncount~=1);m=length(index);fori=1:mpp{i}=p{ncount(index(i))};%重新记录合并区域的比例pp_ratio(i)=(pp{i}(4)-pp{i}(3))/(pp{i}(2)-pp{i}(1));endp=pp;%更新区域记录p_ratio=pp_ratio;%更新区域比例记录clearpp;clearpp_ratio;%清除部分变量endendk=length(p);%更新区域个数%%%%%%%%%%%%%%合并结束%%%%%%%%%%%%%%%%%%%%%%%%%%%%%根据区域比例判断是否为车牌区域%%%%%%%%%%%%m=1;T=0.6*max(p_ratio);fori=1:kif(p_ratio(i)>=T&p_ratio(i)<20)p1{m}=p{i};m=m+1;endendp=p1;clearp1;k=m-1;%更新区域数%%%%%%%%%%%判定结束%%%%%%%%%%%%%%%%%%%%%toc%计时结束clearedge_IM3;clearx;cleary;%清空部分变量%%%%%%%%%%%%%%%%显示figure(1)imshow(I);title('原始图像')figure(2)imshow(IM2);title('腐蚀后图像')figure(3)imshow(IM3);title('灰度膨胀后图像')%%%%%%%%%%%%%%%%%显示figure(4)fori=1:ksubplot(1,k,i);index=p{i};imshow(I(index(1)-2:index(2),index(3):index(4)));title('车牌图像')end%存储车牌图像if(k==1)imwrite(I(index(1)-2:index(2),index(3):index(4)),'cp.jpg');end4.2.3仿真结果与分析图4.2原始图像图4.3TOPHAT图像图4.4灰度增强的图像图4.5开运算图像图4.6车牌校正图像图4.7车牌灰度图和二值图图4.8图像的水平投影图4.9车牌定位图像图4.10垂直投影图像图4.11车牌字符分割图像4.3车牌字符识别算法设计经过一系列的预处理后,可以得到分割后的字符子图,即可以进行字符识别了。本文所用到的是人工神经网络方法,神经网络可以分为:反向反馈型网络模型、自组织型网络模型和随机型网络模型、前向反馈型(BP)网络模型等几种模式。由于BP网络识别率较高,所以本文采用了BP网络方法。4.3.1算法流程输入样本输入样本对网络进行BP算法学习形成能识别字符的神经网络输入英文字符图像归一化处理仿真测试识别成功显示失败显示识别字符重新输入重新输入否是图4.12识别算法流程图4.3.2程序设计%ex1506_2%读取原始图像I=imread('cp.jpg');figure(1)imshow(I);title('原始图像1');%调用函数对图像进行二值化等一系列操作img=myimgpreprocess(I);fort=4:50%调用函数对图像进行修剪bw2=myimgcrop(img{cnt});%调用函数对图像进行重采样charvec=myimgresize(bw2);out(:,cnt)=charvec;endP=out(:,1:40);T=[eye(10)eye(10)eye(10)eye(10)];Ptest=out(:,41:50);%建立神经网络并对其进行训练net=mycreatenn(P,T);%测试神经网络[a,b]=max(sim(net,Ptest));%输出测试量disp(b);%%%%%%%%%%%%%%%%%functionlett=myimgresize(bw2)bw_7050=imresize(bw2,[70,50]);fort=1:7fort2=1:5Atemp=sum(bw_7050((cnt*10-9:cnt*10),(cnt2*10-9:cnt2*10)));lett((cnt-1)*5+cnt2)=sum(Atemp);endendlett=((100-lett)./100);lett=lett';%%%%%%%%%%%%%%%%%%%%functionimg=myimgpreprocess(I)Igray=rgb2gray(I);Ibw=im2bw(Igray,graythresh(Igray));Iedge=edge(uint8(Ibw));se=strel('square',3);Iedge2=imdilate(Iedge,se);Ifill=imfill(Iedge2,'holes');[Ilabelnum]=bwlabel(Ifill);Iprops=regionprops(Ilabel);Ibox=[Iprops.BoundingBox];Ibox=reshape(Ibox,[450]);Ic=[Iprops.Centroid];Ic=reshape(Ic,[250]);Ic=Ic';Ic(:,3)=(mean(Ic.^2,2)).^(1/2);Ic(:,4)=1:50;Ic2=sortrows(Ic,2);fort=1:5Ic2((cnt-1)*10+1:cnt*10,:)=sortrows(Ic2((cnt-1)*10+1:cnt*10,:),4);endIc3=Ic2(:,1:2);ind=Ic2(:,4);fort=1:50img{cnt}=imcrop(Ibw,Ibox(:,ind(cnt)));end%%%%%%%%%%%%%%%%%%%%%%functionbw2=myimgcrop(bw)[y2tempx2temp]=size(bw);x1=1;y1=1;x2=x2temp;y2=y2temp;cntB=1;while(sum(bw(:,cntB))==y2temp)x1=x1+1;tB=cntB+1;endcntB=1;while(sum(bw(cntB,:))==x2temp)y1=y1+1;tB=cntB+1;endcntB=x2temp;while(sum(bw(:,cntB))==y2temp)x2=x2-1;tB=cntB-1;endcntB=y2temp;while(sum(bw(cntB,:))==x2temp)y2=y2-1;tB=cntB-1;endbw2=imcrop(bw,[x1,y1,(x2-x1),(y2-y1)]);%%%%%%%%%%%%%%%%%%%%%%%functionnet=mycreatenn(P,T)alphabet=P;targets=T;[R,Q]=size(alphabet);[S2,Q]=size(targets);S1=10;net=newff(minmax(alphabet),[S1S2],{'logsig''logsig'},'traingdx');net.LW{2,1}=net.LW{2,1}*0.01;net.b{2}=net.b{2}*0.01;net.performFcn='sse';net.trainParam.goal=0.1;net.trainParam.show=20;net.trainParam.epochs=5000;net.trainParam.mc=0.95;P=alphabet;T=targets;[net,tr]=train(net,P,T);4.3.3仿真结果与分析图4.13识别结果图4.14数字样本由上述各图结果显示可知,当车牌原始图像采集良好时,即没有明显的破损与垢渍,曝光度良好等高清晰,则该系统能够进行正常的字符识别。为了验证该系统的可用性与实用性,在自然条件下获取的部分车牌样本,对BP神经网络进行训练,对每一个车牌进行仿真识别,样本与训练结果如图4.13所示:图4.15车牌样本图4.16BP网络训练结果(1)图4.17BP网络训练结果(2)全部的仿真结果显示,其中2副车牌的字符分割与识别发生错误,余下的车牌都能进行正常的识别。在识别的仿真过程中可以看到,识别随着样本数目改变的同时,也受到了样本的质量选取的问题。在BP神经网络的训练过程中,对该识别算法的识别率统计结果如表4-1所示:表4-1识别率数据统计正确识别率样本数=5样本数=10样本数=1586.3%87.25%88.6%由于受到时间以与其他一些客观条件的限制,本次样本的正确率约87%,且对于一些比较相似的字符识别产生失误,例如“8”与“B”,“7”与“2”,“1”与“I”等。增加对该神经网络的训练,可以在一定程度上解决该问题。此外,BP神经网络的具有比其他方法高的并行性和容错性。由此可知,BP神经网络的具有它的理论价值与实用价值。5总结与展望5.1总结车牌识别技术是智能交通管理中最为关键的技术之一,与此同时,车牌识别的技术和方法也在其他检测、识别领域也发挥着它重要的作用。由此可知,车牌识别技术已然成为目前研究的热点、重点问题之一。本文结合我国车牌的特殊性,对车牌识别系统所涉与的算法做了深入的研究,在基于前人的研究成果上提出了自己的改进。尤其是在字符识别部分,根据我国车牌的特殊组成提出了基于改进BP神经网络的多分类器。该分类器由3个子BP神经网络组成,即汉字网络、字母网络以与字母数字网络。与此同时,对于本文中所提与的算法都进行了相应的仿真,并对多得到的仿真结果做了分析。最后,综合对车牌识别系统的相关算法研究,在其基础上实现了一个小的车牌识别系统,根据仿真、测试结果表明,该系统具有实际应用的价值,甚至可以投入生产。尽管本次车牌识别系统得到改进,且效果显著,却仍然需要不断地改进,还需要大量提高算法的准确度和提高算法运行的速度。5.2展望车牌识别技术是基于数字图像处理和模式识别高度融合的一项技术,同时也是智能交通的一个重点、难点。由于受车牌特征的多样性、车牌本身的新旧程度原始图像的模糊程度、原始图像背景复杂性、以与一些人为的、客观的因素干扰,导致车牌识别系统设计的难度大大提高。至今,尚没有一个完全通用的车牌识别系统问世。本文中也还有许多不足的、有待改善的地方:(1)对于车牌图像模糊不清、背景复杂、光线不足等情况下,车牌定位的准确性较低,还有待提高;(2)本文所研究的车牌识别系统虽然可以对多车牌原始图像识别进行了研究,但其多车牌识别率比单车牌识别率低许多,这也就希望未来的研究对此能有更大的进展;(3)目前,所设计的车牌识别系统,只能针对于静止的图像进行识别,由于运动中的图像车牌识别处理比较复杂,故而希望在未来的车牌
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年弯曲机粉末冶金制品项目融资计划书
- 哈佛博弈论课件section
- 辽宁省盘锦市大洼区2023-2024学年七年级上学期期末考试数学试卷(含解析)
- 内蒙古包头市东河区2023-2024学年八年级上学期期末考试数学试卷(含答案)
- 养老院老人康复设施维修人员晋升制度
- 《个人纳税筹划》课件
- 《员工奖励与津贴》课件
- 《亲亲小动物主题墙》课件
- 挂靠租赁合同(2篇)
- 2024年牛羊养殖行业协会会员服务合同范本3篇
- 2023-2024学年高一下学期家长会 课件
- 溯源与解读:学科实践即学习方式变革的新方向
- 班克街教育方案
- 护理教育改革与创新研究
- 知识点总结(知识清单)-2023-2024学年人教PEP版英语六年级上册
- 社会医学课件第2章医学模式-2024鲜版
- 《囚歌》教学课件
- 2024年日历(打印版每月一张)
- 民法典银行培训课件
- 四年级下册数学单位换算题200道及答案
- 技术总监年度述职报告
评论
0/150
提交评论