您的位置:首页 > 编程语言 > MATLAB

用支持向量机做OCR(MATLAB)

2015-06-06 15:32 429 查看
输入的图片是42x24的二值图片。

下面的是训练SVM

clc;clear all;close all;

NN = 15;

P_P=[];

for L_one =1:NN;

one=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\1\ (',num2str(L_one),').bmp')),1,1008);

P_P=[P_P;one];

end

for L_two =1:NN;

two=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\2\ (',num2str(L_two),').bmp')),1,1008);

P_P=[P_P;two];

end

for L_three =1:NN;

three=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\3\ (',num2str(L_three),').bmp')),1,1008);

P_P=[P_P;three];

end

for L_four =1:NN;

four=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\4\ (',num2str(L_four),').bmp')),1,1008);

P_P=[P_P;four];

end

for L_five =1:NN;

five=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\5\ (',num2str(L_five),').bmp')),1,1008);

P_P=[P_P;five];

end

for L_six =1:NN;

six=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\6\ (',num2str(L_six),').bmp')),1,1008);

P_P=[P_P;six];

end

for L_seven =1:NN;

seven=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\7\ (',num2str(L_seven),').bmp')),1,1008);

P_P=[P_P;seven];

end

for L_eight =1:NN;

eight=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\8\ (',num2str(L_eight),').bmp')),1,1008);

P_P=[P_P;eight];

end

for L_nine =1:NN;

nine=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\9\ (',num2str(L_nine),').bmp')),1,1008);

P_P=[P_P;nine];

end

for L_zero =1:NN;

zero=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\0\ (',num2str(L_zero),').bmp')),1,1008);

P_P=[P_P;zero];

end

% for AA =1:NN;

% A=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\a\ (',num2str(AA),').bmp')),1,1008);

% end

% for BB =1:NN;

% B=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\b\ (',num2str(BB),').bmp')),1,1008);

% end

% for CC =1:NN;

% C=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\c\ (',num2str(CC),').bmp')),1,1008);

% end

% for DD =1:NN;

% D=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\d\ (',num2str(DD),').bmp')),1,1008);

% end

% for EE =1:NN;

% E=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\e\ (',num2str(EE),').bmp')),1,1008);

% end

% for FF =1:NN;

% F=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\f\ (',num2str(FF),').bmp')),1,1008);

% end

% for GG =1:NN;

% G=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\g\ (',num2str(GG),').bmp')),1,1008);

% end

% for HH =1:NN;

% H=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\h\ (',num2str(HH),').bmp')),1,1008);

% end

% for II =1:NN;

% I=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\i\ (',num2str(II),').bmp')),1,1008);

% end

% for JJ =1:NN;

% J=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\j\ (',num2str(JJ),').bmp')),1,1008);

% end

% for KK =1:NN;

% K=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\k\ (',num2str(KK),').bmp')),1,1008);

% end

% for LL =1:NN;

% L=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\l\ (',num2str(LL),').bmp')),1,1008);

% end

% for MM =1:NN;

% M=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\m (',num2str(MM),').bmp')),1,1008);

% end

% for NN =1:NN;

% N=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\n\ (',num2str(NN),').bmp')),1,1008);

% end

% for OO =1:NN;

% O=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\o\ (',num2str(OO),').bmp')),1,1008);

% end

% for PP =1:NN;

% P=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\p\ (',num2str(PP),').bmp')),1,1008);

% end

% for QQ =1:NN;

% Q=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\q\ (',num2str(QQ),').bmp')),1,1008);

% end

% for RR =1:NN;

% R=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\r\ (',num2str(RR),').bmp')),1,1008);

% end

% for SS =1:NN;

% S=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\s\ (',num2str(SS),').bmp')),1,1008);

% end

% for TT =1:NN;

% T=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\t\ (',num2str(TT),').bmp')),1,1008);

% end

% for UU =1:NN;

