文档库 最新最全的文档下载
当前位置:文档库 › 手写体数字识别软件设计设计

手写体数字识别软件设计设计

手写体数字识别软件设计设计
手写体数字识别软件设计设计

唐山学院毕业设计

设计题目:手写体数字识别软件设计

系别:智能与信息工程学院班级:12通信2班

姓名:

指导教师:

2016年5月28日

手写体数字识别软件设计

摘要

手写体数字的识别,作为光学字符识别技术中的一类,是图像处理领域中很具代表性的课题,其核心技术是人工神经网络算法。通过计算机来进行图像处理,使手写数字被识别出来。

本软件主要用到的技术有数字图像的灰度化,二值化,图像的边缘检测和膨胀等预处理过程。还有特征提取,建立分类识别器进行识别的过程。本软件用到的主要技术为BP神经网络算法。用MATLAB R2014a软件编写程序,并设计GUI界面来运行程序。经过不断地调试改进,可以良好的对手写数字0-9进行识别。

在经济全球化的今天,对于手写阿拉伯数字的正确识别在金融领域,特别是银行票据处理,业务受理查询方面的应用将极大的方便人们日常生活,提高工作效率,这也使得手写数字的识别研究工作飞速发展。

关键词:字符识别特征提取BP神经网络MATLAB

The Design of Handwritten Numeral

Recognition Software

Abstract

Handwritten number recognition, as a kind of optical character recognition technology, image processing field is the most representative of the topic and its core technology is artificial neural network algorithm.Through the computer to carry out the image processing, so that the handwritten numeral is recognized.

The software is mainly used in the technology of digital image of the gray, image edge detection and expansion of the pretreatment https://www.wendangku.net/doc/7616245853.html,ing MATLAB R2014a software written procedures, and write a GUI interface to run the program. After continuously adjustable pilot improved can be a good opponent to write numbers 0-9 identification.

In the economic globalization , for handwritten Arabic numerals recognition in the financial sector, especially the bank bill processing, business admissibility inquiry application will be greatly convenient for people daily life, improves work efficiency, which also makes handwritten digital recognition of rapid development.

Keywords:Character recognition ; Feature extraction;BP neural network ; MATLAB

目录

1前言 (1)

1.2技术的发展现状 (2)

1.3软件研究难点 (3)

2 MATLAB介绍 (4)

2.1 MATLAB概况 (4)

2.2 MATLAB功能和特点 (4)

2.3 MATLAB界面 (4)

3 手写体识别常用算法 (6)

3.1 常用算法介绍 (6)

3.2 人工神经网络发展史 (7)

4手写体数字识别整体设计 (8)

4.1设计方案 (8)

4.2图像采集 (8)

4.3数字图像预处理 (9)

4.4图像特征提取 (9)

4.5分类识别 (10)

4.6识别率的统计 (10)

5系统的具体设计 (11)

5.1 图像的切分 (11)

5.2图像预处理 (11)

5.2.1灰度化处理 (11)

5.2.2二值化处理 (12)

5.2.3边缘检测 (14)

5.2.4 图像的膨胀 (15)

5.3图像特征提取 (15)

5.4图像分类识别 (17)

5.4.1人工神经网络的学习 (17)

5.4.2 BP神经网络 (17)

5.5实际操作流程 (21)

5.6识别结果统计 (22)

6总结 (24)

致谢 (25)

参考文献 (26)

附录 (27)

附录1预处理程序 (27)

附录2图像切分程序 (27)

附录3特征提取程序 (28)

附录4识别程序 (28)

附录5建立分类识别器的程序 (29)

附录6建立GUI部分程序 (29)

1前言

很长时间以来,让机器具有可以智能识别的能力是科学研究的方向的重要方面,实现对图像的了解和识别是实现智能化的重要方法,近年来,科学发展的速度很快,字符识别发展迅速,并且成为了图像识别的主要组成部分。手写体数字识别则是字符识别的重要组成部分。

实现手写体数字识别的主要步骤是,数字图像的预处理,特征提取,通过提取的特征来对数字进行识别,其中涉及到图像处理的技术有:灰度化,二值化,图像的膨胀等图像处理技术。

数字的识别经常选择的是创建人工神经网络的方法。人工神经网络算法近年来发展迅速。将这种算法应用到数字识别中对图像识别来说有着很丰富的意义。1.1软件的研究意义以及应用前景

当今社会,信息化程度不断升高,人们更加青睐与使用信息化的手段处理生活中、工作中遇到的各种问题。越来越多的利用信息技术的新型产业前赴后继地出现在了我们的生活中。我们的生活中每天都会出现许多数字,例如支票上表示存款多少的数字、邮政编码、工作中出现的各种发票上的数据等。在这些数字中,有些必须通过人工来解决,而有些可以通过机器来识别,这样可以仅节省人力物力,达到人力的最大限度的利用。有很大的经济效益。字符识别是其中的重要组成部分。

阿拉伯数字是世界通用的,各国的人都认识这些数字。阿拉伯数字被广泛的应用于社会生活的各个方面。经济全球化不断向前发展,国际间的交流越来越多,数据的智能化处理对生活的影响日益增加。每个人写的数字都会存在差异,这些差异对数据交换和读取的速度及准确率都有一定的影响。当今社会信息化程度不断加深,对计算机拥有的存储、分析、处理数据的能力要求更高,计算机能够达到的水平也更高,使得计算机能够像人类一样去工作,更好的解放了人力,是人力资源得到充分的利用。因此,社会中已经已经兴起了建设人工智能的风潮。人工智能指的是科学家们通过研究人类的活动,用科技手段创造出来的一种新型的智能机器,其主要的特点是面对事物能做出像人类一样的反应,以达到优化生产结构的目的。人工智能的实现包括对语言、图像等的智能化处理。因为科技的不断发展还出现了能代替人类工作的机器人。经过对人工智能的不懈的研究,人们对人工智能的了解程度也在不断深化。同时使人工智能所用到的理论和技术得以不断提高,人工智能在生活中的应用也更加广发。因为计算机能更准确,更快的计算处理数据,所以计算机可以代替人类完成拿些需要经过大量的计算才能完成的工作。字符识别是图像处理中一项非常重要的课题,手写体数字识别是字符识别研究的重要组成部分。如果

可以将它广泛的应用工作和生活中可以给人们带来很大的便利。对社会的发展的意义重大。

手写体数字识别和其它类型的字符识别如字母,汉字的识别等相比,相对比较简单。对于对于手写体数字识别的研究可以帮助研究其它类型的字符识别,推动字符识别研究的发展,使字符识别技术更加进步和完善。本软件主要是用人工神经网络,通过BP神经网络这种算法处理数字识别的问题。

利用计算机对手写体数字进行识别的应用前景非常光明,手写体数字的应用非常多,随着经济的发展,人们需要处理越来越多的手写体数字信息。例如会计每天都需要面临的统计报表、财务报表和在邮政,银行等部门大量出现的个人凭证,支票,发票,进账单等等票据。这些东西都有存在大量的数据信息。如果能把这项技术应用到上述那些内容中,将手写数字放到计算机中去识别,不仅可以减少人的工作量还可以减少人力的使用,使每个人的价值得到最大的发挥。是以,我们应该花费更多的精力到这项研究上,这项研究有很大的发展空间,并且具有很大的市场发展空间。如果这项技术更加完善的话,肯定有着良好的的应用价值和市场前景,同时也具有理论价值。

1.2技术的发展现状

1、国内发展现状

我国开始对手写体数字识别进行研究最早是在七十年代。后来中国工程院开始对这种技术进行研究。复旦大学经过不懈的努力在七十年代末研究出了中国第一台印刷体数字识别机,它可以实现识别打字机输出的数字的功能,这是我国在手写体数字识别上迈出的一大步。紧接着国内各大高校也开始了对手写体数字识别的研究,而且获得了许多很好的成果。从此以后,国内越来越多的人投入到了这项研究中去,也使得它的发展达到了高峰。

2、国外发展现状

早在20世纪20年代末,德国就有人获得了OCR专利权。陆续又有其它国家的人获得专利权。但真正意义上的OCR系统是在计算机出现后才出现的。

第一代OCR系统只能识别特定的几个字符。其中最具代表性的是OCR420和Farrington3010。第二代比第一代的系统在功能上有了很大的进步,它能够识别出书写相对整齐的手写体字符。其中以日本应用最快,根据这个系统发明了世界上第一台邮政编码自动分拣机。第三代OCR系统相对来说还不完善,第三代要求更高,它要求能够识别任意体的手写字符。近年来出现的手写体识别程序都属于第三代,但是能够完全准确识别任意手写的字符还是有一定困难的。识别的过程中会受到许多干扰,这些干扰的存在影响着识别率。至今都没有能够达到那么高标准的技术。

