gusucode.com > MATLAB,车牌定位仿真源码程序 > MATLAB,车牌定位仿真源码程序/programs_and_pictures/test.m

    %------------------------------------------------------------------------------------------------------------------------%
%名称:车牌识别程序                                                                  
%作者:重庆大学 生物学院 徐峰 20101902084
%时间:2010.12.30
%主程序:test.m
%子程序:dingwei1.m\dingwei2.m\dingwei3.m\dingwei4.m\getblue.m\projection.m\zifufg.m\yuchuli.m
%-------------------------------------------------------------------------------------------------------------------------%
close all;clear all;clc;

% ——step1:建立bp神经网络———%

% 读入训练样本(取自图像本身),并对训练样本进行预处理
I0=yuchuli(imread('0.jpg'));%读入数字
I1=yuchuli(imread('1.jpg'));
I2=yuchuli(imread('2.jpg'));
I3=yuchuli(imread('3.jpg'));
I4=yuchuli(imread('4.jpg'));
I5=yuchuli(imread('5.jpg'));
I6=yuchuli(imread('6.jpg'));
I7=yuchuli(imread('7.jpg'));
I8=yuchuli(imread('8.jpg'));
I9=yuchuli(imread('9.jpg'));

I10=yuchuli(imread('A.jpg'));%读入字母(仅限部分字母)
I11=yuchuli(imread('C.jpg'));
I12=yuchuli(imread('G.jpg'));
I13=yuchuli(imread('L.jpg'));
I14=yuchuli(imread('M.jpg'));
I15=yuchuli(imread('R.jpg'));
I16=yuchuli(imread('D.jpg'));
I17=yuchuli(imread('E.jpg'));
I18=yuchuli(imread('H.jpg'));
I19=yuchuli(imread('J.jpg'));
I20=yuchuli(imread('N.jpg'));
I21=yuchuli(imread('Q.jpg'));
I22=yuchuli(imread('U.jpg'));
I23=yuchuli(imread('W.jpg'));
I24=yuchuli(imread('Z.jpg'));
I25=yuchuli(imread('K.jpg'));

%输入样本
P=[I0',I1',I2',I3',I4',I5',I6',I7',I8',I9',I10',I11',I12',I13',I14',I15',I16',I17',I18',I19',I20',I21',I22',I23',I24',I25'];
%输出样本
T=eye(26,26);
%bp神经网络参数设置
net=newff(minmax(P),[1000,26,26],{'logsig','logsig','logsig'},'trainrp');
net.inputWeights{1,1}.initFcn ='randnr';
net.layerWeights{2,1}.initFcn ='randnr';
net.trainparam.epochs=5000;
net.trainparam.show=50;
net.trainparam.goal=0.0000001;
net=init(net);

%训练样本
[net,tr]=train(net,P,T);
save net;%保存,以便后续识别的进行

%————step2:测试————%

load net;

%读入待识别样本
I=imread('DSC01333.JPG');

%四次车牌定位
dw1=dingwei1(I);%首先
dw2=dingwei2(dw1);%其次
dw3=dingwei3(dw2);%复次
dw4=dingwei4(dw3);%再次
figure();
subplot(4,1,1);imshow(dw1);title('第一次定位');
subplot(4,1,2);imshow(dw2);title('第二次定位');
subplot(4,1,3);imshow(dw3);title('第三次定位');
subplot(4,1,4);imshow(dw4);title('第四次定位');

%字符分割及处理
[PIN0,PIN1,PIN2,PIN3,PIN4,PIN5,PIN6]=zifufg(dw4);

