1、I4=imclose(I3,se);%图像聚类、填充图像subplot(3,2,5),imshow(I4),title(填充后图像I5=bwareaopen(I4,2000);%去除聚团灰度值小于2000的部分subplot(3,2,6),imshow(I5),title(形态滤波后图像y,x,z=size(I5);I6=double(I5);, Y1=zeros(y,1); for i=1:y for j=1:x if(I6(i,j,1)=1) Y1(i,1)= Y1(i,1)+1; end end temp MaxY=max(Y1); figure(); subplot(3,2,1),pl
2、ot(0:y-1,Y1),title(行方向像素点灰度值累计和),xlabel(行值),ylabel(像素%求的车牌的行起始位置和终止位置 PY1=MaxY; while (Y1(PY1,1)=50)&(PY11) PY1=PY1-1; PY2=MaxY; while (Y1(PY2,1)(PY2y) PY2=PY2+1; IY=I(PY1:PY2,:,: X1=zeros(1,x);, for i=PY1:PY2 if(I6(i,j,1)=1) X1(1,j)= X1(1,j)+1; end end subplot(3,2,2),plot(0:x-1,X1),title(列方向像素点灰度值累
3、计和列值像数%求的车牌的列起始位置和终止位置PX1=1; while (X1(1,PX1)3)&(PX1x) PX1=PX1+1; PX2=x; while (X1(1,PX2)PX1) PX2=PX2-1; PX1=PX1-1; PX2=PX2+1; %分割出车牌图像%dw=I(PY1:PY2,PX1:PX2,:subplot(3,2,3),imshow(dw),title(定位剪切后的彩色车牌图像) 车牌字符分割确定车牌位置后下一步的任务就是进行字符切分分离出车牌号码的全部字符图像。if isrgb(I)】 I1 = rgb2gray(I); %将RGB图像转化为灰度图像else I1=I
4、;g_max=double(max(max(I1);g_min=double(min(min(I1);T=round(g_max-(g_max-g_min)/3); % T 为二值化的阈值m,n=size(I1);% d:二值图像%h=graythresh(I1);I1=im2bw(I1,T/256);subplot(3,2,4);imshow(I1),title(二值化车牌图像I2=bwareaopen(I1,20);subplot(3,2,5);imshow(I2),title(形态学滤波后的二值化图像?y1,x1,z1=size(I2);I3=double(I2);TT=1;%去除图像顶
5、端和底端的不感兴趣区域%Y1=zeros(y1,1);y1x1 if(I3(i,j,1)=1) Y1(i,1)= Y1(i,1)+1 ;Py1=1;Py0=1;while (Y1(Py0,1)20)&(Py0=20)&(Py1 Py1=Py1+1;I2=I2(Py0:Py1,:subplot(3,2,6);目标车牌区域% 分割字符按行积累量%X1=zeros(1,x1);for j=1:figure(5);plot(0:x1-1,X1),title(累计像素量Px0=1;Px1=1;%分割字符for i=1:7 while (X1(1,Px0)(Px0=3)&(Px1x1)|(Px1-Px0)
6、10) Px1=Px1+1;| Z=I2(:,Px0:Px1,: switch strcat(Z,num2str(i) case Z1 PIN0=Z;Z2 PIN1=Z;Z3 PIN2=Z;?Z4 PIN3=Z;Z5 PIN4=Z;Z6 PIN5=Z; otherwise PIN6=Z; figure(3); subplot(1,7,i); imshow(Z); Px0=Px1;Endfunction inpt = pretreatment(I)%YUCHULI Summary of this function goes here% Detailed explanation goes here
7、else I1=I;I1=imresize(I1,50 20);%将图片统一划为50*20大小#I1=im2bw(I1,;inpt=zeros(1,m*n);%将图像按列转换成一个行向量nm inpt(1,m*(j-1)+i)=I1(i,j);/%神经网络进行识别。close all;clear all;%归一化训练样本%I0=pretreatment(imread();I1=pretreatment(imread(I2=pretreatment(imread(I3=pretreatment(imread(I4=pretreatment(imread(I5=pretreatment(imrea
8、d(I6=pretreatment(imread(I7=pretreatment(imread(I8=pretreatment(imread(I9=pretreatment(imread(I10=pretreatment(imread(I11=pretreatment(imread(I12=pretreatment(imread(I13=pretreatment(imread(I14=pretreatment(imread(I15=pretreatment(imread(I16=pretreatment(imread(I17=pretreatment(imread(:P=I0,I1,I2,I3
9、,I4,I5,I6,I7,I8,I9,I10,I11,I12,I13,I14,I15,I16,I17;%输出样本%T=eye(18,18);%bp神经网络参数设置net=newff(minmax(P),1000,32,18,logsig,trainrp1,1.initFcn =randnr;2,1.initFcn =训练样本%net,tr=train(net,P,T);%测试%I=imread(dw=location(I);%车牌定位PIN0,PIN1,PIN2,PIN3,PIN4,PIN5,PIN6=StringSplit(dw);%字符分割及处理%测试字符,得到识别数值%PIN0=pret
10、reatment(PIN0);PIN1=pretreatment(PIN1);PIN2=pretreatment(PIN2);PIN3=pretreatment(PIN3);PIN4=pretreatment(PIN4);PIN5=pretreatment(PIN5);PIN6=pretreatment(PIN6);P0=PIN0,PIN1,PIN2,PIN3,PIN4,PIN5,PIN6for i=2: T0= sim(net ,P0(:,i); T1 = compet (T0) ; d =find(T1 = 1) - 1 if (d=10) str=A elseif (d=11)C els
11、eif (d=12)G elseif (d=13)L elseif (d=14)M elseif (d=15)R elseif (d=16)H elseif (d=17)N else str=num2str(d); switch i case 2 str1=str; case 3 str2=str; case 4 str3=str; case 5 str4=str; case 6 str5=str; otherwise str6=str;end %显示定位后的分割出的车牌彩图,%识别结果以标题形式显示在图上%s=strcat(渝,str1,str2,str3,str4,str5,str6);imshow(dw),title(s);非诚勿扰 欢迎下载
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1