• 大小: 102KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-23
  • 语言: Matlab
  • 标签:

资源简介

手写数字识别matlab实现,源代码附上。用到机器学习的方法

资源截图

代码片段和文件信息

function testsample = Getfeature(im)


[rowcol] = find(im==0); %得到图片的上下左右的边界
im = im(min(row):max(row)min(col):max(col));   %找到图片中手写数字的位置

[rowcol] = size(im);  %手写数字的行和列
w = fix(row/5);   % fix是为了取整
h = fix(col/5);
count = 0;
k=1;
testsample = zeros(125);

for i=1:w:5*w  %从第一行开始
    for j=1:h:5*h  %从第一列开始
        for m=i:i+w-1   
            for n=j:j+h-1
                if im(mn)==0
                    count=count+1;
                end
            end
        end
        testsample(k)=count/(w*h);  %第k个特征分量
        count=0;
        k=k+1;
    end
end
end


        

% struct pattern//pattern结构体,保存某个数字类别(0~9)的所有样品特征
% {
%  int number;  %该手写数字样品个数
%  double feature[200][25];  %各样品特征,每类手写数字最多有200个样品,每个样品有25个特征
% };

% class GetFeature : public CDib  
% {
% public:
%  pattern pattern[10];  %手写数字样品特征库
%  double testsample[25];  %待测的手写数字
%  int width;  %手写数字的宽
%  int height;  %手写数字的高
%  int LineBytes;

%  void Save(int cls);  %将手写的数字保存到cls(0~9)类别中
%  BOOL Saveable(int cls);  %判断手写的数字能否保存到cls(0~9)类别中,因为各类别中样品特征不能重复
%  double Cal(int row int col);  %计算分割好的5×5小区域中,黑像素所占的比例
%  void SetFeature();  %计算手写数字的特征,赋值给testsample
%  void GetPosition();  %获得手写数字的位置
%  GetFeature();
%  virtual ~GetFeature();

% protected:
%  int bottom;  %手写数字的底部
%  int top;  %手写数字的顶部
%  int left;  %手写数字的左边
%  int right;  %手写数字的右边
% };
% ***************************************************************
% *   函数名称:GetPosition()
% *   函数类型:void 
% *   函数功能:搜索手写数字的位置,赋值给bottomdownrightleft
% ****************************************************************/
% void GetFeature::GetPosition()
% {
%  width=GetWidth();
%  height=GetHeight();
%  LineBytes=(width*8+31)/32*4;

%  int ij;
%  BOOL flag;
%  for(j=0;j%  {
%  flag=FALSE;
%  for(i=0;i%  if(m_pData[j*LineBytes+i]==0)
%  {
%  flag=TRUE;
%  break;
%  }
%  if(flag)
%  break;
%  }
%  bottom=j;
%  for(j=height-1;j>0;j--)
%  {
%  flag=FALSE;
%  for(i=0;i%  if(m_pData[j*LineBytes+i]==0)
%  {
%  flag=TRUE;
%  break;
%  }
%  if(flag)
%  break;
%  }
%  top=j;
%  for(i=0;i%  {
%  flag=FALSE;
%  for(j=0;j%  if(m_pData[j*LineBytes+i]==0)
%  {
%  flag=TRUE;
%  break;
%  }
%  if(flag)
%  break;
%  }
%  left=i;
%  for(i=width-1;i>0;i--)
%  {
%  flag=FALSE;
%  for(j=0;j%  if(m_pData[j*LineBytes+i]==0)
%  {
%  flag=TRUE;
%  break;
%  }
%  if(flag)
%  break;
%  }
%  right=i;
% }

% /***************************************************************
% *   函数名称:SetFeature()
% *   函数类型:void 
% *   函数功能:将手写数字特征保存在变量testsample中
% ****************************************************************/
% void GetFeature::SetFeature()
% {
%  int ij;
%  for(j=0;j<5;j++)
%  {
%  for(i=0;i<5;i++)
%  {
%  testsample[5*(4-j)+i]=Cal(ji);//(Cal(ji)>0.10)?1:0;//
%  }

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

     文件       5149  2013-11-13 15:28  手写数字识别matlab实现\Getfeature.m

     文件      13798  2013-11-13 15:28  手写数字识别matlab实现\homework.fig

     文件      41192  2013-11-13 15:28  手写数字识别matlab实现\homework.m

     文件      32253  2013-11-13 15:28  手写数字识别matlab实现\losstab.fig

     文件      98958  2013-11-13 15:28  手写数字识别matlab实现\losstab.m

     文件        545  2013-11-13 15:28  手写数字识别matlab实现\readme.txt

     文件      12990  2013-11-13 15:28  手写数字识别matlab实现\samplelib.fig

     文件      34678  2013-11-13 15:28  手写数字识别matlab实现\samplelib.m

     文件       2643  2013-11-13 15:28  手写数字识别matlab实现\save_sample.fig

     文件       5287  2013-11-13 15:28  手写数字识别matlab实现\save_sample.m

     文件      24661  2013-11-13 15:28  手写数字识别matlab实现\template.mat

     目录          0  2013-11-13 15:28  手写数字识别matlab实现

----------- ---------  ---------- -----  ----

               272154                    12


评论

共有 条评论