基于BP神经网络的手写体数字识别matlab仿真

本文详细介绍了使用MATLAB2022a版本实现的手写体数字识别算法,包括运行效果图、核心程序片段,理论概述了人工神经网络特别是BP网络的工作原理,以及特征提取和编码过程。算法工程展示了完整的程序流程。
摘要由CSDN通过智能技术生成

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

2.算法运行软件版本

matlab2022a

3.部分核心程序



filename = dir('images\*.bmp');     %图像文件格式
load BP.mat

filename = dir('test\*.bmp');     %图像文件格式
%测试集测试
figure;
for k=1:60
    filename(k).name
    p(1:256,1)=1;                %初始图像二值化像素
    p1=ones(16,16);
                 %加载训练好的网络
    x=imread(filename(k).name);
    
 
    bw=im2bw(x,0.5);              %二值化
    [i,j]= find(bw==0);           %寻找数字所在的像素索引
    imin=min(i);                  %求取数字像素占据空间的最小行索引
    imax=max(i);                  %求取数字像素占据空间的最大行的索引
    jmin=min(j);                  %求取数字像素占据空间的最小列的索引
    jmax=max(j);                  %求取数字像素占据空间的最大列的索引
    bwl=bw(imin:imax,jmin:jmax);  %把图像由39×39缩放为实际数字像素所需的空间
    rate=16/max(size(bwl));       %求取放大比率
    bwl=imresize(bwl,rate);       %按比率放大图像
    [i,j]=size(bwl);              %求取行列数
    i1=round((16-i)/2);           %取整
    j1=round((16-j)/2);
    p1(i1+1:i1+i,j1+1:j1+j)=bwl;  %图像从右向暂存
    p1=-1.*p1+ones(16,16);        %将图像反色
    for m=0:15                    %样本特征存于输入矢量
         p(m*16+1:(m+1)*16,1)=p1(1:16,m+1);  
    end
    [a,Pf,Af]=sim(net,p);      %测试
    subplot(10,6,k);
    imshow(x);                 %显示原始图像
    a=round(a);                %显示识别结果
    title(['识别结果:',num2str(a)]);                 
end
05_002m

4.算法理论概述

        人工神经元网络是生理学上的真实人脑神经网络的机构和功能,以及若干基本特性的某种理论抽象、简化和模拟而构成的一种信息处理系统。从构造上大致可分为最简单的感知器网络、多层前馈型神经网络、反馈型神经网络和自组织神经元网络等。

        由于神经网络具有可并行计算、分布式信息存储自适应和学习能力强等优点,在很多领域获得了极其广泛的应用。尤其是BP网络,即反向传播网络,其应用最为广泛。BP网络是利用非线性可微分函数进行权值训练的多层网络,在函数逼近、模式识别、信息分类及数据压缩等领域得到了广泛的应用。

        但是神经网络学习过程的算法在数学计算上都比较复杂,过程也比较繁琐,容易出错。因此,采用计算机辅助进行神经网络设计与分析成了必然的选择。目前,在比较成熟的神经网络软件包中,MATLAB的神经网络工具箱应用最为广泛。MATLAB是矩阵实验室(Matrix Laboratory)的简称,它可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

       手写体数字识别系统的结构图如图所示。

        在对字体进行预处理后要进行的是特征的提取,选取图像的灰度特征时要考虑到特征量的维数与识别的准确率的要求。例如,我们将一个字符归—化为17像素×8像素点阵图。按每个像素位为0或1,形成网络的136个输入特征值。得到的特征图像是二值图像,对应一个元素为0和l的17像素×8像素的特征矩阵,然后是对特征图像编码。编码规则是,按照从左至右、从上到下的顺序,依次扫描整个特征矩阵,将每一行的0和1转换成一个136像素×1像素的特征列。将每一个字符都进行编码后,顺序送送入已经训练好的神经网络识别,识别结果最后以文本格式输出。

       BP网络是神经网络的一个分支,又称为多层感知或误差信号反馈网络。它是目前较流行的,应用最广的神经网络模型。BP网络是一种有教师的学习网络,其主要特点是能够实现从n到m维的非线性映射,它还可以采用梯度下降法实现快速收敛。如图所示为BP网络示意图。

5.算法完整程序工程

OOOOO

OOO

O

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简简单单做算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值