基于opencv的手写数字字符识别_第1页
基于opencv的手写数字字符识别_第2页
基于opencv的手写数字字符识别_第3页
基于opencv的手写数字字符识别_第4页
基于opencv的手写数字字符识别_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

于的手写数字别2013级

计算机软与理论摘要本程序主参照论文,《基于OpenCV脱机手写字符识别术》实现了,对于手写阿伯数字的识别工作。别工作分三大步骤:预,特征提取,分类识别。预处过主要找到图像的部分子图像并行大小的归一化处理特征提取将图像转化特征向量,分类识别采k-近分方法进行分处,最根据类果完成识工。程采用2010与OpenCV2.4.4在位旗版统下开发完。在xp-32位系统下试用主流图:细化流程图:1.预处理预处理的过程就是找到图像的区域的过程,如下图所示:首先找到数字的边界框,然后大小归一化数字图片,主要流程如下图所示:主要代码:Iplimagepreprocessing(IplImage*imgSrc,intnew_width,intnew_height){IplImage*result;IplImage*scaledResult;CvMatdata;CvMatdataA;CvRectbb;//boundingboxCvRectbba;//boundinbboxmaintainaspectratio//Findboundingbox找到边界框=findBB(imgSrc);GetSubRect(imgSrc,&data,cvRect(bb.x,bb.y,bb.width,bb.height));intsize=(bb.width>bb.height)?bb.width:bb.height;result=cvCreateImage(cvSize(size,size),8,1);cvSet(result,CV_RGB(255,255,255),NULL);//将图像放中间,大小归一化intx=(int)floor((float)(size-bb.width)/2.0f);inty=(int)floor((float)(size-bb.height)/2.0f);cvGetSubRect(result,&dataA,cvRect(x,y,bb.width,bb.height));cvCopy(&data,&dataA,NULL);//Scaleresult1);*scaledResult;//直接回理的片}2.特提取在到像少信量后就以接图作向矩作输入:{i++)//总共个数字{for(j=0;j<train_samples;j++)//个数字个样本{//加载所有的样本格式图像作为训练if(j<10)sprintf(file,"%s%d/%d0%d.pbm",file_path,i,i,j);elsesprintf(file,"%s%d/%d%d.pbm",file_path,i,i,j);src_image=cvLoadImage(file,0);if(!src_image){printf("Error:CantloadImage%s\n",file);//exit(-1);}//processfileprs_image=preprocessing(src_image,size,size);//生成训练矩阵,每个图像作为一个向量cvGetRow(trainClasses,&row,i*train_samples+j);cvSet(&row,cvRealScalar(i));//SetdatacvGetRow(trainData,&row,i*train_samples+j);IplImage*img=cvCreateImage(cvSize(size,size),IPL_DEPTH_32F,1);//转换imageto32位浮点数图片取值区间为[0,1]//scale=0.0039215=1/255;cvConvertScale(&prs_image,img,0.0039215,0);cvGetSubRect(img,&data,cvRect(0,0,size,size));CvMatrow_header,*row1;//convertdatamatrixsizexsizetovecorrow1=cvReshape(&data,&row_header,0,1);cvCopy(row1,&row,NULL);}}}3.分类识别识别方法采用近邻分类法。这个算法首先贮藏所有的训练样本,然后通过分析(包括选举,计算加权和等方式)一个新样本周围最近邻以给出该样本的相应值。这种方法有时候被称作“基于样本的学习”,即为了预测,我们对于给定的输入搜索最近的已知其相应的特征向量。K最近邻(k-NearestNeighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的个最相似即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说KNN方法较其方法为。识别作主要有以几个:1.机器学习算法,其训练knn=newCvKNearest(trainData,trainClasses,0,false,K);因为trainData,trainClasses数据已。训练在算法中已经成2.识别识别测的数据,testDataresult=knn->find_nearest(testData,K,0,0,nearest,0);result为返回的识别的结果4.实验结果在参数,子图像向量大小选取像素,训练样本副图片,测试样本副图片,系统误识率为。对于用户手写阿拉伯数字的识别结果为,识别比较准确。5.未来的工作本程序主要参照网上的一些实例完成了部署跟实验工作,虽然仅仅完成了手写阿拉伯数字的识别工作,但是字符识别的一些原理工作都是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论