基于数字图像处理的车牌识别本科_第1页
基于数字图像处理的车牌识别本科_第2页
基于数字图像处理的车牌识别本科_第3页
基于数字图像处理的车牌识别本科_第4页
基于数字图像处理的车牌识别本科_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、本科生毕业论文(设计题目:基于数字图像处理的车牌识别设计姓名:周金鑫学院:数理与信息工程学院专业:电子信息工程班级:111学号:1665110130指导教师:刘纯利职称:教授2014年12月24日安徽科技学院教务处制目录TOC o 1-5 h z摘要3关键词3 HYPERLINK l bookmark2 1、设计目的3 HYPERLINK l bookmark4 2、设计原理:3 HYPERLINK l bookmark6 3、设计步骤:34、实行方案44.1.总体实行方案:44.2.各模块的实现:44.2.1输入待处理的原始图像:44.2.2图像的灰度化并绘制直方图:5 HYPERLINK

2、l bookmark12 4.2.3边缘检测6 HYPERLINK l bookmark14 4.2.4图像的腐蚀操作:74.2.5平滑图像8 HYPERLINK l bookmark18 4.2.6除去二值图像的小对象8 HYPERLINK l bookmark20 4.3车牌定位94.4字符的分割与识别11 HYPERLINK l bookmark22 4.4.1.车牌的再处理114.4.2字符分割13 HYPERLINK l bookmark26 4.5车牌识别:17 HYPERLINK l bookmark28 5、总结:206、致谢20 HYPERLINK l bookmark30

3、7、参考文献:21基于数字图像处理的车牌识别设计电子信息工程专业学生周金鑫指导教师刘纯利摘要:车牌识别在人类社会交通系统中担当重要角色,一个设计优良的车牌识别系统会给人们生活带来极大的方便,本文通过运用matlab和数字图像处理的一些知识简单通过图像预处理,车牌定位,字符分割,采用模板匹配法实现车牌字符的识别。关键词:图像预处理边缘处理字符分割字符识别1、设计目的车牌识别系统主要是为了辨别所拍图片中的车牌部分,以此识别车辆。通过车牌识别系统的设计,来实现经过我校西大门的车辆的识别。2、设计原理:设计的原理主要如下图所示:3、设计步骤:流程图如下:4、实行方案4.1.总体实行方案:用摄像机获取自

4、然环境下的汽车彩色图像,将彩色图像用matlab软件处理成灰度图像并绘制直方图,然后进行边缘检测图像的腐蚀,平滑图像以及去除二值图像的小对象等操作,再进行车牌的定位和字符分割与识别最终达到识别车牌照的目的。4.2.各模块的实现:4.2.1输入待处理的原始图像:I=imread(car.jpg);imshow(I);%显示车牌的原始图片,结果如下:核A5AN66图4.2.1原始图像picturel4.2.2图像的灰度化并绘制直方图:彩色图像的存储器所需的成本高,且减缓系统的速度执行,所以,在图像识别处理彩色图像一般都转换成灰度图像,以加快图像信息的处理速度。从彩色图像到灰度图像的转换叫做灰度处理

5、。灰度直方图的横坐标代表图片的像素数,从左到右由暗到亮,灰度直方图的纵轴就表示其所占有图片的面积,峰值越低就意味着该明暗值的像素数量越少,从图4.2.2可以看出峰值最高的即为车牌区域。Il=rgb2gray(I);%灰度处理subplot(l,2,l),imshow(Il);title(grayimage);subplot(l,2,2),imhist(Il);title(灰度图直方图);%绘制灰度图和直方图显示结果图像如下:!KB汀叵H曲l/匹弐連M电S灰度團直方團1C02G0图4.2.2灰度化并绘制直方图picture24.2.3边缘检测边缘是一定存在在两个拥有不一样灰度值的相邻的区域之间的

6、,是灰度值不连续的一种表现,也是分割图象、纹理和形状特征提取等图像分析的基础。本文用Roberts算子来实现边缘检测,他是一种利用局部差分算子寻找边缘的算子,Robert算子图像处理后结果边缘不是很平滑,当然还需要后续的腐蚀,平滑图像以及去除二值图像的小对象操作来提高精度。由于阈值越小检测的边缘越丰富,结合选取的灰度图选择阈值为0.16较为合适。用roberts算子实行边缘检测:I2=edge(I1,roberts,0.16,both);imshow(I2);title(robertsoperatoredgedetectionimage);结果如下:*rdnYrttaTcDMliWfiWnd=

7、5)&(PY11)PY1=PY1-1;endPY2=MaxY;while(Blue_y(PY2,1)=5)&(PY2y)PY2=PY2+1;endIY=I(PY1:PY2,:,:);%行方向车牌区域确定%X方向%Blue_x=zeros(l,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)&(PX1x)PX1=PX1+1;endPX2=x;while(Blue_x(1,PX2)PX1)PX2=PX2-1;endPX1=

