版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
]手写数字识别系统的设计与实现摘要本手写数字识别系统是一个以VISUALSTUDIOC++为编译环境,使用MFC进行图形图像界面开发的系统。主要功能是通过在点击手写数字识别菜单下的绘制数字标签弹出的绘制数字窗口中完成数字的手写,在此窗口中可以进行数字的保存及清屏,然后通过文件菜单中的打开标签打开所绘制的数字,从而进行数字的预处理,其中包括灰度化及二值化处理,然后进行特征提取,最后实现数字的识别。本系统的界面设计友好,流程正确,功能也较为完善。实验结果表明,本系统具有较高的识别率。关键词:绘制数字;预处理;特征提取;特征库;数字识别/;目录前言 1概述 21需求分析 4功能需求分析 4,性能需求分析 4数据需求分析 5相关软件介绍 52手写数字识别系统的设计与基本原理 6系统整体功能模块设计 6手写数字识别系统的基本原理 6数字图像的绘制 6图像的预处理 6)图像的特征提取 7特征库的建立 8图像数字的识别 83手写数字识别系统程序设计 8数字图像的绘制 8数字的特征提取 15模板特征库的建立 18数字的识别 20(总结 23致谢 24参考文献 25前言自上世纪六十年代以来,计算机视觉与图像处理越来越受到人们的关注,并逐渐成为一门重要的学科领域。而作为它们的研究对象的数字图像,也因为它含有研究目标的丰富信息而成为越来越重要的研究对象。图像识别的目标是用计算机自动完成某些信息的处理,用来替代人工去处理图像分类及识别的任务。手写数字识别是图像识别学科下的一个分支,是图像处理和模式识别领域研究的课题之一,由于其具有很强的实用性一直是多年来的研究热点。由于手写体数字的随意性很大,例如,笔画的粗细,字体的大小,倾斜等等都直接影响到字符的正确识别,所以手写体数字识别是一个很有挑战性的课题。在过去的数十年中,研究者们提出了许多的识别方法,取得了较大的成果。手写体数字识别实用性很强,在大规模数据统计(如例行年检,人口普查),财务,税务,邮件分拣等等应用领域中都有广阔的应用前景。本课题拟研究手写体数字识别的理论和方法,开发一个小型的手写体数字识别系统。在研究手写体数字识别理论和方法的基础上,开发这样一个小型的手写体数字识别系统需要完成以下主要方面的研究与设计工作:手写数字绘制的问题、数字的预处理问题、特征提取问题、特征库的建立问题、数字识别问题。概述此手写数字识别系统的需要实现手写数字的绘制功能、手写数字的特征提取功能、数字的模板特征库的建立功能以及手写数字的识别功能。在近几年国内外对手写数字识别系统的研究已经取得了进展,一些新的理论例如基于Hopfield神经网络、基于小波技术、基于BP神经网络以及支持向量机的研究应用在建立手写数字识别系统平台,并且在多数数据库中取得了较好的测试结果。但是目前仍然存在亟需深入研究解决的问题:1)识别的准确度需要达到较好的水平2)识别的效率要达到很高的水平。数字识别输入的数据通常是很大的,而高精度与高速度是相互矛盾。这些难点存在的原因是:1)数字的笔划简单,而且其笔划差别相对较小,字形相差不大,使得准确区分某些数字有一些困难;2)数字虽然只有10种,且笔划简单,但同一数字写法却千差万别,全世界的各个国家各个地区的人都在用,则其书写上带有区域特性,很难做出可以兼顾世界各种写法的、识别率极高的通用性数字识别系统。3)特征库的训练不够,导致识别率不高。手写数字识别的研究不仅存在很大的应用价值,由于手写数字识别本身的特点,对它的研究也存在着重要的理论价值:1)阿拉伯数字作为唯一被世界各国通用的符号,所以对手写体数字识别的研究基本上与文化背景无关,各地的研究工作者可以说是基于同一平台开展工作的,有利于研究的比较和探讨。2)手写数字识别应用广泛,如税表系统,银行支票自动处理和邮政编码自动识别等。在以前,这些工作需要大量的手工录入,投入的人力物力都相对较多,而且劳动强度较大。为了适应无纸化办公的需要,大大提高工作效率,研究实现手写数字识别系统是必须要做的。3)由于数字类别只有0-9共10个,比其他字符识别率较高,可将其用于验证新的理论或做深入的分析研究。许多机器学习和模式识别领域的新理论和算法都是先用手写数字识别进行检验,验证其理论的有效性,然后才会将其应用到更为复杂的领域当中。在这方面的典型例子就是人工神经网络和支持向量机。4)手写数字的识别方法很容易将其推广到其它一些相关的问题上,如对英文之类拼音文字的识别。事实上,有许多学者就是把数字和英文字母的识别放在一起研究的。在过去的数几年中,研究者提出了许许多多的识别方法,按提取的数字特征的不同,可以将这些方法分为两类:基于结构特征的方法和基于统计特征的方法。统计特征通常包括点密度的测量、矩、特征区域等;结构特征通常包括圆、端点、交叉点、笔划、轮廓等,一般来说,两类特征各有优势。例如,使用统计特征的分类器易于训练,而且对于使用统计特征的分类器,在给定的训练集上能够得到相对较高的识别率;而结构特征的主要优点之一是能描述字符的结构,在识别过程中能有效地结合几何和结构的知识,因此能够得到可靠性较高的识别结果。在此次的设计中使用的是统计特征。基于以上所述,本次毕业设计课题为手写数字识别系统的设计与实现。其功能是将人工手绘的数字图像转换成可编辑的文本信息。该系统包括手写数字绘制模块、图像预处理模块、特征提取模块、训练模块和识别模块。涉及模式识别、图像处理、人工智能、统计学、心理学和计算机科学等相关内容。通过对图像处理和识别算法进行不断地研究和实践,以降低误识率和拒识率。本文主要介绍手写数字识别系统的设计与实现,首先需要了解手写数字识别系统现阶段的发展情况和研究现状,然后对系统进行分析,主要从功能需求分析、性能需求分析、数据需求分析和相关软件介绍四方面入手,从而使得对系统有初步的认识,然后对系统的整体设计模块进行介绍,进而对系统的各个功能模块具体的设计原理进行详细介绍,之后对本次所设计出的系统进行介绍并对相关代码进行说明,最后总结本系统的优缺点及今后工作展望等,整篇文章通俗易懂,条理清晰,可以使读者轻松阅读,并理解实现过程。1需求分析综合用户在实际应用中的需求,对系统的运作流程进行了整理,并通过对流程的分析得出了如下的需求分析。功能需求分析根据对用户需求的分析,系统应包含以下功能:数字的绘制在绘制数字的窗口中实现数字的手写,并对其坐标值进行保存,利用复位按钮可实现数字的清除工作。数字的预处理在手写数字图像识别系统中,图像的预处理跟一般图像系统不同,我们不需要对图像进行灰度化处理、去噪处理等基本操作,我们利用程序保存的坐标值就可以对生成一张二值化图像,相当于图像处理系统的二值化处理。特征的提取在第二步中我们得到了手写数字的二值化图像,进行特征提取前需要对此图像的数据区域进行定位,在程序中我们遍历此二值化图像,找到手写数字区域的上、下、左、右边界,重新生成一张数字图片,利用新生成的数字图片分成8*8的区域,统计每个区域的目标像素个数和整个小区域像素个数,计算目标像素个数与整个小区域像素的比值,得到64个特征值,作为这个手写数字的特征值。特征库的训练我们需要训练一个特征库,作为识别的标准。系统中我们手写一个数字提取出它的特征值,再输入此手写数字,将数字与这些特征值相对应存储到特征库里面,特征库我们使用的是Access数据库,字段是数字及这个数字所对应所有特征值。特征库越丰富,识别率越高。数字识别在手写数字识别中,我们使用的方法是模板匹配法,其实质就是提取出手写数字的特征值,利用这些特征值与特征库的数字的特征值进行比对,找出待识别数字特征值与特征库里存储的特征值最接近的数字,作为识别结果。性能需求分析正确性:根据手写数字识别系统的设计流程,流程中的每个步骤在系统中都必须有所体现,以保证程序的正确性。精确性:根据手写数字识别系统的应用领域,该系统的识别结果必须有很高的识别精度,这样才能真正的实现该系统的价值。效率性:根据该系统的应用领域可知,系统一旦投入应用需要处理大量的数据,所以对系统的处理速度也有很高的要求。数据需求分析根据手写数字识别系统的设计步骤可知该系统采用的是模板匹配法进行手写体数字识别。模板匹配法是图像识别中最具有代表性的方法之一。它是将从待识别的图像提取的若干特征量与模板对应的特征量进行比较,计算图像和模板特征量之间的距离,用最小距离法判定所属类。而模板匹配通常需要事先建立标准模板库。这里,模板库中的标准模板是数字样本的特征向量。特征库的存储是利用Access数据库,并且利用MFCADO技术连接数据库,不需要进行硬件配置。数据库如图所示。图数据库相关软件介绍本课题是基于VisualC++的,它是Microsoft公司开发的VisualStudio集成开发环境中功能最为强大、代码效率最高的开发工共。利用VisualC++可以两种方式编写Win32应用程序,一种方式是基于WindowsAPI的C编程方式,另一种是基于MFC的C++编程方式。本系统采用的是基于MFC的编程方式。2手写数字识别系统的设计与基本原理系统整体功能模块设计整体模块如图所示:数字图像的绘制数字图像的绘制训练特征库二值化处理特征提取数字识别主界面图整体模块手写数字识别系统的基本原理下面分别介绍各部分工作的基本原理:2.2.1数字图像的绘制手写数字绘制功能的实现方案是:通过VisualC++中的CStatic控件来建立画布,用MFC中的封装类CDC实现手写数字功能。在对话框中,响应鼠标事件的消息,分别是鼠标按下事件MouseDown,鼠标移动事件MouseMove,鼠标抬起事件MouseUp,判断当前鼠标点是否在CStatic控件上,在的话程序将此点的坐标值保存。手写数字的绘制开始是鼠标按下事件,结束是以左鼠标抬起为标志。2.2.2图像的预处理图像的预处理是为了突出手写体数字的特征。在本次设计中主要包括:图像二值化处理。图像的二值化处理就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果。在手写数字识别系统中,我们在VC可视化编程界面中在一个固定大小的控件中手写了一个数字,在程序中获得的只是以这个控件左上角为原点的一系列坐标。在内存中我们开辟一个大小跟这个控件区域大小相同的二维数组(以像素为单位,即生成一张图片的长跟宽跟这个矩形区域相等),这样内存中图像的数据区域的二维数组就跟手写区域的坐标相同,我们再取出手写区域的坐标值,将这些坐标值对应到图像图像数据区域中,并且将它的灰度值置为255(白色),将图像数据区域的其它坐标值下的灰度值置为0(黑色),这样我们就得到了一张手写数字的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。2.2.3图像的特征提取若直接把预处理后的数据作为输入量,进行分类计算时数据时数据量大,同时由于手写字体的多样化及图像本身和预处理过程中附带的某些干扰的影响,对系统的容错能力要求较高。特征提取的目的就是从分析数字的拓扑结构入手,把它的某些结构特征提取出来,使数字的位移、大小变化、字形畸形等干扰相对较小,也就是把那些反映数字特征的关键信息提供给系统,这样就等于间接地增加了系统的容错能力,而且经过特征提取后数据量也大大减少了,这样就提高了识别的效率。手写数字识别的特征提取极大程度地影响着分类器的设计和性能,以及识别的效果和效率。为了保证所要求的分类识别的正确率和节省资源,希望依据最少的特征达到所要求的分类识别的正确率。在进行手写数字识别的过程中,特征提取应遵循以下原则:特征应能尽量包含字符的有用信息。特征的提取方法应简单而且提取快速。各个特征之间的相关性应尽可能小。特征数量尽可能少。特征应有较好的抗干扰能力。考虑到算法的实时性、快速性和准确性,在此次设计中采用的是一种简单的模板法对待测样本进行特征提取。步骤为:1、搜索数据区域,找出手写体数字的上下左右边界。2、将搜索到的数字区域平分成8*8共64个小区域。3、计算8*8的每一个小区域中白色像素所占比例,即用每一个小区域内的白色像素个数除以该小区域的面积总数(总像素数),即得特征值,第一行的8个比例值是特征的前8特征值,第二行对应着特征的9~16个,以此类推。2.2.4特征库的建立在手写数字识别系统中,我们首先要建立一个特征库,我们手写一个数字,并且取得这个数字的特征值,然后再想程序输入这个数字,在程序中将此输入数字与所有特征值相对应,作为模板库的一条记录,初始化模板库之后,就可以对手写数字进行识别,在识别的过程中我们不断的丰富模板库,如果手写数字识别成功则不需要将此数字存储到模板库中,如果识别失败就需要将此数字存储到模板库中,这样我们的模板库将越来越丰富。2.2.5图像数字的识别在手写数字图像特征提取结束后,即可进行数字的识别。这也是手写数字识别系统设计的最后一个环节,在本次设计中采用模板匹配法进行手写体数字识别。模板匹配法是图像识别中最具有代表性的方法之一。它是将从待识别的图像提取的若干特征量与模板对应的特征量进行比较,计算图像和模板特征量之间的距离,用最小距离法判定所属类。模板匹配通常事先建立标准模板库。这里,模板库中的标准模板是数字样本的特征向量。具体过程是:对于一个待测试的样本X,计算X和训练集中的某样本Xj(0<j<m,m为训练集中的样本数)之间的距离。循环计算待测样本和训练集中各已知样本之间的距离,比较所有的距离值,找出距离待测样本最近的已知样本,其中所对应的样本所属的类别就是待测样本X所属的类别。3手写数字识别系统程序设计本次设计使用VisualC++语言来实现该系统,其用户界面分别介绍如下:数字图像的绘制运行程序后得到系统的初始界面,如图所示。在绘图区域通过响应鼠标事件来完成手写数字的绘制问题,如图所示,通过 CPen创建对象pen并进行相关值的设置如pen(PS_SOLID,3,RGB(0,0,255))可以创建出不同颜色和粗细的画笔,消息响应事件是通过函数OnLButtonDown(UINTnFlags,CPointpoint)、OnMouseMove(UINTnFlags,CPointpoint)、OnLButtonUp(UINTnFlags,CPointpoint)来实现的。手写数字的绘制过程中通过建立堆栈即可实现手写数字的保存,所用函数为AddPointStack(constCPoint&point)。绘制数字后还可以对所绘制数字进行清除,通过函数OnButtonRset()即可实现,点击系统见面上的复位按钮即可实现此功能。点击显示按钮即可得到二值化后的黑白图像,如图所示。图系统初始界面图手写数字的绘制图二值化结果具体实现代码为:1.手写数字的绘制voidCNumShiBieDlg::OnLButtonDown(UINTnFlags,CPointpoint){ CRectrect,rect1,rect2; CStringstr; this->GetClientRect(rect); (rect1);写数字的存储boolCNumShiBieDlg::AddPointStack(constCPoint&point){ CStringstr; boolb=false; if!= { *+=point; +=1;写数字的清除voidCNumShiBieDlg::OnButtonRset(){ 值化后的显示voidCNumShiBieDlg::OnButtonShownum(){ 到64个区域的特征值double*CNumShiBieDlg::Get64Feature(BYTE*pd,intw,inth){ double*pFeature=newdouble[64]; if((w%8==0)&&(h%8==0)) { inthc=h/8; intwc=w/8; intjishu=0; intj=0;到每个小区域的特征值doubleCNumShiBieDlg::GetOneFeature(intbrow,interow,intbcol,intecol,BYTE*pdata,intw){ intpixAim=0; intpixSum=0; for(inti=brow;i<erow;i++) for(intj=bcol;j<ecol;j++) if(pdata[i*w+j]==255) pixAim++; else pixSum++; doubledf; df=(double)pixAim/(double)pixSum; returndf;}模板特征库的建立点击系统界面上的训练按钮即可实现特征库的建立,训练的次数越多特征库越丰富,识别结果就越准确。在此系统的特征库是存储在Access数据库中,如图所示。在此利用MFCADO技术连接数据库,并且建立记录集对象并通过函数OnButtonInitialize()来实现特征库的训练。图特征库具体实现代码为:1.连接数据库CStringstrSql; strSql="select*fromFeature64"; (__uuidof(Recordset)); m_rsetPtr->Open(_bstr_t(strSql),(),adOpenStatic,adLockOptimistic,adCmdText);2.训练特征库voidCNumShiBieDlg::OnButtonInitialize()um=; doubled[64]; for(inti=0;i<64;i++) { CStringtemp; ("Feature%d",i+1); var=m_rsetPtr->GetCollect(_bstr_t(temp)); temp=(LPCSTR)(_bstr_t)var; d[i]=::atof(temp); } doublesum=; for(i=0;i<64;i++) { sum+=(pfeature[i]-d[i])*(pfeature[i]-d[i]); }eature=sum; count++; m_rsetPtr->MoveNext(); } doublemin=pN[0].feature; intindex=0; for(intk=1;k<count;k++) { if(min>pN[k].feature) { min=pN[k].feature; index=k; } } m_rsetPtr->Close();um); AfxMessageBox(str); delete[]pN; }}总结本文对基于VC++的手写数字识别系统的基本原理及方法进行了介绍。手写体数字识别是一个极具研究价值的课题,手写数字的样品类别总共只有0一9十类,与其它的大字符集的识别(汉字识别)相比要相对容易。本文所采用的模板匹配分类器既节省时间,简便易行,也
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度劳动合同:某互联网公司与员工的就业协议
- 电影胶片显影机市场发展预测和趋势分析
- 2024年度智能家居系统研发与合作合同
- 2024年度带电器家具的个人租房合同:租金减免及优惠政策
- 2024年度版权出租合同标的及出租期限和租金
- 2024年度物联网技术在智慧物流中的应用合同
- 2024年度LED路灯驱动电源技术开发与合作合同
- 2024年度录像资料存储与处理安全合同
- 2024全新彩绘合同协议书下载
- 家庭日用纺织品市场发展现状调查及供需格局分析预测报告
- 2022宁夏共享集团公司校园招聘48人上岸笔试历年难、易错点考题附带参考答案与详解
- 基因扩增实验室常用仪器使用课件
- 2023年营养师、营养指导员专业技能及理论知识考试题库(附含答案)
- 肺功能万里行考试内容
- 男生青春期教育讲座-课件
- 《银行运营档案管理系统业务管理规定》制定说明
- 教育人力资源管理:绩效管理(二)教学课件
- 阳光少年实践活动心得感悟3篇
- 经典校园英语舞台剧剧本:皇帝的新装
- pep人教版英语六年级上册Unit2《Waystogotoschool》大单元作业设计(三)
- 全员育人导师制学生谈话记录
评论
0/150
提交评论