基于BP神经网络的手写数字识别问题研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

个人主页:Matlab科研工作室

个人信条:格物致知。

更多Matlab仿真内容点击

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机

⛄ 内容介绍

本文论述并设计实现了一个自由手写体数字识别系统。文中首先对待识别数字的预处理进行了介绍,包括二值化、噪声处理、图像分割、归一化、细化等图像处理方法;其次,探讨了数字字符特征向量的提取;最后采用了bp神经网络算法,并以MATLAB作为编程工具实现了具有友好的图形用户界面的自由手写体数字识别系统。实验结果表明,本方法具有较高的识别率,并具有较好的抗噪性能。

人类社会己开始进入信息时代,信息产业的发展将对国家的发达和民族的兴旺产生重大的影响。因此,世界各国对信息产业的发展都给予了极大的关注和重视。人类社会的不断进步带来了信息空间的增长和积累,而计算机的出现为现代化信息处理提供了有效的手段。但是,在信息技术高速发展的同时,一个难题也摆在我们面前,那就是计算机数据处理和网络传输的高速度与数据输入的低速度之间的矛盾。目前,人类的许多信息是记录在纸上的文字图像,将这些信息输入计算机是非常繁琐而低效率的工作,这在一定的程度上减缓了社会信息化的进程。因而,作为信息化基础的数据输入成了计算机应用中的瓶颈问题。人们接受信息最频繁的是视觉通道.在日常学习和生活中,所处理的信息有75%—85%是视觉信息,其中文字信息愈来愈占重要地位.比如对各种期刊文献的阅读、查找、翻译:对各种统计报表的汇总、计算、分析;对各种函件票证的分拣、传送、验核等。要实现对这些文字信息处理过程的机械化、自动化,其先决条件就是利用计算机对这些文字信息进行识别。

字符识别是利用计算机自动辨识印刷在纸上或人写在纸上的汉字,是模式识别的一个重要分支,也是文字识别领域较为困难的问题之一。本技术涉及模式识别、图像处理、数字信号处理、自然语言理解、人工智能、模糊数学、信息论、计算机、中文信息处理等学科,是一门综合性技术,在中文信息处理、办公室自动化、机器翻译、人工智能等高技术领域,都有着重要的实用价值和理论意义。因此,手写数字的识别研究有着重大的现实意义,一旦研究成功并投入应用,将产生巨大的社会和经济效益。

⛄ 部分代码

% 数字识别

save numberPT p t;

% 创建和训练BP网络

ar all;

load numberPT p t;   %加载样本 

%创建BP网络 

net=newff(minmax(p),[14 4],{'logsig' 'purelin'}, 'traingdx', 'learngdm'); 

%  当前输入层权值和阈值 

inputWeights=net.IW{1,1} 

inputbias=net.b{1} 

%  当前网络层权值和阈值 

layerWeights=net.LW{2,1}   

layerbias=net.b{2} 

for times=0:99

    clear all;

    p1=ones(16,16);

    load numbernet net;

    test=input('FileName:', 's');

    x=imread(test,'bmp');

    bw=im2bw(x,0.5);

    [i,j]=find(bw==0);

    imin=min(i);

    imax=max(i);

    jmin=min(j);

    jmax=max(j);

    bw1=bw(imin:imax,jmin:jmax);  %截取是入图像中的数字部分

    rate=16/max(size(bw1));

    bw1=imresize(bw1,rate);  %对输入文件变尺寸处理

    [i,j]=size(bw1);

    i1=round((16-i)/2);

        p(21,1)=length(find(p1(1:16, 8)==1));

        p(22,1)=length(find(p1(1:16,12)==1));

        s1=0;

        for zz=1:16

            xx=17-zz;

            s1=p1(zz,xx)+s1;

            p(23,1)=s1;

        end

        s2=0;

        for zz=1:16

            s2=p1(zz,zz)+s2;

            p(24,1)=s2;

        end

    [a,Pf,Af]=sim(net,p);   %测试网络 

    imshow(p1);

    a=round(a);

    a=a(1,1)*8+a(2,1)*4+a(3,1)*2+a(4,1)%输出网络识别结果 

end

⛄ 运行结果

基于BP神经网络的手写数字识别问题研究附Matlab代码_第1张图片

⛄ 参考文献

[1]杨勇、谢刚生。“基于BP神经网络的数字识别。” 华东地质学院学报(2003).

❤️ 关注我领取海量matlab电子书和数学建模资料

❤️部分理论引用网络文献,若有侵权联系博主删除

 

你可能感兴趣的:(图像处理,matlab,神经网络,开发语言)