我们依然要努力的对这项技术进项研究。

1.3软件研究难点

虽然每一个阿拉伯数字的结构笔画都很简单,但是想准确的识别相当困难。每个人由于字体的不同写出的数字也存在较大的差异。即使是同一个人写出的数字也会存在差异。并且有的数字的结构有相似的地方,字形相似,特征提取的时候容易提取出相似的特征,导致识别错误。每个人书写数字也都有不同的习惯,写出的数字并不会那么工整。这也给准确识别带来很大的困难。由于地域上的差别,世界各国人民的习惯不同,写出的数字的差异比同一个国家的人的差异更大,做出一款可以兼顾国内外的数字识别软件几乎是不可能的。进行识别时输入的只是图像,无法从笔顺上确定出手写的数字,这给准确识别带来了不小的麻烦。想准确的识别数字难度很大。但是对于数字来说,一般情况下,要求的精度很高。是以对数字的识别必须要准确。手写体数字书写过程中会产生各式各样的字体、形状,这些都会导致识别率下降。但是这些问题缺不可能克服,只能通过技术来提高识别率。

在日常生活中要求能够准确的识别数字。例如支票等票据识别错数字会带来巨大的损失,邮政编码识别错误会导致收件人无法收到东西。文字的识别相对来说要求较低,只是识别错一个文字可以通过全文来掌握意思。但是数字错一个就会造成巨大的错误。数字的识别在统计,金融,科研领域应用时,对识别率的要求非极其严格的,一个手写数字,不仅能够被系统识别,要保证在大量数据处理时,系统识别的低错误率,因为手写数字样本的多样性,保证这一点往往是困难的,识别的低的错误率和高识别率是手写数字识别领域里亟须改进的两个主要的问题[1]。

2 MATLAB介绍

手写体数字识别软件是用MATLAB来编写程序的。它是Mathwork公司开发的一款工程数学计算软件。它是对机器行为进行描述的,能对数学操作进行更直接的描述。MATLAB图像处理工具箱封装了一系列针对不同图像处理需求的标准算法,可以通过直接或间接的调用矩阵运算和数值运算函数来进行图像处理。此外MATLAB可以和其他编程语言。它将数值分析、矩阵计算、可视化等功能集结在一个开发环境中,为科研和工作提供了强大支持。

2.1 MATLAB概况

MATLAB即矩阵实验室。20世纪80年代,克里夫?莫勒尔(Cleve Moler)为了方便学生学习线性代数,编写了LINPACK和EISPACK子程序库的接口程序。这是第一个版本的MATLAB。这个版本的MATLAB主要是进行矩阵的运算。但是这也给学生带了极大的方便,深受学生们的喜爱。提到MATLAB不得不说的就是Simlink。它是MATLAB的重要组成部分。是基于框图设计的可视化的仿真工具。可以进行系统的建模,在许多方面都有广泛的应用。MATLAB程序族在控制、通信系统设计、仿真,财务领域等方面都得到了大量的应用。尤其是它的工具箱功能,用起来方便简单,每一个用MATLAB的人都可以编写出一个工具箱。

2.2 MATLAB功能和特点

MATLAB的主要功能有矩阵运算功能,数据可视化功能,GUI程序设计功能,还有大量的专业工具箱功能等。MATLAB的基本数据单位是矩阵,所有的运算都有用到了矩阵,矩阵是所有运算的基础。

MATLAB的主要特点[2]:

(1)丰富的数据库函数。

(2)种类全面的运算符MATLAB不但提供C语言种的基本运算符号,还在此基础之上,提供了矩阵,向量运算符。

2.3 MATLAB界面

MATLAB软件分为3个子窗口,即工作区、命令窗口、当期目录文件列表。作为MATLAB运行的主体,上面加载了所具有的各种功能,命令行窗口可以编写程序。以下是MATLAB主窗口示例:

图2-1 MATLAB主窗口

(1)命令窗口

命令窗口是软件所有的窗口中最主要的部分,一般来说,开MATLAB软件会有命令窗口,命令窗口不但能运行MATLAB的所有程序,还能编辑程序。执行命令时可以采用输入命令执行程序也可以用提前编好的窗口来运行的方法。

(2)工作区窗口

工作区窗口在该软件所有窗口中占据着很重要的地位,工作区窗口的主要功能是显示变量名称,字节数等临时的数据文件,也可以查看、编辑、导入、保存和删除变量。不同类型的变量对应的图标也是不同的。

(3)当前目录文件列表窗口

当前目录文件列表窗口可以直接对文件和文件夹进行操作,也可以改变程序的运行路径。要调用的函数必须在该程序的运行路径下。

3 手写体识别常用算法

近年来,手写体数字的识别的研究发展十分迅速,能够进行识别的算法日趋多样化。目前研究比较成熟的主要算法有:贝叶斯分类算法,统计决策算法,模版匹配算法,逻辑推理法,结构特征法,神经网络法和支持向量机法等多种算法。其中最具代表性的算法有:人工神经网络算法,隐马尔可夫模型算法,支持向量机算法。

3.1 常用算法介绍

隐马尔可夫模型是根据马尔可夫随机过程得出的一种统计模型。同时也是一个含有“隐含”的马尔可夫过程。这些隐含状态都有一个相应的概率密度函数。要想转换状态,必须通过一个状态转化概率矩阵才能实现。隐马尔可夫模型可以很好的处理随机信号。实现对随机信号的建模。语音识别大量的用到了隐马尔可夫模型,这种算法对语音识别来说有很好的效果。现在许多人在尝试着把它用到图像、视频等的处理中,也取得了一定的成果。

支持向量机方法是从统计学中得到的机器学习语言,因为此种方法的学习能力很强,因此被运用到了许多领域并获得成功。SVM在识别上作用很大,在兼容性上也有很好的表现。其他机器学习问题也可以从中得到启发。支持向量机方法的最基本的原理是结构风险最小化原理,主要是通过一系列变换得到最优线性分类面。通过一些变换函数可以得到这一系列的变换。想实现机器的学习功能必须使得学习精度和学习能力达到平衡。

统计决策法主要用到的是概率论和数理统计的知识,它主要是把提取的一组统计特征进行判决,进行分类。统计决策法是基于数学产生的一种算法,它通过数学计算来识别字符。它的抗干扰及抗噪声能力很强,但是想得到较好的特征相当不容易,并且模式结构特征非常粗糙。

人工神经网络理论所用到的最重要的要素就是特征向量。主要是利用神经网络的学习和记忆功能,使其学习各个模式中的样本并且记住这些样本特征。识别时通过和已经记住的样本特征做对比,并因此成功识别出该字符。近年来,经过不断的努力人工神经网络方面的研究取得了许多理论成果。该理论的发展也越来越好,广泛的用到了工作和生活中。人工神经网络所包含的算法很多,其中应用最广泛的是BP神经网络算法。

误差反向传播算法(Error Back-propagation Training)最早是在1986年出现的,是一种按误差逆传播算法训练的多层前馈网络,对于非线性问题有很大的作用。可以逼近任意连续函数。BP神经网络的中间层数和神经元数可以是人为设置的。这种算法的抗干扰能力很好。同时可以消除一些错误信息,因此具有很高的容错能力。

当然不可避免的也存在着缺点,学习效率有待提高。但它也有很大的优势,被广泛应用在图像处理上,因此采用这种算法实现对手写体数字的识别。

3.2 人工神经网络发展应用

1890年,美国心理学家William James发表了一部详述人脑及功能的书《心理学原理》,他预测神经细胞激活是细胞所有输入叠加的结果。

自1987年以来,人工神经网络各方面的内容得到了极大的丰富,这些内容囊括了它的理论、应用等,并且都发展迅速,科学家们开发出了许多不同作用的神经网络模型,神经网络已经被应用到了许多方面。

该网络的信息存储能力随模型的不同而变化。由于人工神经网络具有非线性特性、并行行、学习性,因此人工神经网络模型普遍具有很强的计算能力,并且使该网络具有很强的环境适应能力和容错能力。人工神经网络的应用非常广泛,在医学检测数据分析、生物活性研究、军事工程、化学工程、水利工程等方面都有运用到这种方法。

4手写体数字识别整体设计

手写体数字识别系统分为:图像数据的采集,图像预处理,特征抽取,分类识别和对识别结果进行统计几部分。

4.1设计方案

