《图像识别技术在智能车牌识别中的应用.docx》由会员分享,可在线阅读,更多相关《图像识别技术在智能车牌识别中的应用.docx(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 毕业设计(论文) 题 目 图像识别技术在智能车牌识别中的应用 学 院 电子信息学院 专 业 电子信息工程 学生姓名 刘夏佚 学号 159120611 指导教师 孙燕斌 职称 高级工程师 2019年 04月20 日 学生毕业设计(论文)原创性声明 本人以信誉声明:所呈交的毕业设计(论文)是在导师的指导下进行的设计(研究)工作及取得的成果,设计(论文)中引用他(她)人的文献、数据、图件、资料均已明确标注出,论文中的结论和结果为本人独立完成,不包含他人成果及为获得重庆工程学院或其它教育机构的学位或证书而使用其材料。与我一同工作的同志对本设计(研究)所做的任何贡献均已在论文中作了明确的说明并表示了谢
2、意。 毕业设计(论文)作者(签字): 年 月 日重庆工程学院本科生毕业设计 摘 要摘 要随着我国在中国特色社会主义道路下进入新时代,我国经济发展进入腾飞阶段,汽车使用数量每年都在增长,必须增强我国的交通管理效率。除了完善制度与法律之外,利用电子信息技术实现交通管理自动化也是提高效率的途径之一,也是我国科技发展的一大重要进程。车牌的自动识别技术是实现交通管理电子信息化与自动化的重要技术之一。本文旨在利用MATLAB对车牌识别系统的摄像头在指定区域拍摄车牌并识别的过程的算法进行仿真,对车牌识别系统的四大模块:预处理、车牌定位、车牌字符分割和车牌字符识别分别进行了设计。在预处理模块中配合本设计采用的
3、定位算法,对采集图像进行了灰度化、边缘检测等处理,同时对比了多种边缘检测算子的处理效果,选取了canny算子作为本设计的边缘检测算法。在车牌定位部分基于图像像素点的垂直投影对预处理后的图像进行了进一步的定位加工,初步定位了车牌在图像上的位置,然后通过删去二值化车牌图像两侧像素值为0的部分去除了初步定位车牌中的左右边框,实现了车牌的精确定位。字符分割部分同样基于二值化车牌图像像素点的垂直投影将二值化车牌上的字符从右到左分别分割了下来。在识别算法部分首选了模板识别法,并最终仿真出结果。在仿真结果中,本文成功完成了识别系统四个模块的设计,对采集到的数十张车牌图像进行了识别,又针对模板识别算法出现的部
4、分识别错误,最终改进为基于BP神经网络的识别算法,增强了识别正确率。关键词:MATLAB 车牌字符识别 车牌图形处理 重庆工程学院本科生毕业设计 ABSTRACT ABSTRACTWith China entering a new era under the road of socialism with Chinese characteristics, Chinas economic development has entered a stage of soaring, and the number of automobile use is increasing every year. We
5、must enhance the efficiency of traffic management in our country. In addition to improving the system and law, the use of electronic information technology to achieve automation of traffic management is also one of the ways to improve efficiency, but also an important process of the development of s
6、cience and technology in China. The automatic license plate recognition technology is one of the important technologies to realize the electronic information and automation of traffic management.In order to simulate the process of a license plate recognition system camera taking a license plate in a
7、 designated area and recognizing the license plate, this paper designs a processing program based on MATLAB to convert the license plate information carrier in the existing license plate photos from pictures to characters. The design process is transformed into four modules of the license plate reco
8、gnition system. Block: Preprocessing, License Plate Location, License Plate Character Segmentation and License Plate Character Recognition, designed the implementation algorithm, and finally simulated the results.In the simulation results, this paper successfully completes the design of four modules
9、 of the recognition system, recognizes dozens of license plate images collected, finds that the original recognition algorithm will have some recognition errors, and finally improves the recognition algorithm and enhances the recognition accuracy. Keywords:MATLAB;License Plate Character Recognition;
10、License Plate Graphics Processing重庆工程学院本科毕业设计 目 录目 录摘 要IABSTRACTII目 录11 绪 论11.1 研究背景11.2 课题的理论意义和研究价值11.3 开发环境和工具21.4 国内外研究现状简述21.5 设计系统分析22 车牌预处理42.1 图像预处理与车牌定位42.2 图像灰度化42.3 边缘检测52.4 形态学处理63 车牌定位93.1 车牌定位方法分类93.2 基于垂直投影的车牌定位加工93.2 车牌精定位之二值化103.3 车牌倾斜校正124 字符分割135 字符识别155.1 识别算法实现准备155.2 基于模板匹配的车牌字
11、符识别155.3 基于神经网络的字符识别算法165.4 仿真结果分析176 总结展望19致 谢21附 录221重庆工程学院本科生毕业设计 1 绪 论1 绪 论1.1 研究背景在过去的二三十年里,随着全球经济的不断发展和人民生活水平的不断提高,私人汽车的数量迅速增加,汽车的普及加快1。只依靠发展交通设施,无法解决汽车大量增加带来的一系列交通问题。因此,在发展交通设施的同时,大力发展现代智能交通系统,使道路建设与现代管理同步进行,已成为亟待解决的重大问题。近年来,道路交通管理系统朝着智能化方向不断发展。公路管理系统和交通管理信息系统的不断完善,为基于图像处理技术的交通管理系统的发展提供了契机。正是
12、在这样的背景下,开发了基于卫星通信的车牌自动识别与监控系统。由于本系统的信息传输介质为可以为卫星传输,不受地域限制。因此,无论身在何处,都可以了解车辆经过中央航站楼任何卫星分收费站的情况。因此,我们还可以从监控摄像机的视频中提取车辆牌照,从而了解车辆的各种信息。车牌识别技术的主要任务是对车辆图像进行分析和处理,自动识别车牌号。它广泛应用于需要车牌认证的重要场合,如不停车收费、被盗车辆检测、停车场管理、车辆通行证等,大大简化了人力劳动,消除了人为干扰,减少甚至消除了人为干扰。车牌识别系统可以对输入的汽车图像进行处理和识别,输出多个字符大小的字符串,在占用存储空间和与数据库连接方面具有无与伦比的优
13、势。因此车牌识别系统研究具有极大的现实意义2。而车牌字符识别是是车牌识别系统的核心。车牌字符识别是识别车牌上的数字、字母和汉字的有效、准确的过程。实际上,许多车辆的牌照都放在保险杠的上方或两侧。此外,车牌本身的污染和缺陷也会影响识别率。可见车牌识别技术需要继续进一步研究。1.2 课题的理论意义和研究价值鉴于道路交通负担越来越重,人们利用先进的科学技术开发了各种交通道路监控管理系统。这些系统通常包括车辆检测装置。通过这些装置,检测过往车辆,提取相关交通数据,实现对交通的监控、管理和引导。而车牌识别技术是车辆检测系统的重要组成部分。车辆唯一的标志是车牌,它与车辆的大部分重要信息有关。只要我们知道一
14、辆车的车牌号,跟踪大量的车牌号,就可以合理地管理大量的车辆,从而提高交通管理水平。从这个角度看,车牌识别技术于交通管理系统有其存在价值和研究。1.3 开发环境和工具开发环境:Microsoft Windows 7; 开发工具:Matlab 2017a; 采集设备:1000万像素手机拍照。1.4 国内外研究现状简述近二十年来国内外对车牌识别系统进行了研究。在车牌识别过程中使用了许多技术,但受到客观环境的影响,车牌识别效果并不理想3。而且,由于这些应用大多是实时应用,因此不必使用过于复杂的数值计算来获得更好的结果。目前,国内外研究机构经常采用红外照明技术和专用传感器来提高图像质量,提高车牌识别系统
15、的能力,但这样的处理会带来更高的成本。国内也有许多车牌自动识别的文章发表,随着模式识别与高新技术的发展,有诸多完善的识别系统算法日渐被提了出来。 本设计所采用的车牌定位方法、字符识别的改进算法也是最近才提出的新方法。未来车牌识别系统的发展趋势主要有以下几点。首先,使用车牌识别的不同场合对系统的重点有不同的要求,需要根据应用要求开发相应的产品。其次,目前识别系统集成不足。产品的每个部分都来自的制造商,兼容性较差。未来可以开发高集成度的产品,尽可能少的设备完成整个产品的建设。车牌识别产品的实际使用时间相对较短。随着计算机硬件和各种算法的发展,将取得很大的进步。与现有的识别产品相比,识别率和识别速度
16、有了进一步的提高。对污损、变形的车牌进行识别,可以达到一定的成功率,同时可以实时识别多个车牌。1.5 设计系统分析本设计是基于MATLAB编写了一个将已有车牌照片里的车牌信息载体由图片转换为字符的处理程序,以模拟车牌识别系统的摄像头在指定区域拍摄车牌并识别的过程,仅适用于本文所列出的或者参数相同的采集设备。本设计主要由四个部分组成,分别是图像预处理、车牌定位、字符分割、字符识别四个部分4。字符识别模块是车牌识别系统的核心部分,但识别效果很受前三个模块的影响。而前三个模块就是为了降低车牌识别受外部环境的干扰程度,如果前三个模块没将图像处理好,则识别算法就不能识别出正确结果。在前三个模块处理完好的
17、情况下,识别算法的识别准确率也取决于识别算法自身的种类,不同的识别算法,对不同的字符图像识别情况亦有所不同,所以分割出的单个字符图像在识别之前,也要根据不同的识别算法选取不同的归一化标准。为了优化车牌识别算法,对车牌识别的各个步骤进行了研究。最后总结出来,车牌识别算法(如图1.1所示)由以下步骤构成:19重庆工程学院本科生毕业设计 2 车牌预处理图 1.1车牌识别流程2 车牌预处理在自然环境中通过摄像头这类图像传感器可以得到自然状态下车牌图像,由此得到的车牌图像往往是彩色的。根据后面所选车牌定位方法,可以选择是否通过图像灰度化来去除图像的颜色信息,但车牌预处理阶段往往需要做到去除噪声、减少后续
18、算法的计算复杂度等效果。2.1 图像预处理与车牌定位图像预处理阶段与车牌定位息息相关,运用什么样的车牌定位方法就决定车牌图像预处理部分的操作,一类是通过图像的彩色信息来定位车牌,此类方法需要保留图像的色彩信息,从图像中通过一般车牌的颜色来确定图像中车牌的位置而将车牌分割出来;此类方法由于需要保留颜色信息所以运算复杂度较高,且容易被与车牌颜色相同的物体干扰。另一类就是根据车牌的灰度信息与轮廓信息来区分车牌部分与其它部分,此类方法舍弃了车牌的颜色信息,大大减少了运算复杂度,但此类方法对采集到的原始图像的尺寸大小以及拍摄位置的一致性要求比较高。综合各个因素以及本设计的性质,最终选取基于灰度图像的梯度
19、信息来作为本设计进行车牌定位的方法。而此方法就需要车牌的预处理部分做到灰度化、边缘检测、形态学处理等步骤,以便将车牌部分与图像其它部分区分开来。2.2 图像灰度化彩色图像中每个像素的信息由三种颜色构成:红(R)、绿(G)、蓝(B),所以一般彩色图像又被称为RGB图像。在RGB图像中有3种颜色通道,每种颜色有256阶亮度,所以在RGB图像中每个像素需要24位的存储空间,数据量远大于灰度图像。它不仅需要很长的时间来处理,而且还需要耗费较大的内存空间。根据一定的方法,将所有从纯黑色到纯白色的过渡色进行分级,分为不同等级的颜色称为灰度,一般分为256级(28个不同的灰度)。灰度图像是指每个像素点只有灰
20、度值的图像,每个像素只需要8位的存储空间,比采集设备采集到的原始RGB图像少用很多储存空间。将RGB图像转换为灰度图像,数据量可以大大减少。灰度化就是为三原色彩色图像装换为只有亮度信息的灰度图像。三原色彩色图像的R、G和B三个值的取值范围是0到255,而灰度图像每个像素点的取值范围仅有256个值。灰度处理方法主要有最大值法、平均值法、与加权平均法5。最大值法: R=G=B=max(R,G,B) (2.1)平均值法: R=G=B=R+G+B3 (2.2)加权平均法:根据重要性等指标,R、G和B赋予不同的权重,R、G和B等于其值的加权和平均值。由此得: R=G=B=(R*WR+G*WR+B*WR)
21、 (2.3)WR,WG,WB 分别为 R、G、B 的权值。本设计在MATLAB中调用了rgb2gray函数来实现对彩色图像的灰度化。rgb2gray函数是MATLAB自带的利用加权平均法对图形灰度化的函数。效果如图2.1所示图 1.1通过设备采集到的原始图像与灰度图像对比2.3 边缘检测如图2.1所示,原始图像在灰度化后,除车牌外还有诸多其它信息,需要将车牌部分与其它部分分割出来。原图中颜色的变化在灰度图像中表现为灰度的变化,而在RGB图像中以不同的颜色区分出了车牌与其它部分。灰度图中以灰度的急剧变化来区分车牌及其它范围,但由于摄像机在现实中所拍摄到的车牌照片处于比较复杂的环境,诸如光照、水渍
22、等因素,灰度图中急剧变化的部分并不一定就是图像中各部分的边界,此时就需要对灰度图像进行边缘检测,以将图像中各部分正确地区分出来,同时保留图形原有属性。常用的边缘检测算子一般有Prewitt算子、Sobel算子和Canny算子等。用这三种边缘检测算子分别对灰度图像的处理效果如图2.2所示:图 2.2从左往右分别为灰度图像、canny边缘检测、Prewitt边缘检测、Sobel边缘检测的效果通过对比各个边缘检测算子的边缘检测效果,发现Canny算子检测精度较高,且抗噪性良好,所以本设计最终选取canny算子进行边缘检测计算。canny算法可以分步概括为:图像降噪,第二步的阶梯算子在计算可能边缘时对
23、噪声比较敏感,很可能影响到计算结果,于是第一步就得对图像进行降噪;计算图像梯度,由于梯度与边缘都是灰度变化明显的地方,于是计算图像梯度能得到可能的图像边缘;非极大值抑制,保留灰度变化最大的部分,剔除灰度变化相对较小的部分,以降低边缘宽度;双阈值筛选,设置两个阈值进一步剔除梯度变化相对较弱的点,只保留具有梯度变化值两个阈值都超过的点的部分。在在MATLAB中具体可以编写为:输出图像=edge(输入图像,canny,a);其中a为参数。输出图像便是已经完成边缘检测计算的图形。2.4 形态学处理在通过canny算子边缘检测后的图像中有大量杂乱无关的点,考虑到车牌部分的梯度信息,即车牌部分有大量在竖直
24、方向上连续的点,可以通过腐蚀运算消除图像中在竖直方向不连续的点。而腐蚀运算的具体过程可以概括为利用一个矩阵扫描图像每一个像素,让矩阵与其扫描部分进行与运算,留下运算结果全为1的部分。根据在本设计中所采集的图像的尺寸大小。本设计最终采用1*4大小的矩形结构来进行腐蚀运算以消除在竖直方向上不连续的点。具体实现可以在MATLAB中调用imerode函数,具体可以编写为:腐蚀图像=imerode(边缘检测图像,1;1;1;1);在此函数中1;1;1;1表示用于扫描图像的矩阵,此处表示的是在竖直方向上连续的四个值为一的像素点。结果如图2.3所示: 图 2.3边缘检测图像及其腐蚀运算结果经过图像腐蚀后留下
25、来的点的位置信息包含了车牌所在区域的位置信息。接下来考虑运用膨胀运算将这些连续的点扩展为一个车牌的大小。膨胀运算是利用一个矩阵扫描图像每一个像素,让矩阵与其扫描部分进行与运算,除去运算结果全为0的部分。直观上来看,这会让图形中值为1的部分得到扩展。考虑到本设计中所用图像中车牌的大小,膨胀运算扫描所用矩阵的大小设定为25*25。在MATLAB中调用imclose函数以实现对腐蚀后的图像进行膨胀运算,运算结果如2.4图所示:图 2.4膨胀运算效果图经过膨胀运算后在竖直方向连续的点膨胀到了图像中一般车牌大小。但图像中仍然有大量不规则的白色区域。本设计在考虑到正确车牌区域与干扰区域的不同之处,利用了这
26、些区域中所包含像素点的多少来区别出部分干扰区域,为下一步的车牌定位减少了干扰。实际操作为在MATLAB中调用bwareaopen函数,设定删去1800个像素点以下的白色区域,该阈值在不同采集设备像素下而有所不同,具体可以编写为:输出图像=bwareaopen(输入图像,1800);在MATLAB中运算结果如图2.5所示: 图 2.5在膨胀运算后的图像中删去小于1800像素重庆工程学院本科生毕业设计 3 车牌定位3 车牌定位车牌定位指在车牌图像中找到车牌部分并独立分割出来,为后续的字符分割以及字符识别做准备。往往在车牌定位阶段出现瑕疵,就会直接导致识别结果不准确。3.1 车牌定位方法分类目前车牌
27、定位方法分主要分为两大类,一类是参考图像颜色信息的定位方法,这种方法参考了车牌背景色来进行定位,通过颜色的不同而将车牌部分区分出来,此种方法适用场景较广,能够在不同尺寸的车牌图像中把车牌部分定位出来。但对车牌上的污迹干扰比较敏感。另一类则是对采集到的车牌图像进行灰度化的一类定位方法,其中一种是在灰度化图像中利用其规则的纹理变化来检测相应的车牌区域;另一类是基于梯度信息,利用已形成的边缘检测算法提取图像的边缘信息,然后运用形态学运算找到车牌的位置与其它部分区别出来,再进一步的加工,使最终能够精确定位车牌,本设计就是运用了这种方法,且车牌图像预处理的步骤中对其进行了部分实施,接下来就是对预处理后的
28、车牌图像进一步加工,以精确定位车牌。3.2 基于垂直投影的车牌定位加工经过车牌图像的预处理,在原始图像上有了大概的定位。但仍需进一步加工才能更加精确地将车牌定位出来。在本设计中参考了预处理图像在水平方向与竖直方向上的像素点投影来进一步确定车牌所在位置。先从水平方向上对各行像素点数进行了统计,如图3.1所示: 图 3.1在预处理图像中各个行向量包含的像素点数可以看出车牌区域与干扰区域投影在水平方向上的像素点数的总量是有所不同的,经过车牌预处理阶段,车牌区域总有一行向量有最多的像素点数。只保留行向量像素点统计图中拥有最大值的波形即可,保存该波形的起始与终止位置。再在竖直方向上入手,可以从下图看出竖
29、直方向上像素点数波形是比较长的,本设计在但仍然可以统计每个列向量的像素点数,设定一个阈值来将车牌区域区分出来,且保存保留下来波形的起始终止位置,统计结果如3.2所示。图 3.2在预处理图像中各个列向量包含的像素点数最终确定了一个矩形区域,而车牌就在这个区域之中。这时我们可以将这个区域从原始图像中切割下来。本设计的车牌定位加工流程如图3.3所示:图3.3车牌定位加工流程3.2 车牌精定位之二值化在之前车牌的初步定位得到的彩色车牌图像中可以发现,仍然有部分非牌照区域,非牌照区域主要是车牌的左边框与右边框。同样可以利用统计车牌图像每一列的像素数量来区分牌照区域与非牌照区域,然后再进行分割。此时需要先
30、对初步定位的彩色车牌图像进行二值化处理。二值图像只包含黑白两种像素点,灰度值仅有0和1。一般1为白色,0为黑色。二值化图像相比灰度图像包含信息更少。车牌二值化是为能将字符部分与车牌背景区分出来。二值化的过程大致可以分为两个步骤:先确定一个阈值,再将每个像素的灰度值与阈值相比较。若灰度值小于阈值,则像素将转换为黑色,反之亦然,转换为白色。二值化处理阈值大小是比较重要的,太大或太小都会影响后面字符分割以及字符识别模块的运行。考虑车牌图像的性质,本设计采用最大类间方差法确定二值化处理的阈值。在MATLAB中调用graythresh函数就可以直接以最大类间方差法来确认阈值,在二值化之前再次将初步定位的
31、彩色车牌灰度化,具体代码编写如下:灰度图像=rgb2gray(彩色图像);阈值=graythresh(灰度图像);二值化图像=im2bw(灰度图像,阈值);运行结果如图3.4所示下:图 3.4图像二值化效果这时就可以对二值图像每一列的白色像素点数进行统计,以此分析二值车牌上的有用信息与无用信息。统计结果如图3.5所示下:图 3.5初步定位二值图像每一列像素统计由图3.5的统计信息可以看出,车牌的右边框有一列向量的白色像素点数不为0,但该列向量周围的列向量白色像素点数均为0,显然这一列向量不承载任何有用信息,考虑到有用字符的最短长度,可以设定一个长度阈值将长度小于这个阈值的白色斑块的值全部赋为0
32、,即将长度不达标的白色斑块变为黑色,从而达到去除部分干扰的目的。同时为了之后的字符分割做准备,需要将二值图像两边多余的黑色部分删去,此时需要运用到MATLAB中的imcrop函数,在MATLAB中具体编写形式如下:输出图像=imcrop(输入图像,x起点,y起点,x宽度,y宽度);其中将已经处理过的二值车牌图像作为输入图像,输出图像即完全定位好的车牌图像。切割部分的起点,宽度等值可以通过统计左右两端列向量上的像素点数,从两端的第一个列向量开始迭代,直到某列的白色像素点数不为0,记录此时最后一个列向量的坐标,便能确定切割部分的位置。经过以上步骤我们最终得到精确定位的车牌二值图像,如图3.6所示:
33、图 3.6经过精确定位的车牌二值图像可以看见经过精确定位的车牌二值图像仍有一些与车牌信息无关的小斑块,调用bwareaopen函数再次对定位后的车牌二值图像进行形态学滤波。其结果如图3.7所示:图3.7滤波之后的车牌二值图像3.3 车牌倾斜校正在采集设备实际拍摄过程中,总会各种各样客观环境的原因导致采集到的车牌原始图像会有所倾斜,为了方便接下来的字符分割,需要对倾斜的车牌图像进行校正。本设计使用Radon 变化法进行校正。Radon变换是一种利用给定角度的斜线上的像素之和对图像进行变换的方法。如果图像倾斜,则具有相应角度的倾斜相机将获得最多像素数。本设计中在MATLAB环境下在以下几步通过Ra
34、don变换实现了车牌倾斜角转换:首先调用radon 函数对之前精确定位中已经进行了二值化的车牌图像进行 Radon 变换,得到一个变换值;然后在得到的变换值中选取局部最大值,得出该值所对应的角度;最后调用imrotate 函数来对倾斜的二值化图像进行旋转以矫正车牌的倾斜度。这样旋转车牌的作用主要在于在分割字符时,在垂直方向上能将车牌背景部分与车牌字符部分区分出来以便在切割字符图像后识别算法能更容易地将车牌号码识别出来。重庆工程学院本科生毕业设计 4 字符分割4 字符分割在定位车牌的位置后,需要对车牌上的字符逐个进行识别,并输出。为了能够方便识别算法的识别,就需要将这些字符能逐个从车牌的二值化图
35、像中分割下来。本设计采用了基于二值化车牌图像像素点的垂直投影的分割算法,算法的原理是:先计算图片每列的白色像素数,每个文本将生成一个顶点,而文本的间隔位置将生成一个槽。算法步骤如下:首先从左到右扫描车牌图像,垂直投影每列,然后从左到右扫描车牌图像槽的位置;第一个槽为1号字符的左边界,第二个槽和第三个槽为1号字符的右边界,第二个槽和第三个槽分别为依次为2号字的边界,通过类比,找出所有字的左右边界。在确定每个字符的所有边界后,根据字符边缘的像素点数进行切割,得到每一个字符单独的图像。 该算法原理简单,处理速度快。但在处理汉字时容易受外界干扰,在投影汉字的左右结构时,很容易以汉字左右结构中间的槽作为
36、汉字的边界,将汉字的类型分为两个字符。基于这个问题,本设计对车牌第一个字符进行了特殊处理,于是从车牌最右的一个字符开始分割,由于字母与数字在垂直方向上的投影都是不间断的,不会经过像素点数量的判定而将字符分割成几部分,本设计这样处理的思路在于将字母与数字的字符都先从精确定位的车牌二值图像分割出去,剩下的就是汉字部分,此时只需剩余部分的右端无像素值为0的部分除去就行。在MATLAB中的具体分割处理为:可以先确定一个字符图像的左边框与右边框,然后再利用矩阵运算将字符图像分割出来。字符分割效果如图4.1所示:图4.1字符分割后的结果其中每一个字符图像的右边框是从上一次切割的左边框往左开始迭代的第一个白
37、色像素点数不为0的列向量,如果是最右边的首个字符,则右边框为从车牌二值图像最右边的第一个列向量往左开始迭代的第一个白色像素点数不为0的列向量,而左边框是从右边框往左开始迭代的第一个白色像素点数为0的列向量,在车牌右边的6个字母与数字被切割出来后,最后一次迭代出的左边框可以用作切割汉字的右边框的迭代起点,这样做能够有效避免汉字的偏旁被切割成两个图像,而汉字的右边框也是同样的往左迭代到第一个白色像素点数不为0的列向量,汉字的左边框可以从车牌二值图像最左边第一个列向量往右迭代到第一个白色像素点数不为0的列向量。在每一次分割字符时,可以用inwrite函数将分割出的字符图片保存下来,但由于每一个字符图
38、片保存下来需要不同的命名,这时就需要调用strcat函数以实现每一次保存下来的图片命名不同。实际可以编写为:imwrite(字符图像,strcat(命名,.jpg);其中命名需要每一次保存字符图像时都不同,可以与分割字符的迭代次数相关联,系统保存的字符图像如图4.2所示:图4.2系统保存下来的字符图像重庆工程学院本科生毕业设计 5 字符识别5 字符识别车牌图像的字符分割完成后,就能开始字符识别的算法模块了。字符识别模块是整个车牌识别系统的核心模块。字符识别的基本思想是通过算法将每种不同字符区分开来,然后将这些区分开的算法结果,标记出一一对应的字符标签,然后将这些一一对应的字符标签按顺序从识别算
39、法中输出,便完成车牌信息从图像到字符上的转换。字符识别是根据字符的特征来识别的,不同的字符有自己独特的特征,而与其他字符截然不同的特征称为有效特征。必须通过算法将具有不同有效特征的字符图像进行分类。目前,模板识别法和神经网络算法是车牌字符识别的主要方法。5.1 识别算法实现准备在具体算法实现之前,必须要将分割出来的字符图像一统一成标准大小,这直接影响了之后识别算法的实施,本设计此处调用了imresize函数对图像大小进行调整。在MATLAB中可以编写为:输出图像=imresize(输入图像, m n,bilinear);其中m与n是输出图像的高度与长度,bilinear表示改变图像尺寸所用的算
40、法,bilinear是指双线性插值算法,同时还可以写:nearest最近邻插值算法、bicubic 双三次插值算法。考虑到字符图像尺寸对两种识别算法的影响,可以对不同识别算法选取不同的分割字符图像的归一化标准。只需要利用imresize函数在不同的识别算法中前置一个参数不同的读取程序即可。对于模板匹配算法,可以将模板及分割字符图像的尺寸归一化标准设定得更大一些以提升模板识别法的识别准确度。而对于神经网络算法,则要将分割字符图像的尺寸归一化标准设定得小一些,以便减少训练时间。5.2 基于模板匹配的车牌字符识别该算法需要将字符图像与标准字符模板进行对比,根据每个像素的灰度值,统计分割完毕的字符图像
41、与标准字符模板具有相同灰度值的像素点数。具有相同像素点数最多的文本模板作为输出。该方法输入文本图像的质量要求较高。为了提高模板匹配的精度,往往会使用分辨率比较大的匹配模板。而使用较大分辨率的匹配模板又会增加一些计算难度,所以模板匹配法适用于样本较小的识别类型,而车牌识别正好符合这一条件。可以使用计算机自带的画图软件制作模板,先编辑文字再将图像输出。模板素材与待识别图像相匹配,必须将模板与待识别图像的大小调为一样,这里也可以使用imresize函数对模板进行调整。部分模板如图5.1所示:图 5.1部分识别模板模板识别法是通过计算分割出字符图像与每一个模板的相似度,然后输出相似度最大的那个模板所代
42、表的字符。若用Pi来表示分割出的字符与模板值相同的像素点数,则相似度Si可表示为: Si=PimaxPi (5.1)其中maxPi可以表示大小尺寸调整过的模板图像与分割出的字符图像的总像素点数。最终选取相似度最高的模板所代表的值作为输出结果。5.3 基于神经网络的字符识别算法基于神经网络的图像识别算法是先将神经网络训练成一种分类器。该算法有训练部分与工作部分。该算法基本过程为:训练样本输入网络后,计算得到每层神经元的输出,再计算实际输出与期望输出的误差,然后根据误差大小通过一定算法来调整网络的权值和阈值,再重新计算输出和期望输出之间的误差,又调整网络的权值重新进行计算,最终得到能够输出误差在规
43、定范围之内的神经网络,最后形成一个分类器。这个过程就是算法的训练阶段。完成训练的神经网络就能作为一个分类器进行字符识别。但这种方法需要大量的培训,实施难度较大。神经网络一般分为前馈型神经网络、反馈型神经网络、自组织型神经网络、随机型神经网络四种网络模型。根据实现车牌识别所需要的样本类型与数量,可以选用基于前馈型神经网络模型的识别算法作为车牌识别系统的最后一步。前馈型神经网络又称BP神经网络。通常采用Sigmoid函数来作为BP神经网络神经元之间的传递函数。BP网络由输入层、隐藏层和输出层组成。相邻层的神经元完全相连,但同一层的神经元之间没有联系。在BP神经网络三层网络中输入层与隐藏层对下一层的
44、输出可以表示为: yi=fi=0n-1xi- (5.2)其中y表示这层神经元向下层神经元输出的值,x表示这层神经元的值,i表示该层神经元节点标号,n表示该层的神经元节点数,前馈层与隐藏层、输出层的神经元数各不相同,指向下层神经元输出的计算权值,表示阈值。f(x)表示的是传递函数。为了使BP神经网络能够行使车牌识别中识别算法的作用。首先,输入层的神经元数量得与分割处理后且归一化的字符图像的像素点数相同,比如归一化后的字符分辨率为25*30,输入层的神经元数量就必须设定为750。其次,隐藏层的神经元数量一般比输入层与输出层的数量,这是由于隐藏层神经元数量过多容易造成过拟合等现象。最后,输出层的神经元数量应该要与需要识别的个体种类数量相一致,比如我们要同时识别字母与数字,输出层的神经元数量就该设定为34个(我国车牌号没有O与I两种字母)。在设定好神经网络的形式后,接下来就是通过训练来调整神经网络的参数以让神经网络能输出我们想要的结果