%测试字符,得到识别数值
TI1=yuchuli(PIN1);
TT1= sim(net ,TI1') ;
TT1 = compet (TT1) ;
d1 =find(TT1 == 1) - 1
if (d1==10)
    str1='A';
elseif (d1==11)
     str1='C';
elseif (d1==12)
     str1='G';
elseif (d1==13)
     str1='L';
elseif (d1==14)
     str1='M';
elseif (d1==15)
     str1='R';
elseif (d1==16)
    str1='D';
elseif (d1==17)
    str1='E';
elseif (d1==18)
    str1='H';
elseif (d1==19)
    str1='J';
elseif (d1==20)
    str1='N';
elseif (d1==21)
    str1='Q';
elseif (d1==22)
    str1='U';
elseif (d1==23)
    str1='W';
elseif (d1==24)
    str1='Z';
elseif (d1==25)
    str1='K';
else
    str1=num2str(d1);
end

TI2=yuchuli(PIN2);
TT2 = sim(net ,TI2') ;
TT2 = compet (TT2) ;
d2 =find(TT2 == 1) - 1

if (d2==10)
    str2='A';
elseif (d2==11)
     str2='C';
elseif (d2==12)
     str2='G';
elseif (d2==13)
     str2='L';
elseif (d2==14)
     str2='M';
elseif (d2==15)
     str2='R';
elseif (d2==16)
    str2='D';
elseif (d2==17)
    str2='E';
elseif (d2==18)
    str2='H';
elseif (d2==19)
    str2='J';
elseif (d2==20)
    str2='N';
elseif (d2==21)
    str2='Q';
elseif (d2==22)
    str2='U';
elseif (d2==23)
    str2='W';
elseif (d2==24)
    str2='Z';
elseif (d2==25)
    str2='K';
else
    str2=num2str(d2);
end
%
TI3=yuchuli(PIN3);
TT3 = sim(net ,TI3') ;
TT3 = compet (TT3) 
d3 =find(TT3 == 1) - 1
if (d3==10)
    str3='A';
elseif (d3==11)
     str3='C';
elseif (d3==12)
     str3='G';
elseif (d3==13)
     str3='L';
elseif (d3==14)
     str3='M';
elseif (d3==15)
     str3='R';
elseif (d3==16)
    str3='D';
elseif (d3==17)
    str3='E';
elseif (d3==18)
    str3='H';
elseif (d3==19)
    str3='J';
elseif (d3==20)
    str3='N';
elseif (d3==21)
    str3='Q';
elseif (d3==22)
    str3='U';
elseif (d3==23)
    str3='W';
elseif (d3==24)
    str3='Z';
elseif (d3==25)
    str3='K';
else
    str3=num2str(d3);
end
%
TI4=yuchuli(PIN4);
TT4 = sim(net ,TI4') ;
TT4 = compet (TT4) 
d4 =find(TT4 == 1) - 1
if (d4==10)
    str4='A';
elseif (d4==11)
     str4='C';
elseif (d4==12)
     str4='G';
elseif (d4==13)
     str4='L';
elseif (d4==14)
     str4='M';
elseif (d4==15)
     str4='R';
elseif (d4==16)
    str4='D';
elseif (d4==17)
    str4='E';
elseif (d4==18)
    str4='H';
elseif (d4==19)
    str4='J';
elseif (d4==20)
    str4='N';
elseif (d4==21)
    str4='Q';
elseif (d4==22)
    str4='U';
elseif (d4==23)
    str4='W';
elseif (d4==24)
    str4='Z';
elseif (d4==25)
    str4='K';    
else
    str4=num2str(d4);
end
%
TI5=yuchuli(PIN5);
TT5 = sim(net ,TI5') ;
TT5 = compet (TT5) 
d5 =find(TT5 == 1) - 1
if (d5==10)
    str5='A';
elseif (d5==11)
     str5='C';
elseif (d5==12)
     str5='G';
elseif (d5==13)
     str5='L';
elseif (d5==14)
     str5='M';
elseif (d5==15)
     str5='R';
elseif (d5==16)
    str5='D';
elseif (d5==17)
    str5='E';
elseif (d5==18)
    str5='H';
elseif (d5==19)
    str5='J';
elseif (d5==20)
    str5='N';
elseif (d5==21)
    str5='Q';
elseif (d5==22)
    str5='U';
elseif (d5==23)
    str5='W';
elseif (d5==24)
    str5='Z';
elseif (d5==25)
    str5='K';
else
    str5=num2str(d5);
end
%
TI6=yuchuli(PIN6);
TT6 = sim(net ,TI6') ;
TT6 = compet (TT6)
d6 =find(TT6 == 1) - 1
if (d6==10)
    str6='A';
elseif (d6==11)
     str6='C';
elseif (d6==12)
     str6='G';
elseif (d6==13)
     str6='L';
elseif (d6==14)
     str6='M';
elseif (d6==15)
     str6='R';
elseif (d6==16)
    str6='D';
elseif (d6==17)
    str6='E';
elseif (d6==18)
    str6='H';
elseif (d6==19)
    str6='J';
elseif (d6==20)
    str6='N';
elseif (d6==21)
    str6='Q';
elseif (d6==22)
    str6='U';
elseif (d6==23)
    str6='W';
elseif (d6==24)
    str6='Z';
elseif (d6==25)
    str6='K';
else
    str6=num2str(d6);
end

%牌照识别结果显示%
s=strcat('渝',str1,str2,str3,str4,str5,str6);
figure();
imshow(dw4),title(s);