首先要将提前写好的数字转换成bmp格式的图片,将其导入,并将图像进行切分,即选中几个数并将其分成一个一个的。然后对图像进行预处理,图像预处理就是将每一个数字进行灰度化处理、二值化处理、边缘检测、膨胀等处理。然后分别对采集到的每一个数字图像进行特征提取,特征提取选用的方法是粗网格特征提取。识别时用的是BP神经网络算法。神经网络的原理是不断的对数据进行学习、训练,随着学习的不断进行,误差会越来越小。完成后把上一步提取出来的特征用神经网络去识别。

图4-1系统整体设计

4.2图像采集

准备一张手写数字的图片,首先要将其转换成MATLAB能识别的格式。在本程序中将图片格式设为bmp格式。进行图像采集的方法有两种,一种是先将数字图像导入到程序中,然后切分图像,得到一个一个的数字图像。这样做主要是为了能够更方便快捷的进行预处理工作。另一种方式则是先把图像做预处理,然后再进行数字的切分,这样做的好处是就省去了对多个图像进行预处理的繁琐过程,本软件的设计采用的是先分割图像再预处理的方法。

4.3数字图像预处理

手写体数字识别的预处理过程主要分为:将每一个数字进行灰度化处理、二值化处理、边缘检测、膨胀等。首先将彩色图像进行灰度化处理,得到灰度图像。在灰度图像中,通常用0表示黑,255表示白,从0到255亮度逐渐增加,但是并没有色彩信息。然后进行二值化处理得到二值化图像,即黑白图像。就是图像像素只存在0,1两个灰度。接着对图像进行边缘检测,边缘检测的目的是找出图像中亮度发生了巨大变化的点。边缘检测可以减少数据量,去掉一些不相关的信息,加快运算速度,提高运行速率。图像的膨胀的目的是扩大物体的边界,可以将断裂的部分连接起来,即使书写不准确补充完可以识别出来。

预处理对于系统的设计非常重要,预处理的好坏直接影响着识别结果。经过预处理后的图像才能进行特征的提取,因此必须提高程序的预处理能力。

4.4图像特征提取

特征提取是这个系统中最重要的部分之一。特征提取的比较好的话可以有更高的识别率。特征显而易见值得是不同点,也就是说它指的是某一事物和其它事物不同的方面,特征是我们经过一系列特殊手段,例如测量和处理等方法可以得到数据。从特征自身的特点上可以将其分为两大类,一种是它的外形特征,另一种是比较深层的纹理特征,这个特征可以表现表面的灰度变化。统计特征和结构特征是手写数字特征的两个主要类别[3],提取特征能够从这两个方面出发。

结构特征指的是我们可以看出来的诸形状,书写笔画等具有比较明显的特点的特征。每个数字的笔画都不尽相同,例如数字1只有一画,但数字4却有两画。即使笔画相同结构也有很大差异。例如2和6的结构就存在着明显的差异。也正因为这些差异的存在才使得特征提取不是那么困难。但是有些数字的结构上存在着相似的地方,这就使得特征提取的时候很有可能提取出相似的特征,给识别带来困难。结构特征要求图像足够清晰,太模糊的话可能导致不能提取到合心意的特征。因此要想提取出比较好的特征首先要有高质量的图像。但是实际生活中,国家、区域、书写习惯、纸张材质都影响着图像的清晰度。这都给提取结构特征带来了许多问题。例如:有些人写字比较乱,有些人写出的数字1和7并没有太大的区别,这对于识别来说也是一个很大的问题。

统计特征主要是用抽象的数学思维来建立一个或多个特征,来表述一个数字,实际上,就是通过函数,离散变换等方法在特征和数字模型之间建立映射关系,如:利用密度的估计,矩估计等数学统计方法表征一个数字图像的特征[4]。

特征提取是要尽量提取那些在同类图像之间差异较小,在不同类别的图像之间差异较大的图像特征。因为提取的特征不仅要能够很好地描述图像,更重要的是能

够很好的区分不同类别的图像。进行特征提取时根据情况的不同而做出调整,它的评价标准也会受到主观想法的影响。特征提取也有一些比较普遍的原则,即特征应该比较容易提取,否则花费大量的时间只会得不偿失。其次选取的特征应尽可能少受噪声的影响。最重要的一点是应试图寻找最具区分能力的特征。

在实际生活中,许多设计采用的是提取轮廓特征的方法。提取轮廓特征通过扫描数字的外部轮廓实现特征的提取[5]。还有一些方案采用了笔划密度特征,有一部分研究提取图像特征值的方法是基于统计特征的方法,例如基于傅立叶变换特征的,这种正交变换的方式是一种主要的统计特征[6]。本软件为了便于理解采用的是粗网格特征提取。

4.5分类识别

分类识别是手写体数字识别最关键的部分,经过特征提取后提取来的特征将被送到分类器中并对其进行分类识别。分类识别是指根据特征将模式分配给不同的模式类,识别出模式的类别的过程。分类器可以理解为为了实现分类而建立起的某种计算模型,它以模式特征为输入,输出该模式所属的模式信息。具体的识别方式是,建立并训练人工神经网络,是用人工神经网络来架构分类识别器智能识别数字[7],因为人工神经网络有良好的消除噪声影响的能力,并且具备较高的容错率和较高的识别率。而且人工神经网络的发展迅速,越来越成熟,因此本软件的设计采用BP 神经网络来完成识别。

4.6识别率的统计

识别完成后,为了总结出所设计的软件的完成度,需要对识别的结果进行统计。经过多次的实验,对多个不同的数,不同的人手写出的数分别进行识别,统计出识别率。并且详细得出该软件对何种字体或者哪个数的识别率更高。验证后将其记录成册,从中得出该软件对手写体数字识别的识别率的详细情况。并对其进行详细的分析,从而得出软件的使用价值。然后和其它的识别软件的识别率进行对比,找出优缺点,记录下来。

5系统的具体设计

手写体数字识别系统设计流程为:图像数据的采集,图像预处理,特征提取,分类识别和对识别结果进行统计分析。

5.1 图像的切分

将整幅图片导入其中,并完成对这些信息的识别是很不容易的,为了方便识别将图像进行分割是十分必要的。经过图像分割将数字分成一个一个的,本软件最多可以一次对9个数字进行处理。图像的切割的目的就是截取单个图像,方便对图像进行二值化操作,可借助MATLAB中imcrop函数实现字符的切分,以下是切分的程序代码。

bw2=imcrop(bw,[x1,y1,(x2-x1),(y2-y1)]);

图5-1图像的切分

5.2图像预处理

图像预处理阶段主要是对图像进行一系列的处理,得到能够很好的提取特征的图像,主要分成以下几部分:灰度化处理、二值化处理、边缘检测、膨胀等。

5.2.1灰度化处理

在计算机中,显示器的任何颜色都可以由3中颜色红、绿、蓝组成,称为三基色。彩色图像就是由着三种颜色构成的。但是彩色图像对图像特征的变现不是很好。因此必须对对图像进行灰度化处理,利用MATLAB中的自带的函数rgb2gray,可

以把彩色图像变成灰度图像。成在MATLAB中对彩色图像进行灰度化部分程序如下所示:

I=imread('F:\毕设\手写体数字识别\1.bmp');%读取图像

Igray= rgb2gray(I); %将彩色图像灰度化

Imshow=(Igray);

图5-2灰度化处理

5.2.2二值化处理

图像的二值化是将图像转换为只有两级灰度的图像。二值化一般在图像灰度操作之后进行的。在数字图像中,二值图像是非常重要的。二值图像拥有存储空间小、处理速度快的优点,可以快捷地完成对图像的布尔逻辑运算,更重要的是二值图像可以比较容易的获取目标区域的几何特征或者其他特性,比如描述规定区域的边界,获得所要处理的图片的更多特征,为对图像进行更深层的处理奠定基础。

二值化的具体方法很多,常用的是阈值判定法。也就是说给定一个阈值,当灰度图像中像素点的亮度值小于该值时,把像素点设置成黑色,而当灰度图像中像素点的亮度值大于该值时,把像素点设置成为白色(或者黑色、其它颜色)。将图像二值化最重要的是阈值选择,不同的阈值处理出来的图像也是不同的,效果也存在着一定的区别。进行图像的二值化的目的就是防止多种灰度值对图像特征产生不良的影响,因为二值化图像仅有黑白两个元素构成,和经过灰度处理的图像相比,图像显示出的是一种有很大对比的黑白效果,图像的特性也就仅与这两种像素有关,也就因此消除了不同灰度值对图像特征进行特征提取时的影响。

