figure,imshow(bg3);title('图像开运算[5,19]'); %输出开运算的图像 bg2=imopen(bg3,strel('rectangle',[17,1])); %取矩形框的开运算 figure,imshow(bg2);title('图像开运算[19,1]'); %输出开运算的图像
%%%%%%%求的车牌的行和列起始位置和终止位置%%%%%%%%%
[y,x,z]=size(bg2); I6=double(bg2); 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 end
[temp MaxY]=max(Y1);
figure();subplot(3,2,1),plot(0:y-1,Y1),title('行方向像素点灰度值累计和'),xlabel('行值'),ylabel('像素'); PY1=MaxY;
while ((Y1(PY1,1)>=50)&&(PY1>1))%行像素 PY1=PY1-1; end
PY2=MaxY;
while ((Y1(PY2,1)>=50)&&(PY2 IY=Scolor(PY1:PY2,:,:); X1=zeros(1,x); for j=1:x for i=PY1:PY2 if(I6(i,j,1)==1) X1(1,j)= X1(1,j)+1; end end end subplot(3,2,2),plot(0:x-1,X1),title('列方向像素点灰度值累计和'),xlabel('列值'),ylabel('像数'); %%%%%%%求的车牌的行和列起始位置和终止位置%%%%%%%%% PX1=1; while ((X1(1,PX1)<3)&&(PX1 while ((X1(1,PX2)<3)&&(PX2>PX1)) PX2=PX2-1; end PX1=PX1-1; PX2=PX2+1; %分割出车牌图像% dw=Scolor(PY1:PY2,PX1:PX2,:); figure,imshow(dw),title('定位剪切后的彩色车牌图像'); 2、 车牌字符分割 确定车牌位置后下一步的任务就是进行字符切分分离出车牌号码的全部字符图像。 t=graythresh(dw); bw=im2bw(dw,t); figure,imshow(bw);title('二值车牌'); [y1,x1,z1]=size(bw); I3=double(bw); TT=1; %%%%%去除图像顶端和底端的不感兴趣区域%%%%% py1=1; py2=y1; i=3; j=3; for k=1:y1 while(sum(bw(k,:))>0.75*x1&&i>0) py1=py1+1; i=i-1; end while(sum(bw(k,:))>0.75*x1&&j>0) py2=py2-1; j=j-1; end end bw=bw(py1:py2,:,:); figure,imshow(bw),title('目标车牌区域'); bw=bwareaopen(bw,20); %去除小于20的区域 [y1,x1,z1]=size(bw); I3=double(bw); X1=zeros(1,x1); for j=1:x1 for i=1:y1 if(I3(i,j,1)==1) X1(1,j)= X1(1,j)+1; end end end