1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y52cmJxw
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
1.读入多张图像,对图像进行去噪、二值话、裁剪、细化等预处理
2.特征提取:首先将汉字分为横竖撇捺4个分量,然后对每个分量图像进行4×4弹性网格的划分,(也可以用其他更好的特征提取的方法,但一定要注释清楚),这样每一个字都有4×4×4=64维数据作为小波神经网络的输入数据。
3.小波神经网络训练:对每一个汉字用100个不同人的字体进行训练(最好根据小波神经网络的算法步骤来,参考以下程序)
4.训练完成之后,每一个汉字用20个字测试
5.统计识别率,对训练次数、隐含层个数、训练字的个数的不同看看识别率的情况。
4.部分源码
%train
for i = 1:100
P_train(i,:) = [Fd{i}];
end
for i = 1:100
P_train(100+i,:) = [Fx{i}];
end
for i = 1:100
P_train(200+i,:) = [Fz{i}];
end
T_train = [1*ones(100,1);2*ones(100,1);3*ones(100,1);];
%test
for i = 1:20
P_test(i,:) = [Fd{100+i}];
end
for i = 1:20
P_test(20+i,:) = [Fx{100+i}];
end
for i = 1:20
P_test(40+i,:) = [Fz{100+i}];
end
T_test = [1*ones(20,1);2*ones(20,1);3*ones(20,1);];
net1 = newgrnn(P_train',T_train',0.1);
yout = round(net1(P_test'));
disp('正确率:');
100*length(find(yout==T_test'))/length(T_test')
load feature.mat
%train
for i = 1:100
P_train(i,:) = [Fd{i}];
end
for i = 1:100
P_train(100+i,:) = [Fx{i}];
end
for i = 1:100
P_train(200+i,:) = [Fz{i}];
end
T_train = [1*ones(100,1);2*ones(100,1);3*ones(100,1);];
%test
for i = 1:20
P_test(i,:) = [Fd{100+i}];
end
for i = 1:20
P_test(20+i,:) = [Fx{100+i}];
end
for i = 1:20
P_test(40+i,:) = [Fz{100+i}];
end
T_test = [1*ones(20,1);2*ones(20,1);3*ones(20,1);];
%WNN训练
[Net_wnn1,Net_wnn2,Weight_A,Weight_B,Weight_HA,Weight_HB,Num_H,Num_I,Num_O]=func_wnn_train(P_train,P_test,T_train,T_test);
%WNN预测
final = func_wnn_test(P_test,Net_wnn1,Net_wnn2,Weight_A,Weight_B,Weight_HA,Weight_HB,Num_H,Num_I,Num_O);
%转换为1~3
[V,I] = sort(final);
final2= final;
final2(I(1:20)) = 1;
final2(I(21:40)) = 2;
final2(I(41:60)) = 3;
disp('正确率:');
100*length(find(final2==T_test'))/length(T_test')
figure;
flag1 = final2(1:20);
for i = 1:20
NAME = ['images\d\',num2str(100+i),'.jpg'];
tmps = imread(NAME);
subplot(6,10,i);
imshow(tmps);
if flag1(i) == 1
title('识别正确','Color','b');
else
title('识别错误','Color','r');
end
end
flag2 = final2(21:40);
for i = 1:20
NAME = ['images\x\',num2str(100+i),'.jpg'];
tmps = imread(NAME);
subplot(6,10,20+i);
imshow(tmps);
if flag2(i) == 2
title('识别正确','Color','b');
else
title('识别错误','Color','r');
end
end
05_039_m