图像完成二值化的方法有很多,因为二值化的主要目的是找到一个特定的数值作为判别依据,灰度值比这个数值大像素就会判断为255,同理如果灰度值比这个标准小的话就会判断成0。这个做标准的值,就叫做阈值T,二值化的方法之间差异主要存在于阈值的选取问题上[8]。阈值的选取方法主要有最小均方差法,最大类间方差法,最佳阈值搜寻方法,迭代阈值选取方法等。

最小均方差法通常将图像的灰度作为主要特征。一般来说,采用的是正态分布,即高斯概率分布。选择最小均方差法主要是为了选择T时,对已知的像素不管是处理前景还是背景的时候出错概率降到最小[9]。但是想确定使均方误差最小的参数很复杂,而要采用这种方法图像的前景和背景都必须为正态分布。

迭代选择阈值法的主要思路是:开始的时候先选择一个阈值当做初始值,然后根据特定的规则一直更新这个估计值,更新到符合要求的时候停止。这个过程的关键是选择迭代规则,合适的迭代规则不仅能够实现快速收敛,还能够不断优化迭代结果。此阈值选取方法的初始阈值为图像灰度范围的中值。根据初始值把原始图像分成前景和背景两部分,然后把对两部分进行积分取得的平均值当做新的阈值,然后再根据这个新的阈值把原始图像分成前景和背景两部分,并依次迭代下去。当迭代达到一个比较稳定的值时,得到的这个值就是最终的阈值。

本软件采用的是最大类间方差法。这种算法计算简单,是一种稳定、常用的算法。这种方法首先选取一个初始值当做阈值,按初始阈值将像素点分成背景和目标两部分,然后比较目标和背景的类间方差,类间方差最大的时候取得最终的阈值。类间方差越大二者区别越大,二值化结果比较好。此种方法不用提前设置各种参数,它可以实现自己选择阈值,并且选择的值比较合适。不管是两个区域或者是一个区域都可以选择到合适的阈值。在MATLAB中,最大类间方差法直接用函数graythresh 就可以实现,编写程序时写出T=graythresh的形式,输出结果T就是二值化的阈值。

得到了阈值T的准确数值之后,图像的二值化处理只要把每一个像素去和T做比对从而得出灰度。利用MATLAB中的函数im2bw可以对图片进行二值化,对已经经过灰度化处理的图片进行二值化的程序如下所示,二值化后的图像如下:Igray =imread('F:\毕设\手写体数字识别\1.bmp');

Ibw = im2bw(Igray,graythresh(Igray));

imshow(Igray);

figure;

imshow(Ibw);

图5-3二值化处理结果

5.2.3边缘检测

边缘检测是是进行图像切分的必要步骤。图像的边缘是图像最直观可以直接看到的特征,图像主要信息都可以在边缘中得到,所以正确的将图像的边缘检测并提取具有重要意义。边缘点指的是图像中和周围的点具有极大的差别的那些点。那些变化极大的点的图像属性可以反映许多东西,具有很大的意义。这种算法也被广泛的应用到了许多方面。

边缘检测主要分为平滑滤波、锐化滤波、边缘判定、边缘连接等步骤。边缘检测的算法分为两类:基于查找的算法和基于零穿越的算法。除了这些方法,还有Canny边缘检测法、统计判别方法。基于查找的法是通过寻找图像一阶导数中的最大值和最小值来检测边界,通常是将边界定位在梯度最大的方向,是基于一阶导数的边缘检测算法。基于零穿越的方法是通过寻找图像二阶零穿越来寻找边界的,通常是拉普拉斯过零点或者非线性差分表示的过零点,是基于二阶导数得到边缘检测算法。

不同算法得到的结果存在很大差异,从边缘精度看,Roberts算子定位精确度较高。从对不同方向边缘的响应看。根据对边缘的感知程度划分的话,Sobel算子、Prewitt算子对于倾斜的边缘检测的时候可以有更好的效果,而Roberts算子则对垂直或水平方向有更好的加测效果。从可以滤除噪声的多好上划分的话,Sobel算子和Prewitt算子比其它的方法滤除噪声效果更好,可以将图像变得更加平滑,会去掉部分噪声,但是也会去掉一些有用的边缘信息,并且将有用的边缘也进行平滑,产生了许多影响,同时也影响了定位精度。综合全局来看,Canny算子的综合性能比较好,不仅定位精度较高,而且可以更好的滤除噪声,降低噪声影响,提高整体性能[10]。

综上所述,在进行边缘检测的时候采用了Canny算子,这种方法可以提高本软件的识别率,也使得软件拥有更好的性能。

5.2.4 图像的膨胀

将经过边缘检测后的图像进行膨胀,以便将手写数字过程中缺少的笔画补回来,增加特征提取的准确性。

在进行膨胀操作时,进行处理后输出来的像素值是输入到其中的图像的所有像素里的最大的值。在二进制图像中,如果所有的像素值为1,则输出像素值为1;每一个图像都有一个像素的边界,将超过这个边界的所有的像素值概括成这个数据类型能够接受的最小值,二进制图像,采取的是将这部分像素值设置成0;但是对灰度图像来说则是不同的,unit8类型的最小值是0。除了具有高度的结构元素外,实际应用中使用更多的是一种平坦(高度为0)的结构元素,这种结构元素只能由0和1组成,为1的区域指明了运算涉及的范围。实际上,二值形态学中的结构元素可视为一种特殊(高度为0)的灰度形态结构元素。当应用结构元素时,灰度膨胀完全变成了局部最大值运算。

提前设置好该过程所要用到的参数,例如构成灰度图像的元素等。然后调用imdilate函数完成图像膨胀,得到想要的结果。平坦结构元素的创建过程与二值形态学中相同;而非平坦结构元素也可通过strel()函数进行建立。膨胀程序如下:se = strel('square',3);

Iedge2 = imdilate(Iedge, se);%图像膨胀函数,灰度扩张

膨胀处理后的图像后为:

图5-4 膨胀后的结果

该图像和二值化后的图像相比明显加粗了,方便进行特征提取。

5.3图像特征提取

对图像进行特征提取应用的是粗网格特征提取的方法,粗网格特征指的大部分是图像的整体分布特征,手写体数字虽然都有一些差别,但是每个人写出来的数字整体上还是差不太多的。比如4,每个人写出来的外形或者笔顺或许有不同,但是

基于知识库的手写体数字识别

HUNAN UNIVERSITY 课程模式识别 题目基于知识库的手写体数字识别学生姓名 学生学号

专业班级 学院名称 2016 年6 月25 日

基于知识库的手写体数字识别 1案例背景: 手写体数字识别是图像识别学科下的一个分支,是图像处理和模式识别研究领域的重要应用之一,并且具有很强的通用性。由于手写数字的随意性很大,如笔画粗细、字体大小、倾斜角度等因素都有可能直接影响到字符的识别准确率,所以手写体数字识别是一个很有挑战性的课题。在过去的数十年中,研究者们提出了许多识别方法,并取得了一定的成果。在大规模数据统计如例行年检、人口普查、财务、税务、邮件分拣等应用领域都有广阔的应用前景。 本案例实现了手写阿拉伯数字的识别过程,并对手写数字识别的基于统计的方法进行了简要介绍和分析。本文实现的手写字体识别程序具有手写数字图像读取、特征提取、数字模板特征库以及识别功能。 2 理论基础: 2-1手写字体识别方法: 手写体数字识别是一个跨学科的复杂问题,综合了图像处理、模式识别、机器学习等多个领域的知识,其识别过程一般包含图像预处理、特征提取、分类器的设定及其后处理等组成。处理流程如图2-1所示。

图2-1 手写体数子识别流程图 2-2 图像预处理 手写体数字识别的首要工作是图像预处理。在图像预处理过程中需要解决的主要问题有:定位、图像二值化、平滑化(去噪)H J、字符切分、规范化等。图像二值化是指将整个图像呈现出明显的黑白效果。待识别的手写体数字图像在扫描过程中,常会带来一些噪声,用不同的扫描分辨率得到的数字图像,其质量也各不相同,故而要先将这些干扰因素排除掉。另外,还需要正确分割整幅文档图像中的手写体数字,而分割后的数字大小、字体常各不相同,故还需进行归一化处理。 2-3 特征提取 特征提取的目的是从经过预处理后的数字图像中,提取出用以区分与其它数字类别的本质属性并数值化,形成特征矢量的过程。常见的手写体数字特征有:模板特征、统计特征、结构特征和变换特征。 2-4 分类器 不同的分类方式对应不同的分类器,可选的分类器有神经网络、支持向量机

手写数字识别的实现

燕山大学 课程设计说明书 题目:手写数字识别的实现 学院(系):电气工程学院 年级专业: 08-自动化仪表 学号: 080103020179 学生姓名:付成超 指导教师:林洪彬程淑红 教师职称:讲师讲师 2010年 12 月 24 日

