码迷,mamicode.com
首页 > 其他好文 > 详细

车牌识别之识别与分割

时间:2017-09-30 10:02:36      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:rgb   elseif   atl   识别   ==   title   size   resize   show   

1.定位,主要就是根据颜色特征,中国的车牌大都是蓝牌的,也就用这种最典型的了

2.分割,分割首先还是建立在第一步基础上,然后是用位置和投影来进行分割

哇,注释全乱了。。。。。。。

clear all;
pic=imread(‘1.jpg‘);
figure;subplot(1,4,1);imshow(pic);title(‘original image‘)
% subplot ??????m*n?????????p???,p=1?????????
[ysize,xsize,zsize]=size(pic);%????????????????????????
%ysize?xsize???????zsize????????
pic_r=double(pic(:,:,1));%?????????
pic_g=double(pic(:,:,2));
pic_b=double(pic(:,:,3));
for(i=1:ysize)
    for (j=1:xsize)
      mean(i,j)=(pic_r(i,j)+pic_g(i,j)+pic_b(i,j))/3;%???????
      blue(i,j)=pic_b(i,j)-mean(i,j);
      if(blue(i,j)>30)
           blue0(i,j)= 1;
       else
           blue0(i,j)=0;
      end
    end
end
subplot(1,4,2);imshow(blue0);title(‘blue0‘)
h=[1 1 1 1];
blue1=filter2(h,blue0);%??????????????h???????????
for(i=1:ysize)
    for(j=1:xsize)
       if blue1(i,j)>=1
          blue1(i,j)=1;
       else
           blue1(i,j)=0;
       end
    end
end
blue2=bwareaopen(blue1,1000);
%BW2 = bwareaopen(BW,P,conn) ??????BW?????P?????????conn??8??
subplot(1,4,3);imshow(blue1);title(‘blue1‘)
subplot(1,4,4);imshow(blue2);title(‘blue2‘)
xsize1=uint16(0.1*xsize);
xsize2=uint16(0.9*xsize);%xsize?????
ysize1=uint16(0.4*ysize);%ysize??????
ysize2=uint16(ysize);
x=zeros(1,xsize);%????1???xsize??0??
y=zeros(1,ysize);
for(i=ysize1:ysize2)
    for(j=xsize1:xsize2)
        if blue2(i,j)>0
           x(j)=x(j)+1;
           y(i)=y(i)+1;
        end
    end
end
figure;subplot(2,2,1);plot(x);title(‘x‘);
       subplot(2,2,2);plot(y) ;title(‘y‘);
for(i=1:ysize)
      if y(i)>=1
          yy(i)=1;%??????????????
      else
           yy(i)=0;
      end    
end
for(j=1:xsize)
      if x(j)>=1
          xx(j)=1;
      else
         xx(j)=0;
      end    
end
subplot(2,2,3);plot(xx);title(‘xx‘);
subplot(2,2,4);plot(yy) ;title(‘yy‘);
for(i=1:ysize-1)
     if(yy(i)==1&yy(i+1)==0)
        y2=i;
     end     
 end
for(i=ysize-1:-1:1)
     if(yy(i)==0&yy(i+1)==1)
        y1=i;
     end     
end
h=y2-y1;
for(j=1:xsize-1);
    if(xx(j)==1&xx(j+1)==0)
       x2=j;
    end
end
for(j=xsize-1:-1:1);
    if (xx(j)==0&xx(j+1)==1)
        x1=j;
    end
end
w=x2-x1;
for (m=1:h)
    for(n=1:w)
    lp_rgb(m,n,:)=pic(m+y1,n+x1,:);
    end
end
figure;subplot(2,3,1);imshow(lp_rgb);
lp_resize = imresize(lp_rgb,[34,113],‘nearest‘);
lp_gray=rgb2gray(lp_resize); 
subplot(2,3,2);imshow(lp_gray);
mean=mean2(lp_gray);
for(i=1:34)
    for(j=1:113)
        if lp_gray(i,j)>=mean;
            lp_b1(i,j)=1;
        else
            lp_b1(i,j)=0;
        end
    end
end
subplot(2,3,3);imshow(lp_b1);
lp_b2=bwareaopen(lp_b1,6);
subplot(2,3,4);imshow(lp_b2);
lp_b=bwmorph(lp_b2,‘thin‘);
subplot(2,3,5);imshow(lp_b);
for(m=1:26)
    for(n=1:113)
       if(n>1&n<=16);
         cha1(m,n-1)=lp_b(m+4,n); 
       elseif(n>16&n<=31);
         cha2(m,n-16)=lp_b(m+4,n);
       elseif(n>37&n<=52);
         cha3(m,n-37)=lp_b(m+4,n);
       elseif(n>52&n<=67);
         cha4(m,n-52)=lp_b(m+4,n);
       elseif(n>67&n<=82);
         cha5(m,n-67)=lp_b(m+4,n);
       elseif(n>82&n<=97);
         cha6(m,n-82)=lp_b(m+4,n);
       elseif(n>97&n<=112);
         cha7(m,n-97)=lp_b(m+4,n);
       end
   end
end
figure;subplot(1,7,1);imshow(cha1);  
subplot(1,7,2);imshow(cha2);  
subplot(1,7,3);imshow(cha3);  
subplot(1,7,4);imshow(cha4);  
subplot(1,7,5);imshow(cha5);  
subplot(1,7,6);imshow(cha6);  
subplot(1,7,7);imshow(cha7);  

  

车牌识别之识别与分割

标签:rgb   elseif   atl   识别   ==   title   size   resize   show   

原文地址:http://www.cnblogs.com/guohaoyu110/p/7613337.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!