车牌识别代码 模板匹配 matlab 附多模板匹配代码

1 介绍基于模板匹配的车牌识别

1.1 依旧先对图像进行读入、灰度化、直方图均衡化,使用canny检测边缘、腐蚀定位。

对图像进行精定位,水平矫正滤波。
车牌识别代码 模板匹配 matlab 附多模板匹配代码_第1张图片
在模板匹配过程中,一套模板的准确率较低,可以考虑使用多套模板进行识别,牺牲速度换取精度。
多模板匹配的关键在于建立多套模板并且互不干涉。
车牌识别代码 模板匹配 matlab 附多模板匹配代码_第2张图片

`
附模板匹配部分代码


%%%%%%%%%%%%%%%%%%%%%%%%%
 %%             开始识别
%%%%%%%%%%%%%%%%%%%%%%%%%

liccode=char(['0':'9' 'A':'H' 'J':'N' 'P':'Z' '京津冀湘' 'u']);  %建立自动识别字符代码表 
plate = char(['京' 'A':'F']);
for num=1:7     
        t=plate_word(:,:,num);
        SegBw2=imresize(t,[40 20],'nearest');  %实用最近邻插值法放大图像
           if num==1                 %第一位汉字识别
            kmin=35;
            kmax=38;
        elseif num==2             %第二位 A~Z 字母识别
            kmin=11;
            kmax=34;
        else num>=3;               %第三位以后是字母或数字识别
            kmin=1;
            kmax=34;
           end       
         Error = 1000001:1000039;
        for i=1:500
            Error(i)=666666;
        end   
        
        for k2=kmin:kmax
            fname=strcat('模板\1\',liccode(k2),'.bmp');   
            SamBw2 = imread(fname);
            SamBw2=imresize(SamBw2,[40 20],'nearest');  %实用最近邻插值法放大图像
            SubBw2 = zeros(40,20);
            SegBw2 = double(SegBw2);
            SamBw2 = double(SamBw2);
            
            for  i=1:40
                for j=1:20
                    SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);
                end
            end
                   
           % 以上相当于两幅图相减得到第三幅图
                Dmax=0;
                    for k1=1:40
                        for l1=1:20
                            if  ( SubBw2(k1,l1) ~=0 )
                                Dmax=Dmax+1;
                            end
                        end
                    end
            Error(k2)=Dmax;
        end
        for k2=kmin:kmax
            fname=strcat('模板\2\',liccode(k2),'.bmp');   
            SamBw2 = imread(fname);
            SamBw2=imresize(SamBw2,[40 20],'nearest');  %实用最近邻插值法放大图像
            SubBw2 = zeros(40,20);
            SegBw2 = double(SegBw2);
            SamBw2 = double(SamBw2);           
            for  i=1:40
                for j=1:20
                    SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);
                end
            end
                   
           % 以上相当于两幅图相减得到第三幅图
                Dmax=0;
                    for k1=1:40
                        for l1=1:20
                            if  ( SubBw2(k1,l1) ~=0 )
                                Dmax=Dmax+1;
                            end
                        end
                    end
            Error(k2+100)=Dmax;
        end
       [~,index]=min(Error);
       
       if(index>200)
           index = index -200;
       elseif(index>100)
           index = index -100;
       end       
       plate(num) = liccode(index);        
	end

联系方式 : 127-313-7084 (Q号) [请备注:csdn_车牌识别]

你可能感兴趣的:(车牌识别,matlab)