燕山大学课程设计(论文)任务书 院(系):电气工程学院基层教学单位:自动化仪表系 学号080103020179 学生姓名付成超专业(班级)自动化仪表设计题目手写数字识别实现 设 计技术参数 通过由数字构成的图像,自动实现几个不同数字的识别,设计识别方法,有较高的识别率 设计要求 设计图像中不同数字的识别方法,可以先从两个数字的识别开始,尽量实现多个不同数字的识别。设计中应该有自己的思想、设计体会 工作量1.分析图像特征,查阅相关资料,根据图像的特征提出解决问题的思路。2.查阅相关资料,学会MATLAB的编程方法 3.根据解决思路,编辑程序,根据调试结果,修改相应思路,找出最佳解决方案 工作计划周一分析图像,查阅各种资料,提出可行的解决方案。周二熟悉MATLAB软件,学会软件的简单编程方法。 周三根据可行的方法,编写程序,调试并修改方案。周四根据调试结果,选取最佳方案并完成设计论文。周五进一步完善设计论文,准备论文答辩。 参考资料[] MICHAEL SIPSER著,张立昂等译,《计算理论导引》,机械工业出版社,2000。 [2] 王晓龙,关毅等编,《计算机自然语言处理》,清华大学出版社,2005。 [3] R.C.Gonzales等著,阮秋崎等译,《数字图像处理》,电子工业出版社,2002。 [4] 王文杰等编,《人工智能原理》,人民邮电出版社,2003。 指导教师签字基层教学单位主任签字 2010年 12 月 24 日

手写数字识别系统的设计与实现

] 手写数字识别系统的设计与实现 摘要本手写数字识别系统是一个以VISUAL STUDIO C++ 为编译环境,使用MFC进行图形图像界面开发的系统。主要功能是通过在点击手写数字识别菜单下的绘制数字标签弹出的绘制数字窗口中完成数字的手写,在此窗口中可以进行数字的保存及清屏,然后通过文件菜单中的打开标签打开所绘制的数字,从而进行数字的预处理,其中包括灰度化及二值化处理,然后进行特征提取,最后实现数字的识别。本系统的界面设计友好,流程正确,功能也较为完善。实验结果表明,本系统具有较高的识别率。 关键词:绘制数字;预处理;特征提取;特征库;数字识别 / ;

