您现在的位置:首页 >> 机器学习 >> 内容

m基于小波神经网络和HOG特征提取的手写汉字识别算法matlab仿真

时间:2023/1/4 20:57:40 点击:

  核心提示:05_039_m,包括程序操作录像+说明文档...

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

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168