《车牌识别的matlab程序--(详细注释,并有使用注意点)》由会员分享,可在线阅读,更多相关《车牌识别的matlab程序--(详细注释,并有使用注意点)(11页珍藏版)》请在人人文库网上搜索。
1、附录车牌识别程序清除;关闭全部;获取%Step1图像,读入处理对象的彩色图像,显示原图像Scolor=imread(3.jpg) %imread函数读取图像文件将%彩色图像转换为黑白显示s gray=RGB2gray (scolor ) % RGB2gray被转换为灰度figure、imshow(Scolor )和title (原始彩色图像) %figure命令显示两个图像图像、imshow(Sgray )、title (原始黑白图像)%Step2图像预处理Sgray打开原始黑白图像得到图像背景s=strel (盘,13) %strel函数打开gray=impen(gray,s) sgray 。
2、s图像输出图像、imshow(Bgray) title (背景图像) %背景图像减去%原始图像和背景图像,强调图像EBgray=imsubtract(Sgray,gray) %2图减法输出图像、imshow(Egray) title (扩展黑白图像) %黑白图像%Step3获取最佳阈值,将图像二值化fmax1=双倍(max (egray ) ); 以%egray的最大值输出倍精度型fmin1=双精度(min (egray ) ); %egray的最小值和输出倍精度类型等级=(fmax1- (fmin1)/3 )/255; 获取%最佳阈值将bw22=im2bw(Egray,level) %图像转。
3、换为二进制图像bw2=双精度(bw22 )%Step4对得到的二值图像进行开闭操作进行过滤figure、imshow(bw2) title (图像的二值化) %得到二值图像用grd=edge(bw2,canny)ny算子识别强度图像中的边界figure、imshow(grd) title (图像边缘提取) %输出图像边缘bg1=imclose(grd,strel(rectangle, 5,19 ) ); 取%矩形框的闭运算图像关闭运算 5,19 ;imshow(bg1) title; 输出%闭运算的图像bg3=imopen(bg1,strel(rectangle, 5,19 ) ); 进行%矩。
4、形框的运算图像、显示(bg3 ) title (图像运算 5,19 ); 输出%运算后的图像bg2=imopen(bg3,strel(rectangle, 19,1 ) ); 进行%矩形框的运算图像、显示(bg2 ) title (图像运算 19,1 ); 输出%运算后的图像%Step5提取二值图像区域,计算区域特征参数。 进行区域特征参数的比较,提取车牌区域L,num =bw label (bg2,8 ) %标记二进制图像的连接部分计算Feastats=imfeature(L,basic) %图像区域的特征大小Area=Feastats.Area; %区域面积边界盒= FEA stats .。
5、边界盒; %xridheight车牌的帧大小RGB=label 2将RGB (l,spring,k,shuffle) %标志图像转换为RGB图像figure,imshow(RGB) title (图像颜色标记) %输出帧的彩色图像lx=0;for l=1:numwidth=边界盒(l-1 ) * 43 ) %帧宽度的计算hight=边界盒(l-1 ) * 44 ) %帧高度的计算if (width 98 width 160 highet 25 highet 50 ) %框架的宽度和高度范围因照片而异,可以通过终端操作来更改! 啊! 啊!lx=lx 1;Getok(lx)=l;结束结束for k。
6、=1:lxl=Getok(k )开始呼叫=边界盒(l-1 ) *4)-2; %开始列开始=边界盒(l-1 ) *4)-2; %开始行width=边界盒(l-1 ) *43 ) 8; 汽车牌照宽度高度=边界盒(l-1 ) *4) 2; 车牌很高。rato=width/hight; 计算%车牌的纵横比if rato2 rato4%也需要根据情况进行变更。 例如3-6等break;结束结束获取sb w1=bw2 (startrow : startrowhighet,startcol:startcol width-1) %车牌二值子图获取subcol1=gray (startrow : startro。
7、whighet,startcol:startcol width-1) %车牌灰度子图figure、subplot(2、1、1 )、imshow(subcol1) title (车牌灰度图) %输出灰度输出subplot(2、1、2 )、imshow(sbw1) title (车牌二值子图) %车牌二值图计算%Step6车牌的水平投影,对水平投影进行谷分析计算histcol1=sum(sbw1) %垂直投影计算histrow=sum(sbw1) %水平投影figure、subplot(2、1、1 )、bar(histcol1) title (垂直投影(带框) ) %输出垂直投影subplot (。
8、2,1,2 ),bar(histrow ); title (横向投影) %输出水平投影figure,subplot (2,1,1 ),bar(histrow) title (横向投影(带边框) ) %输出水平投影subplot(2、1、2 )、imshow(sbw1) title (车牌二值子图) %输出二值图表%水平投影为峰值谷分析求meanrow=mean(histrow) %水平投影的平均求出minrow=min(histrow) %水平投影的最小值级别行=(最小行)/2; 求%水平投影的平均计数1=0;l=1;for k=1:hightif histrow(k)=levelrow计数1。
9、=计数11;elseif计数1=1标记行(l )=k; 上升%点标记行1 (l )=计数1; %谷宽(从下降点到下一个上升点)l=l 1;结束计数1=0;结束结束标记row2=diff (标记row ) %峰值距离(从上升点到下一个上升点)m1,n1=size (标记行2 )n1=n1 1;标记行(l )=高;标记行1 (l )=计数1;标记行2 (n1 )=标记行(l ) -标记行(l-1 )l=0;for k=1:n1标记行3 (k )=标记行(k1 ) -标记行1 (k1 ) %下降点标记行4 (k )=标记行3 (k ) -标记行(k ) %峰值宽度(从上升点到下降点)标记行5 (k 。
10、)=标记行3 (k ) -双行(单元16 (标记行4 (k )/2 ) ); %峰值中心位置结束计算%Step7车牌旋转角度%(1)从上升点到下降点首先找一点m2,n2=size(sbw1) %sbw1的图像大小m1,n1=size (标记行4 ) %标记行4的大小maxw=max (标记row4) %最大宽度是字符if标记row4(1)=maxw %检测上边ysite=1;k1=1;for l=1:n2for k=1:标记行3 (y site ) %从顶部扫描到第一个峰值下降点PS PS K1(k,l)=1xdata(k1)=l;y数据(k1 )=k;k1=k1 1;break;结束结束结束。
11、else %检测下ysite=n1;if标记行4 (n1 )=0if标记行4 (n1-1 )=maxwysite=0; 没有%以下elseysite=n1-1;结束结束if ysite =0k1=1;for l=1:n2k=m2;while k=markrow(ysite) %从底边到最后峰值的上升点扫描PS PS K1(k,l)=1xdata(k1)=l;y数据(k1)=k;k1=k1 1;break;结束k=k-1;结束结束结束结束%(2)线性拟合,计算与x的角度fresult=fit(xdata,ydata,poly1) %poly1 Y=p1*x p2p1=fresult.p1;ang。
12、le=atan(fresult.p1)*180/pi; %弧度换算为度、360/2pi、pi=3.14%(3)旋转车牌图像subcol=imrotate(subcol1、angle、bilinear、crop) %旋转车牌图像旋转sbw=imrotate(sbw1,angle,bilinear,crop) %图像figure、subplot(2、1、1 )、imshow(subcol) title (车牌灰度图) %输出车牌旋转后的灰度图像标题显示车牌灰度图subplot(2、1、2 )、imshow(sbw) title (); 输出%车牌旋转后的灰度图像title(车牌旋转角:num2st。
13、r (角度),度),Color,r ); 显示%车牌的旋转角度旋转%Step8牌照后,重新计算牌照的水平投影,脱离牌照的水平界线,获取字符的高度计算histcol1=sum(sbw) %垂直投影计算histrow=sum(sbw) %水平投影图像、辅助(2、1、1 )、bar(histcol1) title (垂直投影(旋转后) );subplot (2,1,2 ),bar(histrow ); title (水平投影(旋转后) );图像,辅助(2,1,1 ),bar(histrow) title (水平投影(旋转后) );subplot(2、1、2 )、imshow(sbw) title (。
14、车牌二值子图(旋转后)去掉%水平(上下)的边框,获取文字的高度最大高度=max (标记行2 )findc=find (标记row2=max hight )row top=标记row (findc )row bot=标记row (find C1 ) -标记row1(find C1 )sbw2=sbw(rowtop:rowbot,) %子图是(rowbot-rowtop 1)行maxhight=rowbot-rowtop 1; %字符的高度(rowbot-rowtop 1)计算%Step9车牌的垂直投影,去除车牌的垂直边界线,取得车牌和文字的平均宽度计算histcol=sum(sbw2) %垂直投。
15、影figure、subplot(2、1、1 )、bar(histcol) title (垂直投影(画水平边界线后) )输出车牌的垂直投影图像输出subplot(2、1、2 )、imshow(sbw2) %垂直投影图像title(车牌字符高度:int2str (最大) color,r; 输出%车牌字符高度%垂直投影为峰值谷分析求meancol=mean(histcol) %垂直投影的平均求出mincol=min(histcol) %垂直投影的平均levelcol=(meancol mincol)/4; 求出%垂直投影的1/4count1=0;l=1;for k=1:widthif histcol(k)=levelcol计数1=计数11;elseif计数1=1标记颜色(l )=k; %字符上升点标记颜色1 (l )=计数1; %谷宽(从下降点到下一个上升点。