欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于MATLAB的车牌识别系统的设计毕业设计.docx

    • 资源ID:92612735       资源大小:382.22KB        全文页数:17页
    • 资源格式: DOCX        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于MATLAB的车牌识别系统的设计毕业设计.docx

    基于MATLAB的车牌识别系统的设计毕业设计基于MATLAB的车牌识别系统的设计 摘 要:汽车车牌的识别系统是现代智能交通管理的重要组成部分之一。车牌识别系统使车辆管理更智能化,数字化,有效的提升了交通管理的方便性和有效性。车牌识别系统主要包括了图像采集、图像预处理、车牌定位、字符分割、字符识别等五大核心部分。本文主要介绍图像预处理、车牌定位、字符分割三个模块的实现方法。本文的图像预处理模块是将图像灰度化和用Roberts算子进行边缘检测的步骤。车牌定位和分割采用的是利用数学形态法来确定车牌位置,再利用车牌彩色信息的彩色分割法来完成车牌部位分割。字符的分割采用的方法是以二值化后的车牌部分进行垂直投影,然后在对垂直投影进行扫描,从而完成字符的分割。本文即是针对其核心部分进行阐述并使用MATLAB软件环境中进行字符分割的仿真实验。关键词:MATLAB、图像预处理、车牌定位、字符分割一、 发展背景车辆的牌照是机动车的识别标志,在交通管理中有着重要的作用。通过汽车车牌识别系统可以监控车辆的信息和行驶状况,可以最迅速的实现车辆控制以及交通状况的调控,所以对于现代智能交通至关重要。该系统主要有两大模块:图像处理模块和字符识别模块。本文主要对图像处理模块进行设计和研究。图像处理模块的质量好坏更是衡量整个系统成功与否的关键。MATLAB语言对于图像的处理非常方便,能够直接调用编好的函数,为整个系统提供了保障。二、 系统框架结构以及流程汽车车牌自动识别系统主要包括触发拍照、图像采集、图像预处理、车牌定位、字符分割、字符识别、输出结果等单元。图像采集车牌定位字符分割字符识别输出结果触发牌照图像预处理触发拍照:该单元会自动检测车辆在指定区域的存在,现有的成熟技术的有线圈触发、视频触发、红外触发、雷达触发以及激光触发。其中线圈触发和视频触发得到了广泛的应用。图像采集:该单元是指道路上安装的摄像头在检测到有车辆通过的同时进行拍照并借助网络传送到汽车自动识别系统。图像预处理:该单元是指车牌识别系统对拍摄的汽车图片进行灰度化和边缘检测等处理。车牌定位:是指对预处理过的汽车图片进行处理,把车牌部分进行定位,把无用的部分去除,得到定位好的车牌图片。字符分割:对已经定位的车牌图片的进行字符分割,将车牌分割为7个单一的字符图片。字符识别:将已经分割出来的七个字符进行识别。输出结果:输出识别结果,并进行数据存储。三、各模块的实现车牌识别系统包括图像采集、图像预处理、车牌定位、字符分割、字符识别等模块,本文主要研究图像预处理、车牌定位和字符分割三个模块。图像预处理(1)图像灰度化:因为车牌识别系统的摄像头拍摄的图片是彩色的,图片的背景颜色有时和车牌的颜色相似,而且彩色图片会占用较大的存储空间,使计算机处理速度变慢,加重计算机负担,所以我们要对拍摄的照片进行灰度化处理。对于将彩色图像转换成灰度图像时, 目前比较主流的灰度化方法叫平均值法,公式为: H=0.229R+0.588G+0.144B公式中H表示灰度图的亮度值;R代表彩色图像红色分量值;G代表色彩图像绿色分量值;B代表彩色图像蓝色分量值。RGB 三分量前的系数为经验加权值。加权系数的取值建立在人眼的视觉模型之上。对于人眼较为敏感的绿色取较大的权值; 对人眼较为不敏感的蓝色则取较小的权值。通过该公式转换的灰度图能够比较好地反应原图像的亮度信息。在MATLAB中我们可以调用im2gray函数对图像进行灰度化处理。(2)图像的边缘检测:边缘是指图像灰度发生空间突变或者在梯度方向上发生突变的像素的集合。用摄像机采集到的机动车图像由于受到噪声干扰以及车辆本身的影响,使得获得的图像质量不理想。因此,在进行对汽车牌照的定位及字符识别之前需要先对车辆图像进行边缘检测处理,提高图像的质量,使其易于后面的分割和识别。通过良好的边缘检测可以大幅度的降低噪声、分离出复杂环境中的车辆图像、保留完好的车牌字符信息,方便后面的车牌精确定位与字符识别。由于车牌识别系统摄像头安装位置固定以及机动车车牌的固有属性,我们可以发现机动车车牌图像都处在水平的矩形区域,在图像中位置较为固定,车牌中字符都是按水平方向排列。因为有这些明显的特征,经过适当的图像变换,可以清晰的呈现出车牌的边缘。本文采用经典的Roberts边缘检测算子来对图像进行边缘检测。灰度化和边缘检测的MATLAB程序如下:k=input('Enter the file name:','s');%ÊäÈë³µÅÆÕÕƬI=imread(k);imshow(I);figure(1),imshow(I);title('ԭͼ')I1=rgb2gray(I);figure(2),imshow(I1);title('»Ò¶Èͼ');I2=edge(I1,'roberts',0.15,'both');figure(3),imshow(I2);title('robertËã×Ó±ßÔµ¼ì²â')se=1;1;1;原始图片灰度图Robert算子边缘检测车牌定位和分割该系统的摄像头拍摄的图片是整个机动车的图片,而只有车牌部分是对系统有用的。所以我们要对照片进行车牌定位和分割。车牌的定位和分割是从经过图像预处理后的灰度图像中确定牌照位置,并将车牌部分从整个图像中分割出来,从而进行字符识别。车牌图像的灰度图的车牌部分是一个水平度很高的长方形图样,在原图中比较集中,且灰度值和周围图样有明显差异,因此很容易用边缘检测来对图像进行分割。车牌定位和分割的准确度直接关系到最后的字符识别的质量。对图像进行图像腐蚀除去图像杂质通过计算寻找X和Y方向车牌的区域完成车牌定位对定位后的彩色车牌的进一步处理车牌定位流程图(1)车牌定位机动车图像经过灰度化和边缘检测的处理后,边缘得到了加强,牌照区域已经非常明显。本文采用的是用数学形态学来进行图像处理和模式识别。数学形态学用具有一定形态的机构元素去量度和提取图像中的对应形状以达到对图像分析和识别的目的,能有效的去除噪声,保留图像原有信息的同时提取的边缘比较平滑,提取的图像骨架也比较连续,断点少。现在我们将经过预处理的图像进行图像腐蚀以及去除杂质,就可以得到相对准确的车牌位置。腐蚀后的图像平滑图像的轮廓从对象中移除小对象后图像(2)车牌分割本文车牌部分的分割采用的是利用车牌彩色信息的彩色分割法。使用统计彩色像素点的方法分割出车牌区域,确定车牌底色蓝色RGB对应的灰度范围,然后统计在行方向的颜色范围内的像素点数量,确定车牌在行方向的区域。然后,在分割出的行区域内,统计列方向蓝色像素点的数量,最终确定完整的车牌区域。车牌对位的图像(3)对定位后的彩色车牌的进一步处理定位后车牌图像是彩色的,会占用较大的存储空间,加重计算机负担。且车辆图片不可避免存在噪声,所以要对图像进行灰度化,二值化以及滤波处理。图像的二值化处理就是将图像上的点的灰度置为两个数值,通常为0或255,使整个图像呈现出明显的黑白效果。也就是将256个亮度等级的灰度图像通过适当的门限值选取而获得仍然可以反映图像整体和局部特征的二值化图像。滤波则是为了除去图像噪声。滤波方法有多种,本文采取的滤波方法为均值滤波。均值滤波是典型的线性滤波算法,指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素。再用模板中的全体像素的平均值来代替原来像素值。 车牌的进一步处理四、字符分割与归一化(1)字符分割将得到的车牌区域图像进行二值化处理后,对图像进行垂直投影,投影图上有明显的类似于峰谷的波形起伏变化, 通过对投影图上的波形从左向右进行扫描,根据谷和峰的特征就可以判断出每个字符的位置;计算垂直峰,检测合理的字符高宽比。在字符切割时,往往由于阈值取得不好,导致字符切割不准确,针对这种情况,可以对切割出的字符宽度进行统计分析,用以指导切割,对因错误切割过宽的字符进行分裂处理。字符分割后的图像(2)字符归一化处理由于数码相机拍摄的汽车图像大小不一样, 所以得到的牌照上的字符大小就不一样,为了便于字符的识别,需要对字符进行归一化处理。归一化处理的目的就是使车牌字符同标准模块里面的字符特征一样。而大小归一是指在长度和宽度方向上分别乘以一个比例因子,使其等于标准模块的字符大小,本文采用的大小归一的方法是分别从水平投影和垂直投影两个方向上对字符象素的大小进行归一化处理。 字符归一化后的图像五、结果和分析:通过以上实验步骤,我对多幅车牌图像进行了字符分割,字符分割的效果比较理想。下图为另一组实验组图。另一组实验结果组图字符分割效果理想主要取决于识别系统前期工作的到位。将得到的机动车照片进行灰度化和边缘检测处理,运用良好的技术手段进行车牌定位,将定位好的图像进行字符分割处理,得到七个字符,将字符归一化处理。整个过程使用MATLAB编程实现,能够直接调用函数,大大缩短了实验时间和编译难度。对于分割出的车牌,我们进行了均值滤波,膨胀和腐蚀处理,这样可以把字符之间的杂色点去掉,只留下白色的字符以及黑色的背景,这对于字符的分割是相当的必要的。在实验过程中,也出现了字符分割错误的情况,根据分析,造成错误情况的原因主要有:1.图像质量不高,导致分割出的车牌字符大小不一。2.车辆牌照的分割失败,尤其是车牌上第一个字符汉字的分割,常常因为过大或者过小导致分割失败。总体来说,分割出正确的字符的成功率还是蛮高的,如果再能够提高图像质量,分割正确字符的成功率还能够得到提升。主要参考文献1. 白利波 车牌检测与识别算法研究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.刘卫国 MATLAB程序设计与应用M.北京:高等教育出版社,20028. 成瑜 汽车牌照自动识别技术研究J.南京航空航天大学学报,2006,4:29-30k=input('Enter the file name:','s');%ÊäÈë³µÅÆÕÕƬI=imread(k);imshow(I);%I=imread('D:12311.jpg');figure(1),imshow(I);title('ԭͼ')I1=rgb2gray(I);figure(2),imshow(I1);title('»Ò¶Èͼ');I2=edge(I1,'roberts',0.15,'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);tic Blue_y=zeros(y,1); for i=1:y for j=1:x if(myI(i,j,1)=1) Blue_y(i,1)= Blue_y(i,1)+1;%À¶É«ÏñËصãͳ¼Æ end end end temp MaxY=max(Blue_y);%Y·½Ïò³µÅÆÇøÓòÈ·¶¨ PY1=MaxY; while (Blue_y(PY1,1)>=5)&&(PY1>1) PY1=PY1-1; end PY2=MaxY; while (Blue_y(PY2,1)>=5)&&(PY2<y) PY2=PY2+1; end IY=I(PY1:PY2,:,:); % X·½Ïò % Blue_x=zeros(1,x);%½øÒ»²½È·¶¨x·½ÏòµÄ³µÅÆÇøÓò for j=1:x for i=PY1:PY2 if(myI(i,j,1)=1) Blue_x(1,j)= Blue_x(1,j)+1; end end end PX1=1; while (Blue_x(1,PX1)<3)&&(PX1<x) PX1=PX1+1; end PX2=x; while (Blue_x(1,PX2)<3)&&(PX2>PX1) PX2=PX2-1; end PX1=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,'dw.jpg');filename,filepath=uigetfile('dw.jpg','ÊäÈëÒ»¸ö¶¨Î»²Ã¼ôºóµÄ³µÅÆͼÏñ');jpg=strcat(filepath,filename);a=imread('dw.jpg');b=rgb2gray(a);imwrite(b,'1.³µÅƻҶÈͼÏñ.jpg');figure(8);subplot(3,2,1),imshow(b),title('1.³µÅƻҶÈͼÏñ')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,'2.³µÅƶþֵͼÏñ.jpg');figure(8);subplot(3,2,2),imshow(d),title('2.³µÅƶþֵͼÏñ')figure(8),subplot(3,2,3),imshow(d),title('3.¾ùÖµÂ˲¨Ç°') % Â˲¨h=fspecial('average',3); %½¨Á¢Ô¤¶¨ÒåµÄÂ˲¨Ëã×Ó£¬averageÖ¸¶¨Ëã×ÓµÄÀàÐÍ£¬3ΪÏàÓ¦µÄ²ÎÊýd=im2bw(round(filter2(h,d); %ת»»Îª¶þֵͼÏñimwrite(d,'4.¾ùÖµÂ˲¨ºó.jpg'); %½«Í¼ÏñÊý¾ÝдÈ뵽ͼÏñÎļþÖÐfigure(8),subplot(3,2,4),imshow(d),title('4.¾ùÖµÂ˲¨ºó') % ijЩͼÏñ½øÐвÙ×÷% ÅòÕÍ»ò¸¯Ê´% 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,'5.ÅòÕÍ»ò¸¯Ê´´¦Àíºó.jpg'); %½«Í¼ÏñÊý¾ÝдÈ뵽ͼÏñÎļþÖÐfigure(8),subplot(3,2,5),imshow(d),title('5.ÅòÕÍ»ò¸¯Ê´´¦Àíºó') % Ñ°ÕÒÁ¬ÐøÓÐÎÄ×ֵĿ飬Èô³¤¶È´óÓÚijãÐÖµ£¬ÔòÈÏΪ¸Ã¿éÓÐÁ½¸ö×Ö·û×é³É£¬ÐèÒª·Ö¸îd=qiege(d); %Çиîm,n=size(d); %·µ»Ø¾ØÕóbµÄ³ß´çÐÅÏ¢£¬ ²¢´æ´¢ÔÚm¡¢nÖС£ÆäÖÐmÖд洢µÄÊÇÐÐÊý£¬nÖд洢µÄÊÇÁÐÊý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<=n-1 j=j+1; end k2=j-1; if k2-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=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 wide<y1 % ÈÏΪÊÇ×ó²à¸ÉÈÅ d(:,1:wide)=0; d=qiege(d); else temp=qiege(imcrop(d,1 1 wide m); m,n=size(temp); all=sum(sum(temp); two_thirds=sum(sum(temp(round(m/3):2*round(m/3),:); if two_thirds/all>y2 flag=1;word1=temp; % WORD 1 end d(:,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); figure(9);subplot(2,7,1),imshow(word1),title('1');figure(9);subplot(2,7,2),imshow(word2),title('2');figure(9);subplot(2,7,3),imshow(word3),title('3');figure(9);subplot(2,7,4),imshow(word4),title('4');figure(9);subplot(2,7,5),imshow(word5),title('5');figure(9);subplot(2,7,6),imshow(word6),title('6');figure(9);subplot(2,7,7),imshow(word7),title('7');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); subplot(3,7,15),imshow(word1),title('1');subplot(3,7,16),imshow(word2),title('2');subplot(3,7,17),imshow(word3),title('3');subplot(3,7,18),imshow(word4),title('4');subplot(3,7,19),imshow(word5),title('5');subplot(3,7,20),imshow(word6),title('6');subplot(3,7,21),imshow(word7),title('7');

    注意事项

    本文(基于MATLAB的车牌识别系统的设计毕业设计.docx)为本站会员(教****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开