8、PX1-1;%车牌区域校正PX2=PX2+1;dw=I(PY1:PY2-8,PX1:PX2,:);t=toc;subplot(1,2,1),imshow(IY),title(Linedirectionareas);%车牌行方向区域的确定subplot(l,2,2),imshow(dw),title(positioningcolorimages);%车牌已经定位后的区域显示如下:图4.3.1车牌的定位picture744字符的分割与识别4.4.1.车牌的再处理划分彩色图像需经过灰度变换,二值化,均值滤波,腐蚀和膨胀到一个字符,并对分割字符进二值化、归一化等图像预处理使车牌图像的车牌号字符分割构成

9、隔离,然后分析识别已经分割字符识的图像并用文本的车牌号的形式呈现出来。代码显示如下:imwrite(dw,dw.jpg);%把彩色车牌写入dw文件里a=imread(dw.jpg);%读取车牌文件数据b=rgb2gray(a);%把车牌图像变换为灰度图imwrite(b,graylicenceplate.jpg);%把灰度图像写入文件里subplot(3,2,1),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=

10、size(b);d=(double(b)=T);%d:二值图像imwrite(d,binarylicenceplate.jpg);subplot(3,2,2),imshow(d),title(beforefilteringbinarylicenceplate)%均值滤波之前%滤波h=fspecial(average,3);%模板的尺寸:3*3,average:均值滤波,建立滤波算子d=im2bw(round(filter2(h,d);%用指定的滤波器h然后对其均值滤波即进行dimwrite(d,afteraveragelicenceplate.jpg);subplot(3,2,3),imsho

11、w(d),title(afteraveragelicenceplate)%操作某些图象%膨胀或腐蚀%se=strel(square,3);%图片膨胀处理%line/diamond/ball.se=eye(2);%eye(n)returnsthen-by-nidentitymatrix单位矩阵m,n=size(d);ifbwarea(d)/m/n=0.36d=imerode(d,se);%假如大于0.36即图像进行腐蚀elseifbwarea(d)/m/n=0.23d=imdilate(d,se);%假如小于即实现膨胀操作endimwrite(d,expansionorcorrosionthel

12、icenceplate.jpg);subplot(3,2,4),imshow(d),title(expansionorcorrosionthelicenceplate);运行结果显示如下:图4.4.1字符分割与识别picture8442字符分割字符分割就是把已经定位好的车牌区域上的字符分别提取出来,我们知道中国的车牌上字符之间是存在间隙的,就是利用这个间隙来实现我们对定位区域的车牌分割,通过搜索连续在一起的字符块,若长度高于某一阈值,则为两个字符组成,要分割,对分割好的字符再进行归一化的处理。%搜索连续在一起的字符块,若长度高于某一阈值,则为两个字符组成,要分割,对分割建立子函数qiege、g

13、etword,调用子程序,分割车牌字符并做归一化的处理d=qiege(d);m,n=size(d);subplot(3,2,5),imshow(d),title(n)k1=1;k2=1;s=sum(d);j=1;whilej=nwhiles(j)=0j=j+1;endk1=j;whiles(j)=0&j=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=0.25;flag=0;word1=;whileflag=0m,n=size(d

14、);left=1;wide=0;whilesum(d(:,wide+1)=0wide=wide+1;endifwidey2flag=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(2,7,1

15、),imshow(word1),title(1);subplot(2,7,2),imshow(word2),title(2);subplot(2,7,3),imshow(word3),title(3);subplot(2,7,4),imshow(word4),title(4);subplot(2,7,5),imshow(word5),title(5);subplot(2,7,6),imshow(word6),title(6);subplot(2,7,7),imshow(word7),title(7);m,n=size(word1);%取40*20为归一化大小,如下word1=imresize(

16、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(2,7,8),imshow(word1),title(1);subplot(2,7,9),imshow(word2),title(2);subplot(2,7,10),imshow(word3),title(3);subplot(2,7

17、,11),imshow(word4),title(4);subplot(2,7,12),imshow(word5),title(5);subplot(2,7,13),imshow(word6),title(6);subplot(2,7,14),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);运行结果显示如下

18、:LJJB9f斗FW*P-口U33图4.4.2字符分割picture94.5车牌识别:在此采用相减的模板匹配法来判断字符和模板中哪一个字符最接近,再找到相似度最高的字符作为输出结果。通常车辆牌照的字符有7个,一般第一位是汉字,表示车辆所属的省份,而后的为字母和数字。车牌字符的识别较一般文字识别要简单些,主要是它的字符数是有限的,汉字一共约50多个,大写英文字母26个,数字10个。出于实验运算方便的考虑,本文仅建立了7个汉字26个字母与10个数字的模板。其他的模板算法与之相同。第一步取字符模板,第二步依次取待识别字符与模板进行匹配,第三步将选中的字符与模板字符相减,得到的零越多也即就越匹配。第四

19、步每一幅相减后的图的零值的个数都要保存,并作为识别出来的结果。识别的流程图显示如下:源代码显示如下:liccode=char(0:9A:Z皖豫苏鲁京沪津);%建立自动识别字符代码表SubBw2=zeros(40,20);l=1;forI=1:7ii=int2str(I);t=imread(ii,.jpg);SegBw2=imresize(t,4020,nearest);SegBw2=double(SegBw2)20;ifl=1%第一位汉字的识别kmin=37;kmax=43;elseifl=2%第二位AZ字母的识别kmin=11;kmax=36;elsel=3%第三位后面识别字母或数字kmin

20、=1;kmax=36;endfork2=kmin:kmaxfname=strcat(字符模板,liccode(k2),.jpg);SamBw2=imread(fname);SamBw2=double(SamBw2)1;fori=1:40forj=1:20SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);endend%2张图相减得到第3张图Dmax=0;fork1=1:40forl1=1:20if(SubBw2(k1,l1)0|SubBw2(k1,l1)0)Dmax=Dmax+l;endendendError(k2)=Dmax;endErrorl=Error(kmin:km

21、ax);MinError=min(Errorl);findc=find(Errorl=MinError);Code(l*2-l)=liccode(findc(l)+kmin-l);Code(l*2)=;1=1+1;endpicture(10),imshow(dw),tit1e(车牌号码:,Code,Co1or,b);FilsEditViewInsertToolsDe-skt&pWindowHe-lpH耄脅遍型銘k盘Qg图4.5.1车牌识别picture105、总结:实验对车牌识别系统的识别主要依靠的工具是matlab软件编程,分别从图像预处理、车牌定位、字符分割以及字符识别等方面进行了系统的分

22、析。从本设计用MATLAB编程运行结果可以得出,对于一张自然环境下牌照照片进过本设计采用的图像预处理、roberts算子进行边缘检测、删除二值图像的小对象、车牌识别等对车牌的定位都是非常有效的。经过这段时间的不断努力我的毕业设计终于搞定了。当你踏踏实实完成毕业设计时你会发现他不仅可以检验前面所学知识,而且也可以提高对自己的自学能力。通过这次的毕业论文设计让我对matlab软件的认识和对数字图像处理的相关知识有了较深的理解,让我了解到知识的学习是一步一个脚印,学习不仅要靠之间的努力专研,还学要虚心求教,有什么不懂不会的不能钻牛角尖,多和同学和老师进行交流,在老师的悉心指导下我学起知识那是非常的迅速,有时问题理解不过来往往是某个知识点不会活着不理解,一担有人在旁稍微指导一下就会豁然开朗。这次毕业设计让我自己的学习更

温馨提示

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

评论

0/150

提交评论