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

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

1.算法描述
1.读入多张图像,对图像进行去噪、二值话、裁剪、细化等预处理

2.特征提取:首先将汉字分为横竖撇捺4个分量,然后对每个分量图像进行4×4弹性网格的划分,(也可以用其他更好的特征提取的方法,但一定要注释清楚),这样每一个字都有4×4×4=64维数据作为小波神经网络的输入数据。

3.小波神经网络训练:对每一个汉字用100个不同人的字体进行训练(最好根据小波神经网络的算法步骤来,参考以下程序)

4.训练完成之后,每一个汉字用20个字测试

5.统计识别率,对训练次数、隐含层个数、训练字的个数的不同看看识别率的情况。

HOT特征提取过程如下所示:

1、HOG特征:

   方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。

(1)主要思想:

   在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。(本质:梯度的统计信息,而梯度主要存在于边缘的地方)。

(2)具体的实现方法是:

   首先将图像分成小的连通区域,我们把它叫细胞单元。然后采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。

(3)提高性能:

   把这些局部直方图在图像的更大的范围内(我们把它叫区间或block)进行对比度归一化(contrast-normalized),所采用的方法是:先计算各直方图在这个区间(block)中的密度,然后根据这个密度对区间中的各个细胞单元做归一化。通过这个归一化后,能对光照变化和阴影获得更好的效果。

(4)优点:

   与其他的特征描述方法相比,HOG有很多优点。首先,由于HOG是在图像的局部方格单元上操作,所以它对图像几何的和光学的形变都能保持很好的不变性,这两种形变只会出现在更大的空间领域上。其次,在粗的空域抽样、精细的方向抽样以及较强的局部光学归一化等条件下,只要行人大体上能够保持直立的姿势,可以容许行人有一些细微的肢体动作,这些细微的动作可以被忽略而不影响检测效果。因此HOG特征是特别适合于做图像中的人体检测的。

2、HOG特征提取算法的实现过程:

大概过程:

HOG特征提取方法就是将一个image(你要检测的目标或者扫描窗口):

1)灰度化(将图像看做一个x,y,z(灰度)的三维图像);

2)采用Gamma校正法对输入图像进行颜色空间的标准化(归一化);目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰;

3)计算图像每个像素的梯度(包括大小和方向);主要是为了捕获轮廓信息,同时进一步弱化光照的干扰。

4)将图像划分成小cells(例如6*6像素/cell);

5)统计每个cell的梯度直方图(不同梯度的个数),即可形成每个cell的descriptor;

6)将每几个cell组成一个block(例如3*3个cell/block),一个block内所有cell的特征descriptor串联起来便得到该block的HOG特征descriptor。

7)将图像image内的所有block的HOG特征descriptor串联起来就可以得到该image(你要检测的目标)的HOG特征descriptor了。这个就是最终的可供分类使用的特征向量了。

   小波变换是近十几年信信号处理领域研究的一个热点,许多学者将小波在理论上的研究成果应用到诸如图像压缩、特征提取、信号滤波和数据融合等方面,而且小波变换的领域还在不断地发展当中。小波之所以在信号处理领域具有很大的优势,在于小波变换可以获得信号的多分辨率描述,这种描述符合人类观察世界的一般规律,同时,小波变换具有丰富的小波基以适应具有不同特性的信号。小波神经网络的基本结构如下所示:

89f0d373abbe15d459554df7c02131d5_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

     基于小波的人工神经网络,即小波神经网络(WNN)是对生物神经进行仿真研究的结果,是基于生物学中的神经网络的基本原理,按照控制工程的思路和数学描述的方法建立起来的数学模型。WNN能够模拟人脑的结构与功能机制,实现某方面的功能,能自我感知,自主适应,有很强的学习和逼近功能;能比较准确地揭示非线性复杂动力系统的内在关系和演化机理。所以WNN可以用来分析和预测网络流量行为和演化趋势。

   在实际应用中,选择小波主要从小波的对称性、正则性、支撑长度、消失矩等性质方面考虑。对称性主要用于图像处理中,对称性好的小波在进行二维图像处理中可以避免相移,简化计算;消失矩阶数大的小波变换能量更集中,在压缩中用处很大;正则性则主要用来刻画函数的光滑程度,一般正则性好的小波函数光滑性也越好,能够获得更好的重构信号;支撑长度一般与消失矩和正则性相关,支撑长度越长,消失矩和正则性也越高,但支集太长会发生边界问题,支集太短则不利于信号能量的集中。

  小波函数具有不同的族系,常见的有:haar小波、Meyer小波、dbN系列小波、symN系列小波、coifN系列小波。不同的小波函数具有不同的特性,对同一信号的处理效果也不同。Haar小波是小波分析发展过程中用的最早的小波,也是最简单的小波,一般只用来理解小波分析的原理,不用于分析实际问题;Meyer小波不具有紧支性,所以在进行离散小波变换时不存在快速算法,但由Meyer小波构造的滤波器具有很高的消失矩;dbN系列小波、symN系列小波、coifN系列小波都是由DaubechieS提出来的具有紧支性的正交小波系,三种小波系相比,SymN小波类似于dbN小波,但它具有更好的对称性,而coifN小波具有更长的支撑长度和更大的消失矩,对称性也比较好。

2.仿真效果预览
matlab2022a仿真结果如下:

230ad59a776ef025c0f5f50c398c01f4_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
aee4eb8eb44a140d62cb03082824c87c_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

3.MATLAB核心程序

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
相关文章
|
2天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
103 80
|
1天前
|
编解码 算法 数据安全/隐私保护
基于BP译码的LDPC误码率matlab仿真,分析不同码长,码率,迭代次数以及信道类型对译码性能的影响
本内容介绍基于MATLAB 2022a的低密度奇偶校验码(LDPC)仿真,展示了完整的无水印仿真结果。LDPC是一种逼近香农限的信道编码技术,广泛应用于现代通信系统。BP译码算法通过Tanner图上的消息传递实现高效译码。仿真程序涵盖了不同Eb/N0下的误码率计算,并分析了码长、码率、迭代次数和信道类型对译码性能的影响。核心代码实现了LDPC编码、BPSK调制、高斯信道传输及BP译码过程,最终绘制误码率曲线并保存数据。 字符数:239
20 5
|
23小时前
|
算法
基于EO平衡优化器算法的目标函数最优值求解matlab仿真
本程序基于进化优化(EO)中的平衡优化器算法,在MATLAB2022A上实现九个测试函数的最优值求解及优化收敛曲线仿真。平衡优化器通过模拟生态系统平衡机制,动态调整搜索参数,确保种群多样性与收敛性的平衡,高效搜索全局或近全局最优解。程序核心为平衡优化算法,结合粒子群优化思想,引入动态调整策略,促进快速探索与有效利用解空间。
|
21天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
27天前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
7天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
14天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
23天前
|
算法
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。
|
14天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
20天前
|
算法
基于WOA鲸鱼优化的购售电收益与风险评估算法matlab仿真
本研究提出了一种基于鲸鱼优化算法(WOA)的购售电收益与风险评估算法。通过将售电公司购售电收益风险计算公式作为WOA的目标函数,经过迭代优化计算出最优购电策略。实验结果表明,在迭代次数超过10次后,风险价值收益优化值达到1715.1万元的最大值。WOA还确定了中长期市场、现货市场及可再生能源等不同市场的最优购电量,验证了算法的有效性。核心程序使用MATLAB2022a实现,通过多次迭代优化,实现了售电公司收益最大化和风险最小化的目标。