手写体数字识别系统.docx
- 文档编号:15255406
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:43
- 大小:948.25KB
手写体数字识别系统.docx
《手写体数字识别系统.docx》由会员分享,可在线阅读,更多相关《手写体数字识别系统.docx(43页珍藏版)》请在冰点文库上搜索。
手写体数字识别系统
石河子大学
信息科学与技术学院毕业论文
课题名称:
手写体数字识别系统设计
学生姓名:
学号:
学院:
信息科学与技术学院
专业年级:
电子信息工程2007级
指导教师:
职称:
完成日期:
二○一一年六月十一日
手写体数字识别系统设计
学生:
指导教师:
[摘要]随着科学技术的迅速发展,在邮政编码、统计报表、财务报表、银行票据等处理大量字符信息录入的场合,手写数字识别系统的应用需求越来越强烈,如何将数字方便、快速地输入到计算机中已成为关系到计算机技术普及的关键问题。
本文设计实现了一个基于Matlab软件的手写体数字识别系统,采用模块化设计方法,编写了摄像头输入、直接读取图片、写字板输入三个模块,利用摄像头等工具,将以文本形式存在的手写体数字输入进计算机,完成对手写体数字图片的采集,并设计了一种手写数字识别方法,对手写体数字图像进行预处理、结构特征提取、分类识别,最终以文本形式输出数字,从而实现手写体数字的识别。
[关键词]预处理,结构特征提取,分类识别,手写体数字识别
HandwrittenDigitRecognitionSystem
Students:
Teacher:
Abstract:
Withtherapiddevelopmentofscienceandtechnology,inzipcode,statistics,reports,financialstatements,Bankbillsdealingwithalargenumberofcharacters,suchasinformationrecordedoccasions,handwrittendigitrecognitionsystemofrequirementhasbecomestrongerandstronger,howeasilyandquicklythenumberenteredinthecomputerhasbecomeakeyissuerelatestothepopularizationofcomputertechnology.ThisarticledesignimplementationhasabasedonMatlabsoftwareofhandwritingbodydigitalrecognitionsystem,usedmoduleofdesignmethod,writehascameraentered,anddirectlyreadpictures,andwriteBoardenteredthreeamodule,usingcamera,tools,willtotextformexistsofhandwritingbodydigitalenteredintocomputer,completedonhandwritingbodydigitalpicturesofcollection,anddesignhasahandwritingdigitalrecognitionmethod,onhandwritingbodydigitalimageforpretreatment,andstructurefeaturesextraction,andclassificationrecognition,eventuallytotextformoutputdigital,toimplementationhandwritingbodydigitalofrecognition.
Keywords:
Pretreatment,structurefeatureextraction,classificationandrecognition,handwrittendigitrecognition.
第一章引言
1.1课题背景
数字已有数千年的历史,在世界上使用很广,然而,在当今社会里,如何快速高效地将数字输入计算机,已成为影响人机接口效率的一个重要瓶颈,也关系到计算机能否真正在我国得到普及应用[1]。
手写数字识别是光学字符识别技术(OpticalCharacterRecognition,简称OCR)的一个分支,它研究的对象是:
如何利用电子计算机自动辨认人手写在纸张上的阿拉伯数字。
在整个OCR领域中,最为困难的就是脱机手写字符的识别。
到目前为止,尽管人们在脱机手写英文、汉字识别的研究中已取得很多可喜成就,但距实用还有一定距离。
而在手写数字识别这个方向上,经过多年研究,研究工作者已经开始把它向各种实际应用推广,为手写数据的高速自动输入提供了一种解决方案[2]。
字符识别处理的信息可分为两大类:
一类是文字信息,处理的主要是用各国家、各民族的文字(如:
汉字,英文等)书写或印刷的文本信息,目前在印刷体和联机手写方面技术已趋向成熟,并且推出了很多应用系统;另一类是数据信息,主要是由阿拉伯数字及少量特殊符号组成的各种编号和统计数据,如:
邮政编码、统计报表、财务报表、银行票据等等,处理这类信息的核心技术是手写数字识别。
这几年来我国开始大力推广的“三金”工程在很大程度上要依赖数据信息的输入,如果能通过手写数字识别技术实现信息的自动录入,无疑会促进这一事业的进展。
因此,手写数字的识别研究有着重大的现实意义,一旦研究成功并投入应用,将产生巨大的社会和经济效益[3]。
1.2课题研究目的及意义
1.2.1手写体数字识别的研究目的
手写数字识别在学科上属于模式识别和人工智能的范畴。
在过去的四十年中,人们想出了很多办法获取手写字符的关键特征。
这些手段分两大类:
全局分析和结构分析。
对前者,我们可以使用模板匹配、象素密度、矩、特征点、数学变换等技术。
对后者,多半需要从字符的轮廓或骨架上提取字符形状的基本特征,包括:
圈、端点、节点、弧、突起、凹陷、笔画等[4]。
多年的研究实践表明,对于完全没有限制的手写数字,几乎可以肯定:
没有一种简单的方案能达到很高的识别率和识别精度。
因此,最近这方面的努力向着更为成熟、复杂、综合的方向发展。
本课题通过对手写体数字识别系统的研究,介绍了一种手写数字识别核心算法。
即基于数字的结构,利用模板匹配、象素密度、矩、特征点、数学变换等技术获取手写体数字的关键特征,提出一种具体识别数字的方法,利用我们所掌握的电子信息工程的专业知识来实现,进而完成手写体数字识别系统的设计。
1.2.2手写体数字识别的研究意义
手写数字识别研究价值意义在于自然人机交互领域,提高人机交互的自然性和友好性。
在于数字信息自动处理领域,节省人力,提高效率,加快信息流动,创造巨大的经济效益[5]。
手写数字识别的理论价值如下[6]:
(1)阿拉伯数字是唯一的被世界各国通用的符号,对手写数字识别的研究基本上与文化背景无关,这样就为各国,各地区的研究工作者提供了一个施展才智的大舞台。
在这一领域大家可以探讨,比较各种研究方法。
(2)由于数字识别的类别数较小,有助于做深入分析及验证一些新的理论。
(3)尽管人们对手写数字的识别已从事了很长时间的研究,并已取得了很多成果,但到目前为止机器的识别本领还无法与人的认知能力相比,这仍是一个有难度的开放问题。
(4)手写数字的识别方法很容易推广到其它一些相关问题,一个直接的应用是对英文这样的拼音文字的识别。
事实上,很多学者就是把数字和英文字母的识别放在一块儿研究的。
1.3课题研究现状及发展趋势
手写数字识别有着重要的价值,IBM、HP、日立、东芝、夏普、NEC、理光和新加坡热卡公司等国外公司都曾巨额投入手写数字识别领域。
而随着国家信息化进程的加速,手写数字识别的应用需求越来越广泛,应用系统的性能的关键与瓶颈在于手写数字识别核心算法性能上,最终目标是研究零误识率和低拒识率的高速识别算法。
此外,尽早建立反映中国人书写习惯的、具有国家标准性质的手写数字样本库也是当务之急。
在大规模的数据统计(如:
行业年检、人口普查等)中,需要输入大量的数据,以前完全要手工输入,需耗费大量的人力和物力。
近年来在这类工作中采用手写识别技术已成为一种趋势。
因为数据的录入是集中组织的,所以往往可以通过专门设计表格和对书写施加限制以便于机器的自动识别。
目前国内的大多数实用系统都要求用户按指定规范在方格内填写。
另外,这些系统往往采用合适的用户界面对识别结果做全面的检查,最终保证结果正确无误。
可以看出,这种应用对识别核心算法的要求比较低,是目前国内很多单位应用开发的热点[7]。
财务、税务、金融是手写数字识别大有可为的又一领域。
随着我国经济的迅速发展,每天等待处理的财务、税务报表、支票、付款单等越来越多。
如果能把它们用计算机自动处理,无疑可以节约大量的时间、金钱和劳力。
与上面提到的统计报表处理相比,在这个领域的应用难度更大,因为对识别的精度要求更高,处理的表格种类更多等,这样对识别及预处理的核心算法要求也提高了。
手写数字识别在邮件分拣中的应用也十分广泛,随着人们生活水平的提高,经济活动的发展,通信联系的需求使信函的互换量大幅度增加,我国函件业务量也在不断增长,一些大城市的中心邮局每天处理量将高达上千万件,业务量的急剧上升使得邮件的分拣自动化成为大势所趋。
在邮件的自动分拣中,手写数字识别往往与光学条码识别(OBR---OpticalBarReading),人工辅助识别等手段相结合,完成邮政编码的阅读。
这就需要分拣机有一定的性能指标,差错率要越小越好。
1.4课题整体结构
我们的思路是利用Matlab软件建立一个手写体数字识别系统,利用三种方法实现图像输入的功能,然后对输入的图像进行预处理,分割,结构特征提取,分类识别等操作,最终识别出图像上的数字,如图1-1。
图1-1识别的基本思路框架图
1.5课题难点分析
数字的类别只有十种,笔划又简单,其识别问题似乎不是很困难。
但事实上,一些测试结果表明,数字的正确识别率并不如印刷体汉字识别正确率高,甚至也不如联机手写体汉字识别率高,而只仅仅优于脱机手写体汉字识别。
这其中主要原因是:
数字的字形信息量很小,不同数字写法相近,字形相差不大,使得准确区分某些数字相当困难;第二,数字虽然只有十种,而且笔划简单,但同一数字写法千差万别,全世界各个国家各个地区的人都用,其书写上带有明显的区域特性,很难完全做到兼顾世界各种写法的极高识别率的通用性数字识别系统。
另外,在实际应用中,对数字识别单字识别正确率的要求要比文字要苛刻得多。
这是因为,数字没有上下文关系,每个单字的识别都事关重要,而且数字识别经常涉及的财会、金融领域其严格性更是不言而喻的。
因此,用户的要求不是单纯的高正确率,更重要的是极低的、千分之一甚至万分之一以下的误识率。
此外,大批量数据处理对系统速度又有相当的要求,许多理论上很完美但速度过低的方法是行不通的。
因此,研究高性能的手写数字识别算法是一个有相当的挑战性的任务[8]。
第二章开发运行环境
2.1系统开发环境和运行环境
硬件环境:
(1)计算机一台。
(2)摄像头一个。
软件环境:
(1)WindowsXP操作系统。
(2)Matlab软件。
2.2开发工具介绍
2.2.1硬件部分介绍
本课题中,我们所用到的硬件有摄像头,摄像头(CAMERA)又称为电脑相机,电脑眼等,是一种视频输入设备,被广泛的运用于视频会议,远程医疗及实时监控等方面。
普通人也可以彼此通过摄像头在网络进行有影像、有声音的交谈和沟通。
另外,人们还可以将其用于当前各种流行的数码影像,影音处理[9]。
在本实验中,我们主要用它来进行手写体数字图像的输入,即图像的采集部分。
摄像头分为模拟摄像头和数字摄像头两大类。
模拟摄像头捕捉到的视频信号必须经过特定的视频捕捉卡将模拟信号转换成数字模式,并加以压缩后才可以转换到计算机上运用。
数字摄像头则可以直接捕捉影像,然后通过串、并口或者USB接口传到计算机里。
由于个人电脑的迅速普及,模拟摄像头的整体成本较高等原因,现在电脑市场上的摄像头基本以数字摄像头为主,而数字摄像头中又以使用新型数据传输接口的USB数字摄像头为主。
在本实验中,我们就选择使用了USB数字摄像头。
这种摄像头的工作原理大致为:
景物通过镜头(LENS)生成的光学图像投射到图像传感器表面上,然后转为电信号,经过A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通过USB接口传输到电脑中处理,通过显示器就可以看到图像[10]。
图像解析度(Resolution)又名传感器像素,是衡量摄像头的一个重要指标之一,摄像头的像素越高,它的解析图像的能力也越强,拍摄出来的图像品质就越好,我们选择的这种USB数字摄像头的像素并不是特别高,只能勉强实现我们对实验的要求,如果想进一步提高识别率,一个更高像素的摄像头可能对此有所帮助。
另外,视频捕获能力也是用户最为关心的功能之一,目前摄像头的视频捕获都是通过软件来实现的,在本实验中,我们设置了根据秒数来自动截取图片,这对电脑的要求非常高,即CPU的处理能力要足够的快,其次对画面也有要求,不同大小最大分辨率下的画面,捕获能力也不尽相同,我们选择的这种USB数字摄像头的捕获能力一般,勉强能够实现我们对实验的要求,如果想要更高的识别率,可以选择更好些的摄像头甚至是工控摄像头。
2.2.2软件部分介绍
本课题中,我们所用到的软件是Matlab,Matlab是MATrixLABoratory的缩写,它是一种科学计算软件,专门以矩阵的形式处理数据。
Matlab将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用Matlab产品的开放式结构,可以非常容易地对Matlab的功能进行扩充,从而在不断深化对问题认识的同时,完善Matlab产品以提高产品自身的竞争力[11]。
Matlab被称作为第四代计算机语言,最大的特点就是简洁,利用其丰富的函数资源,更符合人们思维习惯的代码,带来直观的程序开发环境。
Matlab的主要特色如下[12]:
(1)语言简洁紧凑,使用方便灵活,库函数极其丰富;
(2)运算符丰富;
(3)既具有结构化的控制语句(如for循环、while循环、break语句和if语句),又有面向对象编程的特性;
(4)语法限制不严格,程序设计自由度大;
(5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行;
(6)图形功能强大;
(7)包含功能强劲的工具箱。
本试验中,我们使用了Matlab图形用户界面(简称GUI)设计主界面和子界面,优化界面并实现主界面对子界面的调用,编写界面的回调函数。
系统界面设计布局采用自顶向下的设计方法,即先设计主界面再设计各个子界面。
而各个回调函数侧是采用自底向上的设计方法,即先设计各个子界面的回调函数,再设计主界面的回调函数。
本课题避开了硬件系统的不足,巧妙的运用软件来仿真硬件才能实现的实验结果,大大降低了实验设备要求,节约了人力和财力,而且有很多的库函数可以在实验时直接调用,避免了用硬件做实验的局限性。
根据国内外优秀的GUI技术应用的成功经验,可以总结出近几年的设计具备以下几个最基本特点[13]:
(1)技术上具有先进性、高效性、实用性、安全性;
(2)数据管理功能完善,数据的采集、处理、发布过程中不会出现数据丢失、改变的问题;
(3)界面友好,操作简便,使用统一的浏览器界面;
(4)自动化程度高,结构设计简单;
(5)模块化设计,易于扩充功能;
(6)产品设计灵活;
(7)投资少,最大限度保护用户的投资。
第三章手写体数字识别系统构成及原理
3.1图像处理基础知识
图像处理(imageprocessing),是指用计算机对图像进行分析,以达到所需结果的技术,又称影像处理,一般指的是数字图像处理[14]。
数字图像是指用数字摄像机、扫描仪等设备经过采样和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值。
图像处理技术的主要内容包括图像压缩,增强和复原,匹配、描述和识别这几个部分。
其中,常见的处理有图像数字化、图像编码、图像增强、图像复原、图像分割和图像分析等。
图像数字化指的是通过取样和量化过程将一个以自然形式存在的图像变换为适合计算机处理的数字形式。
图像在计算机内部被表示为一个数字矩阵,矩阵中每一元素称为像素。
图像数字化需要专门的设备,常见的有各种电子的和光学的扫描设备,还有机电扫描设备和手工操作的数字化仪。
在本文中,我们就是利用USB摄像头将图像数字化。
图像编码是对图像信息编码,以满足传输和存储的要求。
编码能压缩图像的信息量,但图像质量几乎不变。
图像增强的目标是改进图片的质量,例如增加对比度,去掉模糊和噪声,修正几何畸变等;图像复原是在假定已知模糊或噪声的模型时,试图估计原图像的一种技术。
图像分割是将图像划分为一些互不重叠的区域,每一区域是像素的一个连续集。
通常采用把像素分入特定区域的区域法和寻求区域之间边界的境界法。
区域法根据被分割对象与背景的对比度进行阈值运算,将对象从背景中分割出来。
有时用固定的阈值不能得到满意的分割,可根据局部的对比度调整阈值,这称为自适应阈值。
境界法利用各种边缘检测技术,即根据图像边缘处具有很大的梯度值进行检测。
这两种方法都可以利用图像的纹理特性实现图像分割。
图像分析是指从图像中抽取某些有用的度量、数据或信息。
图像匹配、描述和识别是对图像进行比较和配准,通过提取图像的特征及相互关系,得到图像符号化的描述,再把它同模型比较,以确定其分类。
图像匹配试图建立两张图片之间的几何对应关系,度量其类似或不同的程度。
Matlab图像处理是指计算机采用Matlab处理图形图像的技术。
Matlab中的一幅图像可能包含一个数据矩阵,也可能包含一个颜色映射表矩阵,它包含4种基本的图像类型:
索引图像、灰度图像、RGB图像和二值图像。
此外,Matlab还支持由多帧图像组成的图像序列[15]。
(1)索引图像
索引图像是一种把像素值直接作为RGB调色板下标的图像。
索引图像可把像素值直接映射为调色板数值。
调色板通常与索引图像存储在一起,装载图像时,调色板将和图像一同自动装载。
索引图像包括一个数据矩阵A,一个颜色映射矩阵B。
其中B是一个包含3列和若干行的数据阵列。
B矩阵的每一行分别表示红色、绿色和蓝色的颜色值。
在Matlab中,索引图像是从像素值到颜色映射表值的直接映射。
像素颜色由数据矩阵A作为索引指向矩阵B进行索引。
(2)灰度图像
灰度数字图像是每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗的黑色到最亮的白色的灰度,尽管理论上这个采样可以用于任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。
Matlab中,一幅灰度图像是一个数据矩阵I,其中I的数据均代表了在一定范围内的颜色灰度值。
Matlab把灰度图像存储为一个数据矩阵,该数据矩阵中的元素分别代表了图像中的像素。
矩阵中的元素可以是双精度的浮点数类型、8位或16位无符号的整数类型。
大多数情况下,灰度图像很少和颜色映射表一起保存。
但是在显示灰度图像时,Matlab仍然在后台使用系统预定义的默认的灰度颜色映射表。
(3)二值图像
二值图像是指每个像素不是黑就是白,其灰度值没有中间过渡的图像。
与灰度图像相同,二值图像只需要一个数据矩阵,每个像素只取两个灰度值。
二值图像可以采用uint和double类型存储,工具箱中以二值图像作为返回结果的函数都使用uint类型。
(4)RGB图像
RGB图像,即真彩色图像,在Matlab中存储为nXmX3的数据矩阵。
数组中的元素定义了图像中每一个像素的红、绿、蓝颜色值。
需要指出的是,RGB图像不使用Windows颜色映射表。
像素的颜色保存在像素位置上的红、绿、蓝的强度值的组合来确定。
图像文件格式把RGB图像存储为24位的图像,红、绿、蓝分别占8位。
这样可以有约1000万种颜色。
3.2手写体数字识别系统构成
手写体数字识别系统结构图如图3-1所示。
图3-1手写体数字识别系统结构图
其中三个模块的输入部分以及部分输出部分的具体设计将会在下一章中提到。
3.3手写体数字识别系统原理
当今手写体数字识别的应用需求越来越广泛,在财务、税务、金融方面具有不可替代的作用,因此手写体数字识别系统应具有很高的识别正确率,对环境光照条件、手写规范等因素的影响应有较大的容阈,并且要求满足实时性要求[16]。
该系统是计算机图像处理与字符识别技术在手写体数字识别系统中的应用,它主要由手写体数字图像的采集和预处理、手写体数字图像的定位和提取、手写体数字的分割和识别等几个部分组成。
3.3.1预处理
为了研究图像内容的识别,首先要对获得的图像信息进行预处理,滤去干扰、噪声,当信息微弱无法辨识时,还须对图像进行增强处理,颜色校正等,以便人、机分析[17]。
在本系统中,我们设计的这个部分主要由计算数据大小,灰度,全局图像阈值选取,二值化,删除小面积图形等过程组成。
(1)计算数据大小
计算数据大小的函数为size,函数公式以及具体解析如下:
d = size(X)
返回数组X每一维的大小 。
[m,n] = size(X)
返回矩阵X的行列,当X是一个大于二维的数组时,m 是第一维的大小,n返回其他维相乘。
m = size(X,dim)
返回X数组第 dim 维的大小。
[d1,d2,d3,…,dn] = size(X)
返回X数组每一维的大小到 d1,d2,d3,…,dn。
(2)灰度
灰度是指灰度图的转换,利用rgb2gray函数,将RGB图形或色图矩阵转换成灰度图[18]。
对于将彩色图像转换成灰度图像时,图像灰度值可由下面的公式计算:
gray=0.2989*R+0.5870*G+0.1140*B
注:
原始图像可以是Matlab可以处理的图像格式。
I=rgb2gray(RGB)
将真彩色图像RGB转换成灰度图像I。
rgb2gray删除图像中的色调和饱和度信息,而保留亮度信息,从而将RGB图像转换为灰度图。
newmap=rgb2gray(map)
返回与色图map相对应的灰度色图。
注意:
如果函数的输入是一个RGB图像,则它可以是unit8、uint16、single或double类型。
输出的图像I的数据与输入的图像是相同类型的数据。
如果输入的是色图,则输入和输出都是double类型的。
rgb2gray测试:
I=imread('chuli.jpg');
J=rgb2gray(I);%将图片转为灰度图并且保存到J当中。
Figure%打开新的作图窗口。
imshow(I)%显示转换前的彩色图。
figure;%打开新的作图窗口。
imshow(J);%显示转换后的灰度图J。
测试结果如图3.2、3.3所示:
图3-2原始图像图3-3灰度图像
(3)全局图像阈值选取
全局图像阈值选取的函数为graythresh,函数功能为使用大津法进行全局图像阈值选取。
函数公式以及具体解析如下:
level=graythresh(I)
计算全局阈值(level),该阈值可以用在将强度图像转换为二进制图像的函数im2bw中。
level是在[0,1]内归一化的强度值。
函数graythresh选择使黑白像素类内方差最小的阈值。
多维矩阵被reshape
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手写体 数字 识别 系统