目录 前言 (1) 概述 (2) 1 需求分析 (4) 功能需求分析 (4) , 性能需求分析 (4) 数据需求分析 (5) 相关软件介绍 (5) 2 手写数字识别系统的设计与基本原理 (6) 系统整体功能模块设计 (6) 手写数字识别系统的基本原理 (6) 数字图像的绘制 (6) 图像的预处理 (6) ) 图像的特征提取 (7) 特征库的建立 (8) 图像数字的识别 (8) 3 手写数字识别系统程序设计 (8) 数字图像的绘制 (8) 数字的特征提取 (15) 模板特征库的建立 (18) 数字的识别 (20) (

总结 (23) 致谢 (24) 参考文献 (25)

前言 自上世纪六十年代以来,计算机视觉与图像处理越来越受到人们的关注,并逐渐成为一门重要的学科领域。而作为它们的研究对象的数字图像,也因为它含有研究目标的丰富信息而成为越来越重要的研究对象。图像识别的目标是用计算机自动完成某些信息的处理,用来替代人工去处理图像分类及识别的任务。 手写数字识别是图像识别学科下的一个分支,是图像处理和模式识别领域研究的课题之一,由于其具有很强的实用性一直是多年来的研究热点。由于手写体数字的随意性很大,例如,笔画的粗细,字体的大小,倾斜等等都直接影响到字符的正确识别,所以手写体数字识别是一个很有挑战性的课题。在过去的数十年中,研究者们提出了许多的识别方法,取得了较大的成果。手写体数字识别实用性很强,在大规模数据统计(如例行年检,人口普查),财务,税务,邮件分拣等等应用领域中都有广阔的应用前景。本课题拟研究手写体数字识别的理论和方法,开发一个小型的手写体数字识别系统。 在研究手写体数字识别理论和方法的基础上,开发这样一个小型的手写体数字识别系统需要完成以下主要方面的研究与设计工作:手写数字绘制的问题、数字的预处理问题、特征提取问题、特征库的建立问题、数字识别问题。

毕业论文计算机手写数字识别技术完整版

毕业论文计算机手写数 字识别技术 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

合肥学院 2007届毕业设计(论文) 基于模板匹配算法的字符识别系 设计(论文)题 目 统研究与实现 院系名称计算机科学与技术系 专业(班级)计算机科学与技术 2003级1班 姓名(学号)宋飞(0) 指导教师赵大政 系负责人袁暋 二O O七年五月二十三日 摘要 自从计算机问世以来,让机器具有模式识别能力一直是计算机科学家们的努力方向。研究表明,对视觉和听觉信息的处理过程,不仅仅是一个感知过程,也是一个认知过程。因此,研究模式识别,是理解人类智能的本质的重要途径。字符识别是一个传统和典型的模式识别问题,脱机手写数字识别是一个典型的大类别的模式识别问题。手写体数字具有不同字符字型相差不大、相同字符有多种不同写法、数字没有上下文关系等等特点,使得脱机手写体数字识别成为识别领域最大的难题和最终的目标。在这种大类别识别的研究中,传统上大多采用模板匹配的方法来解决问题。而在模板匹配算法中,得计算其特征值。图像需要经过二值化,细化等预处理。 关键字模板匹配;特征值;细化;二值化 ABSTRACT Since computer appeared, it has been an effort direction for scientist to let the computer has the ability of pattern recognition. Researching indicates that the procedure to deal with seeing and hearing not only a procedure of perception but also cognition. Therefore, studying pattern recognition is an important way in understanding the mankind’s intelligence

(完整版)手写体数字识别系统设计毕业设计

石河子大学 信息科学与技术学院毕业论文 课题名称:手写体数字识别系统设计 学生姓名: 学号: 学院:信息科学与技术学院

专业年级:电子信息工程2007级指导教师: 职称: 完成日期:二○一一年六月十一日

手写体数字识别系统设计 学生: 指导教师: [摘要] 随着科学技术的迅速发展,在邮政编码、统计报表、财务报表、银行票据等处理大量字符信息录入的场合,手写数字识别系统的应用需求越来越强烈,如何将数字方便、快速地输入到计算机中已成为关系到计算机技术普及的关键问题。本文设计实现了一个基于Matlab软件的手写体数字识别系统,采用模块化设计方法,编写了摄像头输入、直接读取图片、写字板输入三个模块,利用摄像头等工具,将以文本形式存在的手写体数字输入进计算机,完成对手写体数字图片的采集,并设计了一种手写数字识别方法,对手写体数字图像进行预处理、结构特征提取、分类识别,最终以文本形式输出数字,从而实现手写体数字的识别。 [关键词] 预处理,结构特征提取,分类识别,手写体数字识别

Handwritten Digit Recognition System Students: Teacher:

Abstract:With the rapid development of science and technology, in zip code, statistics, reports, financial statements, Bank bills dealing with a large number of characters, such as information recorded occasions, handwritten digit recognition system of requirement has become stronger and stronger, how easily and quickly the number entered in the computer has become a key issue relates to the popularization of computer technology. This article design implementation has a based on Matlab software of handwriting body digital recognition system, used module of design method, write has camera entered, and directly read pictures, and write Board entered three a module, using camera, tools, will to text form exists of handwriting body digital entered into computer, completed on handwriting body digital pictures of collection, and design has a handwriting digital recognition method, on handwriting body digital image for pretreatment, and structure features extraction, and classification recognition, eventually to text form output digital, to implementation handwriting body digital of recognition. Key words: Pretreatment, structure feature extraction, classification and recognition, handwritten digit recognition.

基于神经网络的手写数字识别系统的设计与实现

中南大学 本科生毕业论文(设计) 题目基于神经网络的手写数字 识别系统的设计与实现

目录 摘要 (Ⅰ) ABSTRACT (Ⅱ) 第一章绪论 (1) 1.1手写体数字识别研究的发展及研究现状 (1) 1.2神经网络在手写体数字识别中的应用 (2) 1.3 论文结构简介 (3) 第二章手写体数字识别 (4) 2.1手写体数字识别的一般方法及难点 (4) 2.2 图像预处理概述 (5) 2.3 图像预处理的处理步骤 (5) 2.3.1 图像的平滑去噪 (5) 2.3.2 二值话处理 (6) 2.3.3 归一化 (7) 2.3.4 细化 (8) 2.4 小结 (9) 第三章特征提取 (10) 3.1 特征提取的概述 (10) 3.2 统计特征 (10) 3.3 结构特征 (11) 3.3.1 结构特征提取 (11) 3.3.2 笔划特征的提取 (11) 3.3.3 数字的特征向量说明 (12) 3.3 知识库的建立 (12) 第四章神经网络在数字识别中的应用 (14) 4.1 神经网络简介及其工作原理 (14) 4.1.1神经网络概述[14] (14) 4.1.2神经网络的工作原理 (14) 4.2神经网络的学习与训练[15] (15) 4.3 BP神经网络 (16) 4.3.1 BP算法 (16) 4.3.2 BP网络的一般学习算法 (16)

4.3.3 BP网络的设计 (18) 4.4 BP学习算法的局限性与对策 (20) 4.5 对BP算法的改进 (21) 第五章系统的实现与结果分析 (23) 5.1 软件开发平台 (23) 5.1.1 MATLAB简介 (23) 5.1.2 MATLAB的特点 (23) 5.1.3 使用MATLAB的优势 (23) 5.2 系统设计思路 (24) 5.3 系统流程图 (24) 5.4 MATLAB程序设计 (24) 5.5 实验数据及结果分析 (26) 结论 (27) 参考文献 (28) 致谢 (30) 附录 (31)

手写体数字的识别

手写体数字识别 第一章绪论 (4) 1.1课题研究的意义 (4) 1.2国内外究动态目前水平 (4) 1.3手写体数字识别简介 (5) 1.4识别的技术难点 (5) 1.5主要研究工作 (6) 第二章手写体数字识别基本过程: (6) 2.1手写体数字识别系统结构 (6) 2.2分类器设计 (7) 2.2.1 特征空间优化设计问题 (7) 2.2.2分类器设计准则 (8) 2.2.3分类器设计基本方法 (9) 3.4 判别函数 (9) 3.5训练与学习 (10) 第三章贝叶斯方法应用于手写体数字识别 (11) 3.1贝叶斯由来 (11) 3.2贝叶斯公式 (11) 3.3贝叶斯公式Bayes决策理论: (12) 3.4贝叶斯应用于的手写体数字理论部分: (16) 3.4.1.特征描述: (16) 3.4.2最小错误分类器进行判别分类 (17) 第四章手写体数字识别的设计流程及功能的具体实现 (18) 4.1 手写体数字识别的流程图 (18) 4.2具体功能实现方法如下: (19) 结束语 (25) 致谢词 (25) 参考文献 (26) 附录 (27)

摘要 数字识别就是通过计算机用数学技术方法来研究模式的自动处理和识别。随着计算机技术的发展,人类对模式识别技术提出了更高的要求。特别是对于大量己有的印刷资料和手稿,计算机自动识别输入己成为必须研究的课题,所以数字识别在文献检索、办公自动化、邮政系统、银行票据处理等方面有着广阔的应用前景。 对手写数字进行识别,首先将汉字图像进行处理,抽取主要表达特征并将特征与数字的代码存储在计算机中,这一过程叫做“训练”。识别过程就是将输入的数字图像经处理后与计算机中的所有字进行比较,找出最相近的字就是识别结果。 本文主要介绍了数字识别的基本原理和手写的10个数字字符的识别系统的设计实现过程。第一章介绍了数字识别学科的发展状况。第二章手写体数字识别基本过程。第三章贝叶斯方法应用于手写体数字识别。第四章手写体数字识别的设计流程及功能的具体实现,并对实验结果做出简单的分析。 关键词:手写体数字识别分类器贝叶斯vc++6.0 错误!未找到引用源。

手写体数字识别系统的设计与实现

大学生研究计划项目 论文报告 项目名称:_手写体数字识别系统的设计与实现 负责人:_________ _______________ 学院/专业:_____ ______ 学号:____ ________ 申请经费:_____ _________________ 指导教师:______ _______ 项目起止时间:2011年6月-2012年3月

摘要 手写体数字识别系统依托计算机应用软件为载体,利用C++程序设计的相关知识,运用模块设计等相关技术,最终完成手写体设计系统的程序综合设计。 关键字:手写体数字处理模式识别程序设计 一、论题概述 模式识别是六十年代初迅速发展起来的一门学科。由于它研究的是如何用机器来实现人(及某些动物)对事物的学习、识别和判断能力,因而受到了很多科技领域研究人员的注意,成为人工智能研究的一个重要方面。 字符识别是模式识别的一个传统研究领域。从50年代开始,许多的研究者就在这一研究领域开展了广泛的探索,并为模式识别的发展产生了积极的影响。 字符识别一般可以分为两类:1.联机字符识别;2.光学字符识别(Optical Chara- cter Recognition,OCR)或称离线字符识别。在联机字符识别中,计算机能够通过与计算机相连的输入设备获得输入字符笔划的顺序、笔划的方向以及字符的形状,所以相对OCR来说它更容易识别一些。但联机字符识别有一个重要的不足就是要求输入者必须在指定的设备上书写,然而人们在生活中大部分的书写情况是不满足这一要求的,比如人们填写各种表格资料,开具支票等。如果需要计算机去认识这些己经成为文字的东西,就需要OCR技术。比起联机字符识别来,OCR不要求书写者在特定输入设备上书写,它可以与平常一样书写,所以OCR 的应用更为广泛。OCR所使用的输入设备可以是任何一种图像采集设备,如CCD、扫描仪、数字相机等。通过使用这类采集设备,OCR系统将书写者已写好的文字作为图像输入到计算机中,然后由计算机去识别。由于OCR的输入只是简单的一副图像,它就不能像联机输入那样比较容易的从物理特性上获得字符笔划的顺序信息,因此OCR是一个更具挑战性的问题。 数字识别是多年来的研究热点,也是字符识别中的一个特别问题,它是本文研究的重点。数字识别在特定的环境下应用特别广泛,如邮政编码自动识别系统,税表和银行支票自动处理系统等。一般情况下,当涉及到数字识别时,人们往往要求识别器有很高的识别可靠性,特别是有关金额的数字识别时,如支票中填写

手写数字识别实践指导手册

手写数字系统实践指导手册 1 问题描述 设计一个简单的手写数字识别系统,能够识别手写输入的数字1-9并且能够识别选中的文本文件中的数字,应具有简单方便的操作界面,输入输出等。 1.1功能需求分析 通过分析,以及从用户的角度考虑,系统应该具有以下功能: (1)数字的手写输入。作为一个手写数字识别系统,首先应该能够让用户过绘制窗口进行数字绘制,系统得到用户的手写输入进行处理。 (2)直接选择文件。用户还可以选择系统中的文本文件进行处理。 (3)数据预处理。包括计算数据大小、二值化、格式化处理等。 (4)数字提取。将经过二值化后的图像中的个数字区域进行提取,只有能够将数字进行准确的提取,才能将其一一识别。 (5)基准库的选择与建立。选择一个可供系统训练和测试的样本库非常重要,本系统的训练集和测试集选择的是《机器学习实战》中所给的数据。 (6)识别数字。经过训练集进行训练后,使用knn算法对需要识别的数字识别。 2 数据集获取 ●任务要求: 从网上爬取或者下载适合进行手写数字识别系统的训练集和测试集 ●实践指导: 方式一:自己从网上找适合的数据下载 方式二:推荐数据集:“手写数字数据集的光学识别”一文中的数据集合,该文登载与2010年10月3日的UCI机器学习资料库中https://www.wendangku.net/doc/7616245853.html,/ml

3 功能设计与实现 3.1手写数字识别系统结构图: 图一:系统结构图 3.2识别用户选择手选文件功能设计与实现 ●任务要求: 用户可以自己从电脑中选择文本文件进行识别。 ●实践指导: KNN分类器的构造思路及原理如下: 1)选择训练集和测试集。系统所采用的数据集选用的是“手写数字数据集的光学识别”一文中的数据集合。0-9每个数字大约有200个训练数据20个测试数据。数字的文本格式如图所示。

手写数字识别的原理及应用

