毕业设计]基于MATLAB的车牌识别系统的源代码(可以实现).doc_第1页
毕业设计]基于MATLAB的车牌识别系统的源代码(可以实现).doc_第2页
毕业设计]基于MATLAB的车牌识别系统的源代码(可以实现).doc_第3页
毕业设计]基于MATLAB的车牌识别系统的源代码(可以实现).doc_第4页
全文预览已结束

下载本文档

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

文档简介

k=input(Enterthefilename:,s);%输入车牌照片im=imread(k);imshow(im);im_gray=rgb2gray(im);im_gray=medfilt2(im_gray,3,3);%对图像进行中值滤波Image=im2bw(im_gray,0.2);BW=edge(im_gray,sobel);%找出图像边缘imx,imy=size(BW);%计算图像大小msk=00000;01110;01110;01110;00000;B0=conv2(double(BW),double(msk);%对边缘区域进行加强se=ones(2,80);B1=imdilate(B0,se);%figure;%imshow(B1);B2=imerode(B1,se);%figure;%imshow(B2);se=ones(20,2);B3=imdilate(B2,se);%figure;imshow(B3);B4=imerode(B3,se);%figure;imshow(B4);se=ones(50,2);B5=imdilate(B4,se);%figure;imshow(B5);B6=imerode(B5,se);%figure;imshow(B6);%对边界图进行小区域连通,使车牌区域连通为一个方块B,L=bwboundaries(B6,4);imshow(label2rgb(L,jet,.5.5.5)%对连通区域进行标记holdonfork=1:length(B)%用线条给连通区域标上边界线boundary=Bk;plot(boundary(:,2),boundary(:,1),w,LineWidth,2)endstats=regionprops(L,Area,Centroid);%找到每个连通域的质心fork=1:length(B)%循环遍历每个连通域的边界boundary=Bk;%获取一条边界上的所有点delta_sq=diff(boundary).2;perimeter=sum(sqrt(sum(delta_sq,2);%计算边界周长area=stats(k).Area;%获取边界所围面积metric=27*area/perimeter2;%计算匹配度metric_string=sprintf(%2.2f,metric);%要显示的匹配度字串ifmetric=0.85&metric1000%截取出匹配度接近1且面积大于1000像素的连通域centroid=stats(k).Centroid;plot(centroid(1),centroid(2),ko);%提取该连通域所对应在二值图像中的矩形区域goalboundary=boundary;s=min(goalboundary,1);e=max(goalboundary,1);goal=imcrop(Image,s(2)s(1)e(2)-s(2)e(1)-s(1);endtext(boundary(1,2)-35,boundary(1,1)+13,metric_string,Color,g,FontSize,14,FontWeight,bold);%显示匹配度字串endgoal=goal;%对截取图像进行反色处理figure;imshow(goal);a,b=size(goal);fori=a/2:-1:1%从图像水平中轴开始向上扫描,当白点数少于每行总点数的1/10时,停止扫描,并将该行定义为车牌字符区域的上限num=0;forj=1:bifgoal(i,j)=1num=num+1;endendifnum(b*0.1)line_up=i;break;endendfori=a/2:a%从图像水平中轴开始向下扫描,当白点数少于每行总点数的1/10时,停止扫描,并将该行定义为车牌字符区域的下限num=0;forj=1:bifgoal(i,j)=1num=num+1;endendifnum(b*0.1)line_down=i;break;endendgoal=goal(line_up:line_down,1:b);%根据之前定义的上下限截取车牌字符区域figure;imshow(goal);%显示车牌字符区域a,b=size(goal);row=zeros(18);now=1;flag=0;forj=1:b%对截取出的字符区域进行竖列扫描,并取每列总点数的1/10作为阈值点,当每列的白点数从阈值以上掉落到阈值以下或从阈值以下上升到阈值以上时,记录该列的横坐标num=0;fori=1:aifgoal(i,j)=1num=num+1;endendifflag=0ifnum0.1*arow(now)=j;now=now+1;flag=0;endendendifrow(3)-row(2)10%判断扫描出的第二块区域(扫描到的第二列与第三列之间)是否包含有效字符,如包含,则将扫描到的第二列定义为字符分割的起始列;否则,则定义第一列为起始列now=2;elsenow=1;endfigure;l1=0;l2=0;fork=1:8m=row(now);n=row(now+1);temp=goal(1:a,m:n);point=0;%扫描每一个字符图片的白点数fori=1:aforj=1:n-miftemp(i,j)=1point=point+1;endendendifpoint0.4*a*(n-m)&nm%当扫描到的白点数小于总点数的2/5时放弃输出(有可能是车牌上的点状分隔符)l2=l2+1;%l2用来记录识别出的字符数subplot(1,7,l2);x(k)=code(temp);%调用子程序进行字符扫描,并返回字符的ASCII码x(k)=uint8(x(k);ifx(k)0%当所选区域不为空时进行输出l1=l1+1;%l1用来记录输出的字符数s(l1)=char(x(k);endtemp(32,32)=0;imshow(temp);endnow

温馨提示

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

评论

0/150

提交评论