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);