手写数字识别的原理及应用 林晓帆丁晓青吴佑寿 一、引言 手写数字识别(Handwritten Numeral Recognition)是光学字符识别技术(Optical Character Recognition,简称OCR)的一个分支,它研究的对象是:如何利用电子计算机自动辨认人手写在纸张上的阿拉伯数字。 在整个OCR领域中,最为困难的就是脱机手写字符的识别。到目前为止,尽管人们在脱机手写英文、汉字识别的研究中已取得很多可喜成就,但距实用还有一定距离。而在手写数字识别这个方向上,经过多年研究,研究工作者已经开始把它向各种实际应用推广,为手写数据的高速自动输入提供了一种解决方案。 二、研究的实际背景 字符识别处理的信息可分为两大类:一类是文字信息,处理的主要是用各国家、各民族的文字(如:汉字,英文等)书写或印刷的文本信息,目前在印刷体和联机手写方面技术已趋向成熟,并推出了很多应用系统;另一类是数据信息,主要是由阿拉伯数字及少量特殊符号组成的各种编号和统计数据,如:邮政编码、统计报表、财务报表、银行票据等等,处理这类信息的核心技术是手写数字识别。这几年来我国开始大力推广的“三金”工程在很大程度上要依赖数据信息的输入,如果能通过手写数字识别技术实现信息的自动录入,无疑会促进这一事业的进展。因此,手写数字的识别研究有着重大的现实意义,一旦研究成功并投入应用,将产生巨大的社会和经济效益。 三、研究的理论意义 手写数字识别作为模式识别领域的一个重要问题,也有着重要的理论价值: 1.阿拉伯数字是唯一的被世界各国通用的符号,对手写数字识别的研究基本上与文化背景无关,这样就为各国,各地区的研究工作者提供了一个施展才智的大舞台。在这一领域大家可以探讨,比较各种研究方法。 2.由于数字识别的类别数较小,有助于做深入分析及验证一些新的理论。这方面最明显的例子就是人工神经网络(ANN)------相当一部分的ANN模型和算法都以手写数字识别作为具体的实验平台,验证理论的有效性,评价各种方法的优缺点。 3.尽管人们对手写数字的识别已从事了很长时间的研究,并已取得了很多成果,但到目前为止机器的识别本领还无法与人的认知能力相比,这仍是一个有难度的开放问题(Open problem)。

基于知识库的手写体数字识别

HUNAN UNIVERSITY 2016 年6 月 25 日 课程 模式识别 题 目 基于知识库的手写体数字识别 学生姓名 学生学号 专业班级 学 院 名 称

基于知识库的手写体数字识别 1案例背景: 手写体数字识别是图像识别学科下的一个分支,是图像处理和模式识别研究领域的重要应用之一,并且具有很强的通用性。由于手写数字的随意性很大,如笔画粗细、字体大小、倾斜角度等因素都有可能直接影响到字符的识别准确率,所以手写体数字识别是一个很有挑战性的课题。在过去的数十年中,研究者们提出了许多识别方法,并取得了一定的成果。在大规模数据统计如例行年检、人口普查、财务、税务、邮件分拣等应用领域都有广阔的应用前景。 本案例实现了手写阿拉伯数字的识别过程,并对手写数字识别的基于统计的方法进行了简要介绍和分析。本文实现的手写字体识别程序具有手写数字图像读取、特征提取、数字模板特征库以及识别功能。 2 理论基础: 2-1手写字体识别方法: 手写体数字识别是一个跨学科的复杂问题,综合了图像处理、模式识别、机器学习等多个领域的知识,其识别过程一般包含图像预处理、特征提取、分类器的设定及其后处理等组成。处理流程如图2-1所示。 图2-1 手写体数子识别流程图 2-2 图像预处理 手写体数字识别的首要工作是图像预处理。在图像预处理过程中需要解决的主要问题有:定位、图像二值化、平滑化(去噪)H J、字符切分、规范化等。图像二值化是指将整个图像呈现出明显的黑白效果。待识别的手写体数字图像在扫描过程中,常会带来一些噪声,用不同的扫描分辨率得到的数字图像,其质量也各不相同,故而要先将这些干扰因素排除掉。另外,还需要正确分割整幅文档图像中的手写体数字,而分割后的数字大小、字体常各不相同,故还需进行归一化处理。 2-3 特征提取 特征提取的目的是从经过预处理后的数字图像中,提取出用以区分与其它数字类别的本质属性并数值化,形成特征矢量的过程。常见的手写体数字特征有:模板特征、统计特征、结构特征和变换特征。

自由手写体数字识别系统的设计与实现

自由手写体数字识别系统的设计与实现 戴建辉 信息科学与工程学院,电子信息工程系 指导老师:吴谨 摘要:本文论述并设计实现了一个脱机自由手写体数字识别系统。文中首先对待识别数字的预处理进行了介绍,包括二值化、平滑滤波、规范化、细化等图像处理方法;其次,探讨了如何提取数字字符的结构特征和笔划特征,并详细地描述了知识库的构造方法;最后采用了以知识库为基础的模板匹配识别方法,并以MATLAB作为编程工具实现了具有友好的图形用户界面的自由手写体数字识别系统。实验结果表明,本方法具有较高的识别率,并具有较好的抗噪性能。 关键词:手写体数字;预处理;模式识别;特征提取 Abstrct: This paper describes and designs a free handwritten number recognition system. Firstly, the pretreatment of the character to be recognized is introduced, including binarization, smoothing, normalization and thinning. Next, how to extract the structural features of the numbers is discussed, and we describe the constructing method of repository. Finally, we use the method of template matching, based on repository, to recognize the digital number. Matlab is used as a program tool to realize this free handwritten digital recognition system with friendly graphical user interface. The experimental results show that the rate of the recognition system is high, and the proposed method is robust to noise. Keywords: handwritten number; pretreatment;pattern recognition; feature extraction 1 引言 OCR(Optical Character Recognition)即光学字符识别技术,是通过扫描仪把印刷体或手写体文稿扫描成图像,然后识别成相应的计算机可直接处理的字符。OCR是模式识别的一个分支,按字体分类主要分为印刷体识别和手写体识别两大类。对于印刷体识别又可以分成单一字体单一字号和多种字体多种字号几类。而手写体识别又可分为受限手写体和不受限手写体两类;按识别方式可分为在线识别和脱机识别两类。 字符识别处理的信息可分为两大类:一类是文字信息,处理的主要是用各国家、各民族的文字(如:汉字,英文等)书写或印刷的文本信息,目前在印刷体和联机手写方面技术已趋向成熟,并推出了很多应用系统;另一类是数据信息,主要是由阿拉伯数字及少量特殊符号组成的各种编号和统计数据,如:邮政编码、统计报表、财务报表、银行票据等等,处理这类

手写体数字识别方法的研究与实现

手写体数字识别方法的研究与实现 摘要 1引言 手写体数字识别是文字识别中的一个研究课题,是多年来的研究热点,也是模式识别领域中最成功的应用之一。由于识别类型较少,在实际生活中有深远的应用需求,一直得到广泛的重视。近年来随着计算机技术和数字图像处理技术的飞速发展,数字识别在电子商务、机器自动输入等场合已经获得成功的实际应用。尽管人们对手写数字的研究己从事了很长时间的研究,并己取得了很多成果,但到目前为止,机器的识别本领还无法与人的认知能力相比,这仍是一个有难度的开放问题,所以对手写数字识别的进一步研究,寻求如何更高效更准确更节能地实现手写数字的自动录入和识别的解决方案对提高经济效益、推动社会发展都有深远的意义。 近年来, 人工神经网技术发展十分迅速, 它具有模拟人类部分形象思维的能力, 为模式识别开辟了新的途径, 成了模拟人工智能的一种重要方法,特别是它的信息并行分布式处理能力和自学习功能等显著优点, 更是激起了人们对它的极大的兴趣。BP(Back Propagation)网络是神经网络中一种,是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,可以很好地解决非线性问题,在函数逼近、模式识别和数据压缩等方面都有很广泛的应用。我们在认真地研究了神经网络的基本原理和机制的基础上, 结合手写体数字识别这一具体课题, 提出了用BP神经网络方法来实现手写体数字 识别的方案。 2手写体数字识别概述 2.1手写数字识别简述 模式识别是六十年代初迅速发展起来的一门学科。由于它研究的是如何用机器来实现人及某些动物对事物的学习、识别和判断能力,因而受到了很多科技领域研究人员的注意,成为人工智能研究的一个重要方面。 字符识别是模式识别的一个传统研究领域。从50年代开始,许多的研究者就在这一研究领域开展了广泛的探索,并为模式识别的发展产生了积极的影响。 手写体数字识别是多年来的研究热点也是字符识别中的一个特别问题。手写体数字识别在特定的环境下,如邮政编码自动识别系统,税表和银行支票自动处理系统等一般情况。当涉及到数字识别时,人们往往要求识别器有很高的识别可靠性,特别是有关金额的数字识别时,如支票中填写的金额部分,更是如此。因此针对这类问题的处理系统设计的关键环节之一就是设计出高可靠性和高识别率的手写体数字识别方法。这个领域取得了飞速的发展,部分是由于更好的学习算法,部分是由于更优良的训练集。美国国家科学学会(NIST)建立了

