资源简介

MATLAB源码实现手写数字识别,模式识别经典分类算法,识别率有待提高,思路清晰,适合新手入门学习使用

资源截图

代码片段和文件信息

%此文件是Bayes最小误差法的实现函数,主文件直接对其进行调用,无参数,返回值是识别结果。

function [number]=Bayes_minerror()
     X=[];
     A=[];
    number=0;
     currPath = fileparts(mfilename(‘fullpath‘));
     manu_picture=strcat(currPath‘\‘‘manu.bmp‘);
     manu_picture=pre_figure(manu_picture);
     for m=1:10
         Y=[];
         folder_name=sprintf(‘%d‘m-1);
         my_str1=strcat(currPath‘\手写数字\‘folder_name);  %这几句主要进行模板数字的路径处理
         for n=1:10
             Z=[];
         filefolder_name=sprintf(‘%d‘n);     
             file_name=strcat(folder_name‘-‘filefolder_name);
             model_picture=strcat(my_str1‘\‘file_name‘.bmp‘);             
             A=pre_figure(model_picture);   %调用预处理函数,获得特征
             for z=1:5                  %将5*5的特征矩阵转换成1*25的矩阵
                 Z=[ZA(z:)];   %矩阵重组
             end
             Y(n:)=Z;           %矩阵重组
         end
         X(::m)=Y;          %X是3维矩阵,第一维分别代表每个样本文件夹里的10个数字。
     end                      %第二维是每个样本的25个特征,第三维分别代表10个文件夹。
     
     mymanu_picture=[];
     for z=1:5
         mymanu_picture=[mymanu_picturemanu_picture(z:)]; %把待识别的手写图片5*5转换成1*25
     end

 %%%%%%%%   下面是Bayes最小误差法,基本原理见图像模式识别—VC++技术实现.pdf   %%%%%%%%%%
     
   hx=zeros(110);
   for n=1:10
       Xmeans=zeros(125);
       %求样本平均值
     for k=1:10
         for i=1:25             
             Xmeans(i)=Xmeans(i)+X(kin);
         end
     end
     for i=1:25
     Xmeans(i)=Xmeans(i)/10;
     end
     
     %求协方差矩阵
     mode=zeros(1025);
     for i=1:10
         for j=1:25
             mode(ij)=X(ijn);
         end         
     end
     for i=1:25
         for j=1:25
             s=0.0;
             for k=1:10
                 s=s+(mode(ki)-Xmeans(i))*(mode(kj)-Xmeans(j));
             end
             s=s/9+0.0000000001*rand();  %这里加了个随机数,因为会有很多项s为0,导致S中出现全0列,使下面对S求逆进行不了
             %s=s/9;
             S(ij)=s;
         end    
     end
     
     %求先验概率
     Pw=0.1;       %总样本数为100,每类样本数都是10,故此为0.1
     invS=inv(S);  %求S的逆矩阵
     detS=det(S);  %求S的行列式
     
     % 求判别函数
     Xx=mymanu_picture;
     for i=1:25
         Xx(i)=Xx(i)-Xmeans(i);     
     end
     t1=Xx*invS*Xx‘;
     t2=log(Pw);
     t3=log(detS+1);
     hx(n)=-t1/2+t2-t3/2;
   end
             
    %求判别函数的最大值
    maxval=hx(1);
    for i=1:10
        if(hx(i)>maxval)
            maxval=hx(i);
            number=i-1;
        end
    end                 


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2750  2012-04-20 15:19  手写数字识别\Bayes_MinError.m

     文件       4118  2012-04-20 15:19  手写数字识别\handwritten_numbers.m

     文件        540  2012-04-20 15:19  手写数字识别\myoutput.m

     文件       2067  2012-04-20 15:38  手写数字识别\pre_figure.m

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\0\0-1.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\0\0-10.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\0\0-2.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\0\0-3.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\0\0-4.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\0\0-5.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\0\0-6.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\0\0-7.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\0\0-8.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\0\0-9.bmp

    ..A..H.     36352  2012-04-19 14:54  手写数字识别\手写数字\0\Thumbs.db

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\1\1-1.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\1\1-10.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\1\1-2.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\1\1-3.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\1\1-4.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\1\1-5.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\1\1-6.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\1\1-7.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\1\1-8.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\1\1-9.bmp

     文件       1810  2012-04-19 14:54  手写数字识别\手写数字\1\quanzhi.txt

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\2\2-1.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\2\2-10.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\2\2-2.bmp

     文件      58678  2012-04-19 14:54  手写数字识别\手写数字\2\2-3.bmp

............此处省略218个文件信息

评论

共有 条评论