Open Nav

基于模式识别的手写汉字识别毕业设计论文(5)

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.仅供学习参考之用.
   帮助中心
资料介绍:

 for(i=width-1;i>0;i--)
 {
  flag=FALSE;
  for(j=0;j<height;j++)
   if(m_pData[j*LineBytes+i]==0)
   {
    flag=TRUE;
    break;
   }
  if(flag)
   break;
 }
 right=i;
}
[资料来源:http://doc163.com]

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

/****************************************************************
*   函数名称:Cal(int row, int col)
*   函数类型:double
*   参数说明:int row, int col:第row行,第col个区域
*   函数功能:计算某一小区域内黑像素所占比例,返回某一小区域内黑像素所占比例
****************************************************************/
double GetFeature::Cal(int row, int col)
{
 double w,h,count;
 w=(right-left)/5;
 h=(top-bottom)/5;
 count=0;

[资料来源:Doc163.com]

 for(int j=bottom+row*h;j<bottom+(row+1)*h;j++)
 for(int i=left+col*w;i<left+(col+1)*w;i++)
 {
  if(m_pData[j*LineBytes+i]==0)
   count++;
 } [资料来源:www.doc163.com]

 return (double)count/(w*h);
} [来源:http://www.doc163.com]

/***************************************************************
*   函数名称:Savealbe(int cls)
*   函数类型:BOOL
*   参数说明:int cls:类别
*   函数功能:判断手写数字可否保存为cls类别的一个样品
*             同一类别的样品不能有重复的
****************************************************************/
BOOL GetFeature::Saveable(int cls)
{
 for(int i=0;i<pattern[cls].number;i++)
 {
  BOOL flag=TRUE;
  for(int j=0;j<25;j++)
   flag&=(pattern[cls].feature[i][j]==testsample[j])?TRUE:FALSE;
  if (flag) return FALSE;
 }
 return TRUE;
} [资料来源:http://doc163.com]

/***************************************************************
*   函数名称:Save(int cls)
*   函数类型:void
*   参数说明:int cls:类别
*   函数功能:将手写数字保存为cls类别的一个样品,保存在样品的第一个
****************************************************************/
void GetFeature::Save(int cls)
{
 for(int i=pattern[cls].number;i>0;i--)
  for(int j=0;j<25;j++)
   pattern[cls].feature[i][j]=pattern[cls].feature[i-1][j];
 for(i=0;i<25;i++)
  pattern[cls].feature[0][i]=testsample[i];
 pattern[cls].number++; 
}

[版权所有:http://DOC163.com]

  [来源:http://www.doc163.com]


int GetFeature::LeastDistance()
{
   double min=10000000000;
 int no;
 for(int n=0;n<10;n++)
 {
  for(int i=0;i<pattern[n].number;i++)
  {
   if(pipei(pattern[n].feature[i],testsample)<min)
   {
    //匹配的最小值
    min=pipei(pattern[n].feature[i],testsample);
    no=n;//样品类别
   }
  }
 }
 return no;//返回手写数字的类别和序号
}

[资料来源:http://Doc163.com]

double GetFeature::pipei(double s1[], double s2[])
{
    double count=0.0;
 for(int i=0;i<25;i++)
 {
  count+=(s1[i]-s2[i])*(s1[i]-s2[i]);
 }
 return count;
}

[资料来源:Doc163.com]

  • 关于资料
    提供的资料属本站所有,真实可靠,确保下载的内容与网页资料介绍一致.
  • 如何下载
    提供下载链接或发送至您的邮箱,资料可重复发送,若未收到请联系客服.
  • 疑难帮助
    下载后提供一定的帮助,收到资料后若有疑难问题,可联系客服提供帮助.
  • 关于服务
    确保下载的资料和介绍一致,如核实与资料介绍不符,可申请售后.
  • 资料仅供参考和学习交流之用,请勿做其他非法用途,转载必究,如有侵犯您的权利或有损您的利益,请联系本站,经查实我们会立即进行修正! 版权所有,严禁转载
    doc163.com Copyright © 2012-2024 苏ICP备2021029856号-4