cnn实现手写数字识别

import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data In [ ]: mnist = input_data.read_data_sets('MNIST_data',one_hot =Tr ue) batch_size =100 n_batch = mnist.train.num_examples // batch_size def weight_variable(shape): initial = tf.truncated_normal(shape,stddev =0.1) return tf.Variable(initial) def bias_variable(shape): initial = tf.constant(0.1,shape=shape) return tf.Variable(initial) def conv2d(x,W): return tf.nn.conv2d(x,W,strides=[1,1,1,1],padding='SAME') #strides[0] = strides[3] = 1: def max_pool_2x2(x): return tf.nn.max_pool(x,ksize=[1,2,2,1],strides=[1,2,2,1], padding='SAME') #ksize #ksize: A list of ints that has length >= 4. The size of th e window for each dimension o f the input tensor. #In general for images, your input is of shape [batch_size, 64, 64, 3] for an RGB image of 64x64 pixels. #The kernel size ksize will typically be [1, 2, 2, 1] if yo u have a 2x2 window over which you take the maximum. # On the batch size dimension and the channels dimension, k size is 1 because we don't want to take the maximum over mu ltiple examples, # or over multiples channels. #strides # The first 1 is the batch: You don't usually want to skip over examples in your batch, or you shouldn't have included them in the first place. :) # The last 1 is the depth of the convolution: You don't usu ally want to skip inputs, for the same reason. x = tf.placeholder(tf.float32,[None,784])#none为任意维度 y = tf.placeholder(tf.float32,[None,10])

手写数字识别(mxnet官网例子)

手写数字识别 简介:通过MNIST数据集建立一个手写数字分类器。(MNIST对于手写数据分类任务是一个广泛使用的数据集)。 1.前提:mxnet 0.10及以上、python、jupyter notebook(有时间可以jupyter notebook的用法,如:PPT的制作) pip install requests jupyter ——python下jupyter notebook 的安装 2.加载数据集: import mxnet as mx mnist = mx.test_utils.get_mnist() 此时MXNET数据集已完全加载到内存中(注:此法对于大型数据集不适用) 考虑要素:快速高效地从源直接流数据+输入样本的顺序 图像通常用4维数组来表示:(batch_size,num_channels,width,height) 对于MNIST数据集,因为是28*28灰度图像,所以只有1个颜色通道,width=28,height=28,本例中batch=100(批处理100),即输入形状是(batch_size,1,28,28) 数据迭代器通过随机的调整输入来解决连续feed相同样本的问题。测试数据的顺序无关紧要。 batch_size = 100 train_iter=,mnist['train_label'], batch_size, shuffle=True) val_iter = , mnist['test_label'], batch_size) ——初始化MNIST数据集的数据迭代器(2个:训练数据+测试数据)

3.训练+预测:(2种方法)(CNN优于MLP) 1)传统深度神经网络结构——MLP(多层神经网络) MLP——MXNET的符号接口 为输入的数据创建一个占位符变量 data = data = ——将数据从4维变成2维(batch_size,num_channel*width*height) fc1 = , num_hidden=128) act1 = , act_type="relu") ——第一个全连接层及相应的激活函数 fc2 = , num_hidden = 64) act2 = , act_type="relu") ——第二个全连接层及相应的激活函数 (声明2个全连接层,每层有128个和64个神经元) fc3 = , num_hidden=10) ——声明大小10的最终完全连接层 mlp = , name='softmax') ——softmax的交叉熵损失 MNIST的MLP网络结构 以上,已完成了数据迭代器和神经网络的申明,下面可以进行训练。超参数:处理大小、学习速率 import logging

神经网络应用于手写数字识别-matlab说课讲解

神经网络应用于手写数字识别-m a t l a b

实验报告 实验课程:管理运筹学 实验名称:神经网络应用于手写数字识别-matlab 学生姓名: 指导教师: 实验时间: 2018年1月16日

实验要求: 运用matlab编程进行神经网络进行手写数字识别。 小组成员: 姓名学号 实验过程: 一、BP神经网络 神经网络是由很多神经元组成,可以分为输入,输出,隐含层。 BP神经网络的特点:信号前向传递,信号反向传播。若输出存在误差,根据误差调整权值和阈值,使网络的输出接近预期。 在用BP神经网络进行预测之前要训练网络训练过程如下: 1.网络初始化:各个参数的确定包括输入,输出,隐含层的节点数,输入和隐含,隐含和输出层之间的权值,隐含,输出层的阈值,学习速度和激励函数。 2.计算隐含层输出 3.计算输出层输出 4.误差计算 5.权值更新 6.阈值更新 7.判断迭代是否结束 二、模型建立 数据集介绍: 数据集包含0-9这10个数字的手写体。是放在10个文件夹里,文件夹的名称对应存放的手写数字图片的数字,每个数字500张,每张图片的像素统一为28*28。 识别流程: 首先要对数据进行处理,这个主要是批量读取图片和特征提取的过程,特征提取的方法很多,这里只挑选最简单的来实现,然后是训练出一个神经网络的模型,最后用测试数据进行测试。为了方面,这里的神经网络的创建,训练和测试采用matlab函数来实现。

训练 运行流程: 1.确定神经网络的输入,输出。 输入是BP神经网络很重要的方面,输入的数据是手写字符经过预处理和特征提取后的数据。预处理有二值化,裁剪掉空白的区域,然后再统一大小为70*50为特征提取做准备。特征提取采用的是粗网格特征提取,把图像分成35个区域,每个区域100像素,统计区域中1像素所占的比例。经过预处理特征提取后,28*28图像转成1*35的特征矢量。提取完5000张图片后,依次把所有的特征存于一个矩阵(35*5000)中。 2.神经的网络的训练 用matlab的rands函数来实现网络权值的初始化,网络结构为输入层35,隐藏层34,输出层10,学习速率为0.1,隐藏层激励函数为sigmoid函数。随机抽取4500张图片提取特征后输入,按照公式计算隐含层和输出层输出,误差,更新网络权值。 3.神经网络的预测 训练好神经网络之后,用随机抽取的500个数字字符对网络进行预测,输入特征向量,计算隐含层和输出层输出,得到最后预测的数据。同时计算每个数字的正确率和全体的正确率。最后得到的总体正确率为0.8620。 主函数:

手写体数字识别

手写体数字识别 摘要:手写体数字识别系统依托计算机应用软件,利用C++程序设计的相关知识,运用模块设计等相关技术,最终完成手写体识别系统的程序综合设计。 关键字:手写体数字处理模式识别程序设计 Abstract:Handwritten digital identification system relies on computer application software , using the C + + programming knowledge and module designing related technology,.Finally it completes the p rogram integrated design of handwritten identification system. Keywords:Handwriting Digital Processing Pattern recognition Program design 一、论题概述 模式识别是六十年代初迅速发展起来的一门学科。由于它研究的是如何用机器来实现人(及某些动物)对事物的学习、识别和判断能力,因而受到了很多科技领域研究人员的注意,成为人工智能研究的一个重要方面。 字符识别是模式识别的一个传统研究领域。从50年代开始,许多的研究者就在这一研究领域开展了广泛的探索,并为模式识别的发展产生了积极的影响。 字符识别一般可以分为两类:1.联机字符识别;2.光学字符识别(Optical Chara- cter Recognition,OCR)或称离线字符识别。在联机字符识别中,计算机能够通过与计算机相连的输入设备获得输入字符笔划的顺序、笔划的方向以及字符的形状,所以相对OCR来说它更容易识别一些。但联机字符识别有一个重要的不足就是要求输入者必须在指定的设备上书写,然而人们在生活中大部分的书写情况是不满足这一要求的,比如人们填写各种表格资料,开具支票等。如果需要计算机去认识这些己经成为文字的东西,就需要OCR技术。比起联机字符识别来,OCR不要求书写者在特定输入设备上书写,它可以与平常一样书写,所以OCR 的应用更为广泛。OCR所使用的输入设备可以是任何一种图像采集设备,如CCD、扫描仪、数字相机等。通过使用这类采集设备,OCR系统将书写者已写好的文字作为图像输入到计算机中,然后由计算机去识别。由于OCR的输入只是简单的一副图像,它就不能像联机输入那样比较容易的从物理特性上获得字符笔划的顺序信息,因此OCR是一个更具挑战性的问题。 数字识别是多年来的研究热点,也是字符识别中的一个特别问题,它是本文研究的重点。数字识别在特定的环境下应用特别广泛,如邮政编码自动识别系统,

相关文档
相关文档 最新文档