% U=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\u\ (',num2str(UU),').bmp')),1,1008);

% end

% for VV =1:NN;

% V=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\v\ (',num2str(VV),').bmp')),1,1008);

% end

% for WW =1:NN;

% W=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\w\ (',num2str(WW),').bmp')),1,1008);

% end

% for XX =1:NN;

% X=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\x\ (',num2str(XX),').bmp')),1,1008);

% end

% for YY =1:NN;

% Y=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\y (',num2str(YY),').bmp')),1,1008);

% end

% for ZZ =1:NN;

% Z=reshape(imread(strcat('C:\Users\taizhimin\Desktop\number\z\ (',num2str(ZZ),').bmp')),1,1008);

% end

data = double(P_P);

T_T1(1:15)=1;

T_T1(16:150)=-1;

T_T2(1:15)=-1;

T_T2(16:30)=1;

T_T2(31:150)=-1;

T_T3(1:30)=-1;

T_T3(31:45)=1;

T_T3(46:150)=-1;

T_T4(1:45)=-1;

T_T4(46:60)=1;

T_T4(61:150)=-1;

T_T5(1:60)=-1;

T_T5(61:75)=1;

T_T5(76:150)=-1;

T_T6(1:75)=-1;

T_T6(76:90)=1;

T_T6(91:150)=-1;

T_T7(1:90)=-1;

T_T7(91:105)=1;

T_T7(106:150)=-1;

T_T8(1:105)=-1;

T_T8(106:120)=1;

T_T8(121:150)=-1;

T_T9(1:120)=-1;

T_T9(120:135)=1;

T_T9(136:150)=-1;

T_T0(1:135)=-1;

T_T0(136:150)=1;

S1=svmtrain(data,T_T1');

save S1;

S2=svmtrain(data,T_T2');

save S2;

S3=svmtrain(data,T_T3');

save S3;

S4=svmtrain(data,T_T4');

save S4;

S5=svmtrain(data,T_T5');

save S5;

S6=svmtrain(data,T_T6');

save S6;

S7=svmtrain(data,T_T7');

save S7;

S8=svmtrain(data,T_T8');

save S8;

S9=svmtrain(data,T_T9');

save S9;

S0=svmtrain(data,T_T0');

save S0;

仿真

testdata = data(1:30,:);

class(1,:)=svmclassify(S1,testdata);

class(2,:)=svmclassify(S2,testdata);

class(3,:)=svmclassify(S3,testdata);

class(4,:)=svmclassify(S4,testdata);

class(5,:)=svmclassify(S5,testdata);

class(6,:)=svmclassify(S6,testdata);

class(7,:)=svmclassify(S7,testdata);

class(8,:)=svmclassify(S8,testdata);

class(9,:)=svmclassify(S9,testdata);

class(10,:)=svmclassify(S0,testdata);

这是识别函数

中间被坑了一回

data=double(imagen)这样全局定义的话死活不成功,不知道原因。

function letter = my_svm(imagen)

imagen=reshape(imagen,1,1008);

load S1

load S2

load S3

load S4

load S5

load S6

load S7

load S8

load S9

load S0

if( svmclassify(S1,double(imagen))==1)

letter='1';

elseif ( (svmclassify(S2,double(imagen))==1))

letter='2';

elseif ( (svmclassify(S3,double(imagen))==1))

letter='3';

elseif ( (svmclassify(S4,double(imagen))==1))

letter='4';

elseif ( (svmclassify(S5,double(imagen))==1))

letter='5';

elseif ( (svmclassify(S6,double(imagen))==1))

letter='6';

elseif ( (svmclassify(S7,double(imagen))==1))

letter='7';

elseif ( (svmclassify(S8,double(imagen))==1))

letter='8';

elseif ( (svmclassify(S9,double(imagen))==1))

letter='9';

elseif ( (svmclassify(S0,double(imagen))==1))

letter='0';

else

letter ='x';

end

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: