1 / 22
文档名称:

基于matlab的车牌识别系统的设计与实现剖析.pdf

格式:pdf   大小:3,329KB   页数:22页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基于matlab的车牌识别系统的设计与实现剖析.pdf

上传人:1781111**** 2024/5/11 文件大小:3.25 MB

下载得到文件列表

基于matlab的车牌识别系统的设计与实现剖析.pdf

相关文档

文档介绍

文档介绍:该【基于matlab的车牌识别系统的设计与实现剖析 】是由【1781111****】上传分享,文档一共【22】页,该文档可以免费在线阅读,需要了解更多关于【基于matlab的车牌识别系统的设计与实现剖析 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..:...。。。实验总结14主要参考文献15附录16实验体会21基于MATLAB勺车牌识别系统的设计:..引言介绍当前的发展背景车辆的牌照是机动车的识别标志,,可以最迅速的实现车辆控制以及交通状况的调控,所以对于现代智能交通至关重要。该系统主要有两大模块:。图像处理模块的质量好坏更是衡量整个系统成功与否的关键。语言对于图像的处理非常方便,能够直接调用编好的函数,为整个系统提供了保障。1。设计原理车牌识别系统的摄像头通过对经过指定区域的机动车辆进行拍照,因为照片会受到光照、拍摄位置和车辆行驶速度的影响,导致拍摄的图片不能准确的确定汽车的车牌。而车牌识别系统就通过对机动车辆的照片进行图像预处理、车牌定位、字符分割、字符识别等技术手段,从而得到清晰的机动车牌照的照片,从而提高现代智能交通的管理效率,。系统框架结构汽车车牌自动识别系统主要包括触发拍照、图像采集、图像预处理、车牌定位、字符分割、字符识别、输出结果等单元。图2—1车牌识别系统工作流程图:..触发拍照:该单元会自动检测车辆在指定区域的存在,现有的成熟技术的有线圈触发、视频触发、红外触发、雷达触发以及激光触发。其中线圈触发和视频触发得到了广泛的应用。图像采集::该单元是指车牌识别系统对拍摄的汽车图片进行灰度化和边缘检测等处理。车牌定位:是指对预处理过的汽车图片进行处理,把车牌部分进行定位,把无用的部分去除福到定位好的车牌图片。字符分割:对已经定位的车牌图片的进行字符分割,将车牌分割为7个单一的字符图片字符识别:将已经分割出来的七个字符进行识别。输出结果:输出识别结果,,:该系统主要是由图像处理和字符识别两部分组成。其中图像处理部分包括图像预处理、边缘提取模块、牌照的定位以及分割模块。字符识别部分可以分为字符分割与特征提取和单个字符识别两个模块。字符识别部分要求照片清晰,但由于该系统的摄像头长时间在室外工作,加上光照条件、摄像头角度和距离、车辆自身条件以及车辆的行驶速度的影响,想拍出较理想的图片很困难。因此,我们要对摄像头拍摄的图片进行预处理,,其作用是在经图象预处理后的灰度图象中确定牌照的具体位置,并将包含牌照字符的一块子图象从整个图象中分割出来,供字符识别子系统识别之用,分割的准确与否直接关系到整个牌照字符识别系统的识别率。车牌识别系统的最终目的就是将不清楚的车牌照片进行识别,输出清晰的图片。现在字符识别的常用方法有模板匹配法和神经网络模型法。4。各模块的实现车牌识别系统包括图像采集、图像预处理、车牌定位、字符分割、字符识别等模块,本文主要研究图像预处理、车牌定位和字符分割三个模块.:..:因为车牌识别系统的摄像头拍摄的图片是彩色的,图片的背景颜色有时和车牌的颜色相似,而且彩***片会占用较大的存储空间,使计算机处理速度变慢,加重计算机负担,***像转换成灰度图像时,目前比较主流的灰度化方法叫平均值法,公式为:H=0229R+0588G+0144Bo公式中H表示灰度图的亮度值;R代表彩***像红色分量值;G代表色彩图像绿色分量值;B代表彩***像蓝色分量值。RGB三分量前的系数为经验加权值。加权系数的取值建立在人眼的视觉模型之上。对于人眼较为敏感的绿色取较大的权值对人眼较为不敏感的蓝色则取较小的权值。通过该公式转换的灰度图能够比较好地反应原图像的亮度信息。在MATLAB中我们可以调用im2gray函数对图像进行灰度化处理。:0边缘是指图像灰度发生空间突变或者在梯度方向上发生突变的像素的集合。用摄像机采集到的机动车图像由于受到噪声干扰以及车辆本身的影响,使得获得的图像质量不理想。因此,在进行对汽车牌照的定位及字符识别之前需要先对车辆图像进行边缘检测处理,提高图像的质量,、分离出复杂环境中的车辆图像、保留完好的车牌字符信息,方便后面的车牌精确定位与字符识别。由于车牌识别系统摄像头安装位置固定以及机动车车牌的固有属性,我们可以发现机动车车牌图像都处在水平的矩形区域,在图像中位置较为固定,车牌中字符都是按水平方向排列。因为有这些明显的特征,经过适当的图像变换,可以清晰的呈现出车牌的边缘。:I=imread('zhaopiajipg');figure(1),imshow(I);title('原图’)I1=rgb2gray(I);figure(2),imshow(I1);title('灰度图');:..15,'bothfigure(3),imshow(I2);title('Robert边缘检测'):..4-1原始图片图4-2灰度图图4-3Robert算子边缘检测:..该系统的摄像头拍摄的图片是整个机动车的图片,而只有车牌部分是对系统有用的。所以我们要对照片进行车牌定位和分割。车牌的定位和分割是从经过图像预处理后的灰度图像中确定牌照位置,并将车牌部分从整个图像中分割出来,从而进行字符识别。车牌图像的灰度图的车牌部分是一个水平度很高的长方形图样,在原图中比较集中,且灰度值和周围图样有明显差异,。图4—4车牌定位流程图4。2。1车牌定位机动车图像经过灰度化和边缘检测的处理后,边缘得到了加强,牌照区域已经非常明显。本文采用的是用数学形态学来进行图像处理和模式识别。数学形态学用具有一定形态的机构元素去量度和提取图像中的对应形状以达到对图像分析和识别的目的,能有效的去除噪声,保留图像原有信息的同时提取的边缘比较平滑,提取的图像骨架也比较连续,断点少。现在我们将经过预处理的图像进行图像腐蚀以及去除杂质,就可以得到相对准确的车牌位置。:..腐蚀后的图像图4-:..图4—。使用统计彩色像素点的方法分割出车牌区域,确定车牌底色蓝色RGB寸应的灰度范围,然后统计在行方向的颜色范围内的像素点数量,,在分割出的行区域内,统计列方向蓝色像素点的数量,定位后的影色车牌塔像行方向区域5JAHD8最终确定完整的车牌区域。图4—,会占用较大的存储空间,加重计算机负担。且车辆图片不可避免存在噪声,所以要对图像进行灰度化,,通常为0或255,使整个图像呈现出明显的黑白效果。也就是将256个亮度等级的灰度图像通过适当的门限值选取而获得仍然可以反映图像整体和局部特征的二值化图像。滤波则是为了除去图像噪声。滤波方法有多种,本文采取的滤波方法为均值滤波。均值滤波是典型的线性滤波算法,指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素。再用模板中的全体像素的平均值来代替原来像素值。:..—9车牌的进一步处理:..。3字符分割与归一化图4-10。,对图像进行垂直投影,投影图上有明显的类似于峰谷的波形起伏变化,通过对投影图上的波形从左向右进行扫描,根据谷和峰的特征就可以判断出每个字符的位置;计算垂直峰,检测合理的字符高宽比。在字符切割时,往往由于阈值取得不好,导致字符切割不准确,针对这种情况,可以对切割出的字符宽度进行统计分析,用以指导切割,对因错误切割过宽的字符进行分裂处理。图4-:..。3。2字符归一化处理由于数码相机拍摄的汽车图像大小不一样,所以得到的牌照上的字符大小就不一样,为了便于字符的识别,。而大小归一是指在长度和宽度方向上分别乘以一个比例因子,使其等于标准模块的字符大小,本文采用的大小归一的方法是分别从水平投影和垂直投影两个方向上对字符象素的大小进行归一化处理。图4-12字符归一化后的图像5实验结果和分析.:通过以上实验步骤,我对多幅车牌图像进行了字符分割,字符分割的效果比较理想。下图为另一组实验组图。:..定位后的影色草牌品博LI前字符分割效果理想主要取决于识别系统前期工作的到位将得到的机动车照片进行灰度化和边缘检测处理,运用良好的技术手段进行车牌定位,将定位好的图像:..编程实现,能够直接调用函数,大大缩短了实验时间和编译难度。对于分割出的车牌,我们进行了均值滤波,膨胀和腐蚀处理,这样可以把字符之间的杂色点去掉,只留下白色的字符以及黑色的背景,,也出现了字符分割错误的情况,根据分析,造成错误情况的原因主要有:,导致分割出的车牌字符大小不一。2。车辆牌照的分割失败,尤其是车牌上第一个字符汉字的分割,常常因为过大或者过小导致分割失败。总体来说,分割出正确的字符的成功率还是蛮高的,如果再能够提高图像质量,,我觉得有几个方面还可以进行改进。,利用哈夫变换进行车牌定位以及色彩分割提取车牌等,本文采用的是边缘检测定位算法。还有字符的分割,本文采用的是投影分割法,常见的方法聚类分割法以及基于模板匹配的分割方法。我认为对于以上各模块的实现,应该采用多种实验对照,看对于不同情况的照片质量,哪种算法更好,因为,以上处理方法都有自己的侧重方面,对于不同的图片,各种算法的优势是不同的,所以我觉得,对于实际应用的车牌识别系统,应该是具有复杂结构,对于拍摄到的车辆照片进行分析,选择更适合的算法来实现车牌的识别,这才是未来车牌识别系统的发展方向。:..。白利波车牌检测与识别算法研究[D]北京交通大学,2007,30-31。2,谢盛嘉梁克敏车牌识别系统的设计与实现[J]微计算机信息2010(6)3,王刚冀小平基于MATLAB勺车牌识别系统的研究[J]电子设计工程2009(11)4。王广宇车辆牌照识别系统的原理及算法研究[D]郑州大学20005。崔江王友仁。车牌自动识别方法中的关键技术研究[J]计算机测量与控制,2003。11(4)6,许志影李晋平。MATLAB&图像处理中的应用[J],计算机与现代化,2004(4)7,刘卫国MATLA卸序设计与应用[M,北京:高等教育出版社,20028。成瑜汽车牌照自动识别技术研究[J]o南京航空航天大学学报,2006,4:29-30:..:figure(1),imshow(I);title('原图')I1=rgb2gray(I);figure(2),imshow(I1);title('灰度图');I2=edge(I1,'robert:105,'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);ticBlue_y=zeros(y,1);fori=1:yforj=1:xif(myI(i,j,1)==1)Blue_y(i,1)=Blue_y(i,1)+1;%蓝色像素点统计endendend[tempMaxY]=max(Blue_y);%Y方向车牌区域确定PY1=MaxY;while((Blue_y(PY1,1)>=5)&&(PY1>1))PY1=PY1-1;endPY2=MaxY;while((Blue_y(PY2,1)>=5)&&(PY2<y))PY2=PY2+1;endIY=I(PY1:PY2,:,:);%%%%%%X方向%%%%%%%%%Blue_x=zeros(1,x);%进一步确定x方向的车牌区域forj=1:xfori=PY1:PY2if(myI(i,j,1)==1)Blue_x(1,j)=Blue_x(1,j)+1;endendendPX1=1;while((Blue_x(1,PX1)<3)&&(PX1<x))PX1=PX1+1;endPX2=x;:..3)&&(PX2>PX1))PX2=PX2-1;endPX1=PX1—1;%对车牌区域的校正PX2=PX2+1;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,'dwjpg);[filename,filepath]=uigetfile('','输入一个定位裁剪后的车牌图像‘);jpg=strcat(filepath,filename);a=imread('dw。jpg');b=rgb2gray(a);imwrite(b,‘。jpg');figure(8);imshow(b),title('’)g_max=double(max(max(b)));g_min=double(min(min(b)));T=round(g_max—(g_max-g_min)/3);%T为二值化的阈值[m,n]=size(b);d=(double(b)〉=T);%d:二值图像imwrite(d,'。jpg');figure(9),imshow(d),title(’’)figure(10),imshow(d),title(’’)%滤波h=fspecial('average'3);d=im2bw(round(filter2(h,d)));imwrite(d,'4。均值滤波后。jpg');figure(11),imshow(d),title('4。均值滤波后')%某些图像进行操作%膨胀或腐蚀%se=strel('square,3);%使用一个3X3的正方形结果元素对象对创建的图像进行膨胀%'line'/'diamond'/'ball'o。.se=eye(2);%eye(n)returnsthen—by—nidentitymatrix单位矩阵[m,n]=size(d);ifbwarea(d)/m/n〉==imerode(d,se);elseifbwarea(d)/m/n〈==imdilate(d,se);endimwrite(d,'5。膨胀或腐f4处理后。jpg');figure(12),imshow(d),title('’)%寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割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;whilej~=nwhiles(j)==0j=j+1;end:..whiles(j)=0&&j<=n-1j=j+1;endk2=j-1;ifk2—k1>=round(n/6。5)[val,num]=min(sum(d(:,[k1+5:k2—5])));d(:,k1+num+5)=0;%分割endend%再切割d=qiege(d);%切割出7个字符y1=10;y2=;flag=0;word1=[];whileflag==0[m,n]=size(d);left=1;wide=0;whilesum(d(:,wide+1))~=0wide=wide+1;endifwide<y1%认为是左侧干扰d(:,[1:wide])=0;d=qiege(d);elsetemp=qiege(imcrop(d,[11widem]));[m,n]=size(temp);all=sum(sum(temp));two_thirds=sum(sum(temp([round(m/3):2*round(m/3)[,:)));iftwo_thirds/all>y2flag=1;word1=temp;%WORD1endd(:,[1:wide])=0;d=qiege(d);endend%分割出第二个字符[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,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,[4020]);word2=imresize(word2,[4020]);word3=imresize(word3,[4020]);word4=imresize(word4,[4020]);word5=imresize(word5,[4020]);word6=imresize(word6,[4020]);word7=imresize(word7,[4020]);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')functione=qiege(d)[m,n]=size(d);top=1;bottom=m;left=1;right=n;%initwhilesum(d(top,:))==0&&top<=mtop=top+1;endwhilesum(d(bottom,:))==0&&bottom>=1bottom=bottom—1;endwhilesum(d(:,left))==0&&left<=nleft=left+1;endwhilesum(d(:,right))==0&&right〉=1right=right-1;enddd=right—left;hh=bottom-top;e=imcrop(d,[lefttopddhh]);function[word,result]=getword(d)word=口;flag=0;y1=8;y2=0。5;whileflag==0[m,n]=size(d);wide=0;:..—2wide=wide+1endtemp=qiege(imcrop(d,[11widem]));[m1,n1]=size(temp);ifwide<y1&&n1/m1〉y2d(:,[1:wide])=0;ifsum(sum(d))=0d=qiege(d);%切割出最小范围elseword=口;flag=1;endelseword=qiege(imcrop(d,[11widem]));d(:,[1:wide])=0;ifsum(sum(d))~=0;d=qiege(d);flag=1;elsed=[];endendend%endresult=d;实验体会:回想起做车牌识别系统的论文的这一段经历,从最初的不知道从哪里下手,到对整个系统有了一点认识,再到对各模块有了初步的了解?最后到我对整个系统各个模块的实现,离不开帮助过我的人们。指导老师的耐心解答,同学的热心帮忙,自己的努力,终于我完成了车牌识别系统的设计。对此对帮助过我的人们表示感谢。在这个过程中?我不仅是了解了车牌识别系统的构造以及各个模块的实现方法,,各个模块的实现以及模块之间的整合,再到最后的修正,其中的算法的选择,模块的整合连接,都是非常巧妙的。深入了解后,更是十分佩服。通过这次的车牌识别系统的论文我明白了,,当我把理论知识弄明白之后,就认为自己对知识掌握了.:..还提高了我的信心和动手能力,我想这会对我以后的生活和工作有很大的积极意义的。