车牌识别系统设计报告.doc_第1页
车牌识别系统设计报告.doc_第2页
车牌识别系统设计报告.doc_第3页
车牌识别系统设计报告.doc_第4页
车牌识别系统设计报告.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

车牌识别系统设计报告目录一、 背景1二、 目的和意义21) 目的22) 意义2三、 设计原理2四、 实现步骤21) 总体设计方案22、 基于蓝色的车牌定位与提取33、 对提取出来的车牌进行预处理44、 字符分割与归一化处理45、 识别输出5对字符进行主成分分析并用最近邻分类器与模板库进行分类匹配,识别输出5五、 结果及分析6六、 总结7七、 体会8八、 参考文献8九、 源码81、 背景随着公路逐渐普及,我国的公路交通事业发展迅速,所以人工管理方式已经不能满着实际的需要,微电子、通信和计算机技术在交通领域的应用极大地提高了交通管理效率。汽车牌照的自动识别技术已经得到了广泛应用。本汽车牌照识别系统整个处理过程分为基于蓝色的车牌定位、预处理、字符分割、字符识别四大模块,其中字符识别过程主要由以下3个部分组成:1、正确地分割文字图像区域;2、正确的分离单个文字;3、正确识别单个字符。用MATLAB软件编程来实现每一个部分,最后识别出汽车牌照。在研究的同时对其中出现的问题进行了具体分析,处理。2、 目的和意义1) 目的1、巩固数字图像处理该门课上所学的知识理论,加以实践,学以致用。2、锻炼动手能力,激发研究潜能,提高协作精神。2) 意义车牌识别系统的目的在于正确获取整个图像中车牌的区域,并准确分割文字图像区域进而通过模板匹配分类识别出车牌号。通过设计实现车牌识别系统,不仅能够提高自身分析问题和解决问题的能力,还能培养一定的科研能力和团队合作能力。3、 设计原理由于车辆牌照是机动车唯一的管理标识符号,在交通管理中具有不可替代的作用,并且校园违章停放的车辆又太多,因此车辆牌照识别系统应具有很高的识别正确率,对环境光照条件、拍摄位置和车辆行驶速度等因素的影响应有较大的容阈,并且要求满足实时性要求。该系统是计算机图像处理与模式识别技术相结合的应用,它主要由牌照区域的定位和提取、预处理、牌照字符的分割和识别等几个部分组成,如图1 所示。其基本工作过程如下:图11)读取一张带有蓝色牌照的图片。2)对蓝色牌照进行定位并提取。3)对提取的牌照进行灰度化,二值化,滤波,膨胀或腐蚀等预处理。4)分割出单个字符,经归一化后进行主成分分析并用最近邻分类器与模板库进行分类匹配,识别输出。4、 实现步骤1) 总体设计方案车辆牌照识别整个系统主要是由车牌定位、车牌切割和字符识别三部分组成。为了用于牌照的分割和牌照字符的识别,原始图象应具有适当的亮度,较大的对比度和清晰可辩的牌照图象。牌照的定位和分割是牌照识别系统的关键技术之一,其主要目的是确定牌照的具体位置,并将包含牌照字符的一块子图象从整个图象中分割出来,供字符识别子系统识别之用,分割的准确与否直接关系到整个牌照字符识别系统的识别率。由于拍摄时的光照条件、牌照的整洁程度的影响,和摄像机的焦距调整、镜头的光学畸变所产生的噪声都会不同程度地造成牌照字符的边界模糊、细节不清、笔划断开或粗细不均,加上牌照上的污斑等缺陷,致使字符提取困难,进而影响字符识别的准确性。因此,需要对字符在识别之前进行一次针对性的处理。车牌识别的最终目的就是对车牌上的文字进行识别。主要应用的为主成分分析和最近邻分类的方法。因为系统运行的过程中,主要进行的都是图像处理,在这个过程中要进行大量的数据处理,所以处理器和内存要求比较高,程序调试时使用的是win8+matlab。2) 各个模块的实现1、 读取带有蓝色车牌的图片图22、 基于蓝色的车牌定位与提取图33、 对提取出来的车牌进行预处理图44、 字符分割与归一化处理图5字符分割:在汽车牌照自动识别过程中,字符分割有承前启后的作用。它在前期牌照定位的基础上进行字符的分割,然后再利用分割的结果进行字符识别。字符识别的算法很多,因为车牌字符间间隔较大,不会出现字符粘连情况,所以此处采用的方法为寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割。 图6字符归一化:一般分割出来的字符要进行进一步的处理,以满足下一步字符识别的需要。但是对于车牌的识别,并不需要太多的处理就已经可以达到正确识别的目的。在此只进行了归一化处理,然后进行后期处理。图75、 识别输出对字符进行主成分分析并用最近邻分类器与模板库进行分类匹配,识别输出图8图95、 结果及分析通过以上的方法,我对多幅带有蓝色拍照的图像进行了检测,有较好的定位识别效果(切割效果良好的情况下,切割算法需要提升改进)。下面是对一幅车牌照的检测,结果如图所示:图10对于光照条件不理想的图象,可先进行图象增强处理(本系统未进行前期图像预处理,所以受关照强度影响明显),使得图象灰度动态范围扩展和对比度增强,再进行定位和分割,这样可以提高分割的正确率(网上有相关文献介绍)。本系统采用了色彩通道的牌照区域分割算法充分利用了牌照图象的色彩信息,简化了算法的实现,加快了图象的处理速度,具有较高的检出正确率,而且整个过程用MATLAB 语言编程实现,无时间滞后感,可以满足实时检出的要求。但是在设计的过程中发现,使用另一幅图像(浅蓝或光照不充分或拍摄距离太远)后,识别效果始终没有那么理想。故需要对车牌蓝色区域调用调色板查看RGB的值后做一定的设置后才能识别出相应的字符。在车牌字符分割后的字符预处理中,用到了对分割出的字符进行均值滤波,膨胀或腐蚀的处理。这在对于有杂点的车牌是很有用的,因为这样可以把字符与字符之间的杂色点去除,只有白色的字符和黑色的背景存在,这样有利于的字符分割进行。字符识别过程使用的是主成分分析并用最近邻分类器与模板库进行分类匹配的方法。模板库的制作很重要,必须要用大量的模板进行学习训练,否则就不能正确的识别或识别率较差。对于识别错误情况的分析可知,主要原因:1、牌照自身的污渍等影响了图象的质量;2、牌照字符的分割失败导致的识别错误;3、再就是部分字符的形状相似性,比如,B 和8;A 和4 等字符识别结果可能发生混淆的情况。总之,尽管目前牌照字符的识别率还不理想,但是只要在车牌预处理、字符切割等环节上再完善,进一步提高识别率是完全可行的。6、 总结本文主要解决了以下几个问题:一、在背景的图象中如何定位分割牌照区域;二、对分割下来的牌照字符如何提取具有分类能力的特征;三、如何设计分类器。在车辆牌照字符识别系统的研究领域,近几年出现了许多切实可行的识别技术和方法,从这些新技术和方法中可以看到两个明显的趋势:1、单一的预处理和识别技术都无法达到理想的结果,多种方法的有机结合才能使系统有效识别能力提高。在本系统的设计时,也汲取了以上一些算法的思想,结合实际,反复比较,综合分析;2、在有效性和实用的原则下,结合神经网络和人工智能的新技术的应用是研究的一个方向;3、利用主成分分析的统计学思想结合最近邻、K近邻、最小距离等多分类器集成分类也是不错的方向。而本系统就采用了第3种方法,还达到了不错的效果。根据车牌特点,一般采用的车牌定位算法有:1.边缘检测定位算法;2.利用哈夫变换进行车牌定位;3.色彩分割提取车牌等。本系统采用的是色彩分割的方法来实现定位的。字符分割的方法也有多种:1. 基于聚类分析的字符分割;2. 投影分割的方法;3.基于模板匹配的字符分割等。最常用的是投影分割,主要是针对在车牌定位,图像预处理后比较规则的车牌图像。优点是程序逻辑设计简单,循环执行功能单一,便于设计和操作,程序执行时间短。字符识别的基本方法通常有三类:1.结构特征分析方法;2.模板匹配法;3.神经网络法。此处采用的是模板匹配的方法,即是将要识别的字符与事先构造好的模板进行比对,根据与模板的相似度的大小来确定最终的识别结果。但是系统本身还存在许多不足,距离具体实用的要求仍有很大差距,但我却在这次课程设计中学到了很多知识。7、 体会课程设计不仅是对数字图像处理这门课所学知识的一种检验,而且也是对自己能力的一种提高。通过这次课程设计使我对模式识别有了更深入的认识。这个课程设计让我学到了很多东西,涉及到方方面面的知识,在这整个过程中我们查阅了大量的资料,得到了小组成员的大力帮助,我在此对他们表示谢意。在这期间遇到了很多困难,我们知道做什么都不容易,只能塌下心来,一步一个脚印的去完成才行。这学期我们学习了数字图像处理这门课程,在这个课程设计中应用到了很多其中的知识。理论只有应用到实际中才能学着更有意义。学习是一个长期积累的过程,在后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。过程中感受到了小组成员的积极性,更加注重团队合作了。8、 参考文献1、 王刚,冀小平. 基于MATLAB的车牌识别系统的研究.2、 宋建才汽车牌照识别技术研究叨3、 陈永超. 基于数字图像处理的车牌识别研究4、 王璐. 基于 MATLAB的车牌识别系统研究5、 张 引,潘云鹤.面向车辆牌照字符识别的预处理算法6、 郁梅等.基于视觉的车辆牌照检测9、 源码function wchy_testok()fn, pn=uigetfile(*.*,选择图片);I=imread(pn, fn);Plate=Car_location(I);figure,imshow(Plate);a=imread(savedw.jpg);d=Img_process(a);Img_cat(d);Recognition();endfunction TrainSamples,dir1=Tra_img_processing(path) dir1=dir(strcat(path,*.jpg); filename=; for i=1:size(dir1,1) filename=filename;cellstr(dir1(i).name); end fsize=length(dir1); for i=1:fsize img=imread(path,cell2mat(filename(i); img=imresize(img,40,20); pic(i,:)=double(reshape(img,1,); end TrainSamples=pic;endfunction Name,wchy=Recognition()path=.字符模板;TrainSamples,dir1=Tra_img_processing(path);W_PCA=PCA(TrainSamples);tra = W_PCA*TrainSamples; str=;for i=1:7img=imread(save,num2str(i),.jpg);img=imresize(img,40,20);test=double(reshape(img,1,);test=test; tes = W_PCA*test; I=Min(tra,tes);str=str,I; endwchy=;Name=;for i=1:7 wchy=wchy,dir1(str(i).name(1); Name=Name;dir1(str(i).name;endfunction e=qiege(d)m,n=size(d);top=1;bottom=m;left=1;right=n; % initwhile sum(d(top,:)=0 & top=1 bottom=bottom-1;endwhile sum(d(:,left)=0 & left=1 right=right-1;enddd=right-left;hh=bottom-top;e=imcrop(d,left top dd hh);function W_PCA=PCA(TrainSamples),trsize=size(TrainSamples);smalle = 10.(-5); % 一个小数字阈值xm = mean(TrainSamples,2); TrainSamples = TrainSamples - repmat(xm,1,trsize); % 训练样本及中心化size(TrainSamples*TrainSamples);W e explain = pcacov(TrainSamples*TrainSamples);r = length(find(esmalle);W = W(:,1:r); e = e(1:r); W_PCA = TrainSamples*W*diag(1./sqrt(e); % SVD方法求解PCA endfunction I=Min(ProjectedTrainSamples,ProjectedTestSamples)u,v=size(ProjectedTrainSamples);Mindest(v)=0;for xm=1:v for ym=1:u diff(ym)=ProjectedTrainSamples(ym,xm)-ProjectedTestSamples(ym,1); end for ym=1:u Mindest(xm)=Mindest(xm)+(diff(ym).*diff(ym); endendDistance=sqrt(Mindest);% 对距离进行排序%=dis是排序后的序列,ind是打乱后的下标=%dis,ind=sort(Distance); %从小到大排序qx=ind(1);I=qx;endfunction d=Img_process(I)d=rgb2gray(I);imwrite(d,save灰度化.jpg); g_max=double(max(max(d);g_min=double(min(min(d);T=round(g_max-(g_max-g_min)/3); % T 为二值化的阈值m,n=size(d);d=(double(d)=T); % d:二值图像imwrite(d,save二值化.jpg); % 滤波h=fspecial(average,3);d=im2bw(round(filter2(h,d);imwrite(d,save滤波.jpg); % 某些图像进行操作% 膨胀或腐蚀% 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);endimwrite(d,save膨胀或腐蚀.jpg); endfunction Img_cat(I)% 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割d=qiege(I);m,n=size(d);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=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=;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); endend% 分割出第27个字符word2,d=getword(d);word3,d=getword(d);word4,d=getword(d);word5,d=getword(d);word6,d=getword(d);word7,d=getword(d); m,n=size(word1); % 商用系统程序中归一化大小为 40*20,此处演示word1=imresize(word1,40 20);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); imwrite(word1,save1.jpg);imwrite(word2,save2.jpg);imwrite(word3,save3.jpg);imwrite(word4,save4.jpg);imwrite(word5,save5.jpg);imwrite(word6,save6.jpg);imwrite(word7,save7.jpg);endfunction 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 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(su

温馨提示

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

评论

0/150

提交评论