搜档网
当前位置:搜档网 › 毕业论文计算机手写数字识别技术

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

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

合肥学院

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 and ability. Character recognition is a traditional and typical pattern recognition problem, and Handwritten Numeral Recognition is a typical large vocabulary pattern recognition problem. Different characters do not vary much, the same character can be written in many ways, there is no context between characters, and so on. Because of so many characteristics, Handwritten Numeral Recognition is a very difficult problem and commonly regarded as one of the ultimate goals of character recognition research. And the template matching algorithm, in its calculation of eigenvalues. Image require two value, thinning and other pretreatment.

引言

手写数字识别(Handwritten Numeral Recognition)是光学字符识别技术(Optical Character Recognition,简称OCR)的一个分支,它研究的对象是:如何利用电子计算机自动辨认人手写在纸上的阿拉伯数字。

在整个OCR领域中,最为困难的就是脱机手写字符的识别。到目前为止,尽管人们在脱机手写英文、汉字识别的研究中已取得很多可喜成就,但距实用还有一定距离。而在手写数字识别这个方向上,经过多年研究,研究工作者已经开始把它向各种实际应用推广,为手写数据的高速自动输入提供了一种解决方案。

手写数字识别作为模式识别领域的一个重要问题,也有着重要的理论价值:(1).阿拉伯数字是唯一的被世界各国通用的符号,对手写数字识别的研究基本上与文化背景无关,这样就为各国,各地区的研究工作者提供了一个施展才智的大舞台。在这一领域大家可以探讨,比较各种研究方法。(2).由于数字识别的类别数较小,有助于做深入分析及验证一些新的理论。这方面最明显的例子就是人工神经网络------相当一部分的ANN模型和算法都以手写数字识别作为具体的实验平台,验证理论的有效性,评价各种方法的优缺点。(3).尽管人们对手写数字的识别已从事了很长时间的研究,并已取得了很多成果,但到目前为止机器的识别本领还无法与人的认知能力相比,这仍是一个有难度的开放问题。(4).手写数字的识别方法很容易推广到其它一些相关问题枣一个直接的应用是对英文这样的拼音文字的识别。事实上,很多学者就是把数字和英文字母的识别放在一块儿研究的。

人类认知事物的过程中,视觉起到了举足轻重的作用。视觉是人类最高级的感知器官,它不仅指对光信号的感受,还包括了对视觉信息的获取、传输、处理、存储与理解的全过程。随着工业自动化的发展,机器视觉作为一种应用系统逐渐得到完善和发展。机器视觉就是用机器代替人眼来做测量和判断。其特点是能够提高生产的柔性和自动化程度,在一些不适合人工作业的危险工作环境或人工视觉难以满足要求的场合,常用机器视觉来替代人工视觉;同时在大批量工业生产过程中,用人工视觉检查产品质量效率低且精度不高,用机器视觉检测方法可以大大提高生产效率和生产的自动化程度。而且机器视觉易于实现信息集成,是实现计算机制造的基础技术。在机器视觉中,常常需要从图像背景中把感兴趣的物体检测出来,模板匹配是最常用也是最基本的方法。随着信号处理技术和计算机技术的不断发展,模板匹配在工业检测、卫星遥感、半导体封装、文字识别、导航制导、医学X射线图片处理、气象云图分析、光学和雷达的图像模板跟踪、工业流水线的自动监控、工业仪表的自动监控、资

源分析、交通管理、图像数据库检索以及景物分析中的变化检测等领域应用越来越广泛。可见,匹配技术己经成为机器视觉和众多领域中不可或缺的组成部分,对图像匹配技术进行探索研究势在必行。

在下面各章我将以一个字符识别系统为例,就字符识别概述、模板匹配算法及改进、图像预处理、系统的具体实现等方面进行描述。

第一章绪论。

第二章模板匹配算法及改进。

第三章图像的预处理。

第四章系统的设计与实现。

第五章系统运行及测试。

结束语部分对本次毕业设计做出总结。

目录

摘要 (2)

ABSTRACT (3)

引言 (4)

第一章绪论

课题研究背景意义 (7)

字符识别概述 (7)

字符识别分类 (8)

研究对象及目标 (8)

1.4.1 研究的对象 (8)

1.4.2 研究的目标 (8)

第二章模板匹配算法及改进

模板匹配算法描述 (9)

模板匹配算法的数学描述 (10)

算法的改进及图示 (11)

第三章图像的预处理

图像的平滑去噪 (14)

BMP图像的存储结构 (15)

颜色处理 (17)

图像的二值化 (17)

图像的细化 (18)

3.5.1 细化算法的定义 (18)

3.5.2 细化的要求 (19)

3.5.3 Hilditch算法描述 (19)

第四章系统的设计与实现

Visual C++ 介绍 (21)

4.1.1 环境安装及选择的原因 (21)

4.1.2 MFC概述 (21)

系统界面按扭的生成 (21)

模板计算的实现 (23)

4.3.1 模板计算设计思想 (23)

4.3.2 代码实现 (23)

样本测试的实现 (25)

4.4.1 样本测试设计思想.................................................................. ..25 4.4.2 代码实现 (25)

第五章系统运行及测试

系统的运行 (28)

系统的测试 (28)

系统的评价 (30)

结束语 (30)

参考文献 (30)

致谢语 (31)

附录部分代码清单 (31)

第一章字符识别概述

课题研究背景意义

在机器视觉中,常常需要从图像背景中把感兴趣的物体检测出来,模板匹配是最常用也是最基本的方法。随着信号处理技术和计算机技术的不断发展,模板匹配在工业检测、卫星遥感、半导体封装、文字识别、导航制导、医学X射线图片处理、气象云图分析、光学和雷达的图像模板跟踪、工业流水线的自动监控、工业仪表的自动监控、资源分析、交通管理、图像数据库检索以及景物分析中的变化检测等领域应用越来越广泛。可见,匹配技术己经成为机器视觉和众多领域中不可或缺的组成部分,对图像匹配技术进行探索研究势在必行。

手写数字识别有着极为广泛的应用前景,这也是受到研究者重视的一个主要原因。比如说在大规模的数据统计(如行业年鉴、人口普查等)中,在财务、税务、金融领域中,在邮件分拣中均有着应用。

字符识别概述

计算机硬件的迅速发展以及计算机应用领域的不断开拓,急切地需要计算机能够更有效的感知诸如声音、文字、图像等人类赖以发展自身、改造环境所运用的信息资料。但就一般意义来说,目前计算机却无法感知他们,键盘,鼠标等输入设备,对于五花八门的外部世界显得无能为力。虽然电视摄象机、图文扫描仪、话筒等设备已解决了上述非电信号的转换,

并与计算机联机,但这并不能使计算机真正知道所接受的究竟是什么信息。计算机对外部世界感知能力的低下,成为开拓计算机应用的瓶颈,也与其高超的运算能力形成强烈的对比。因此,着眼与提高计算机感知外部信息能力的学科----模式识别得到了迅速的发展。在模式识别领域中,手写字符的识别是一个非常活跃的研究方向。但这方面的研究工作已有很多,其中不少成果得到了广泛的应用。但是由于手写字符拓扑结构的多样性,目前已有的手写字符识别体统在对无限制手写字符进行分类时,始终存在这样或那样的缺陷。

字符识别是模式识别领域中的一个非常活跃的分支。这一方面是由于问题本身的难度使之成为一个极具挑战性的课题。另一方面,是因为字符识别不是一项孤立的应用技术,其中包含了模式识别领域中其它分之都会遇到的一些最基本的和共性的问题。也正是由于字符识别技术的飞速发展,才促使识别领域和图像分析发展为一个成熟的科学领域。

字符识别技术的研究主要集中在特征抽取和模式匹配两个方面,这一直是光学字符识别(OCR)技术的两大关键所在。由扫描仪转化后的字符二值图像中各点的值,可以看成是该字符的一组特征。但由于这组特征的数量较大,而每个特征所含的信息量很少,因此有必要通过映射或变换的方法将信息集中到少量的特征中。这个过程就叫特征抽取。选择稳定的,分类能力强的特征是字符识别系统的核心。

在识别过程中,对待识别的字符进行特征抽取后,就要将这些特征与特征库中的特征进行比较,进行分类,这个过程称为特征匹配。特征匹配方法可分为完全匹配法和近似匹配法。完全匹配法就是将为未知的字符的特征向量X与特征库中的所有特征向量(Yj, j=1,2,…n)逐一进行比较,若X=Yi,则Yi所对应的字符就是识别结果。否则,就拒识。近似匹配法可进一步分为相关性匹配法,驰豫匹配法和树搜索法。

字符识别的分类

字符识别按输入方式的不同可分为联机识别(也称为在线识别)和脱机识别(也称为离线识别)。联机识别是对所书写的字符进行实时识别,即写即识。所以联机识别技术往往结合字符的笔划顺序来进行识别。脱机识别方法中,首先对已经写在纸上的字符通过扫描仪转化为二值图像,然后再对字符的二值图像进行识别。书写与识别可以分开进行。因此,脱机识别技术中不涉及字符的书写顺序。

字符识别技术根据别识别的字符的类型通常可分为印刷体识别和手写体识别两大类,而手写体识别又可分为限制手写体识别和无限制手写体识别(也称为自由手写体识别)。印刷体识别是将印刷刊物上的字符扫描转化为二值图象并进行识别,是将已有刊物上的数据大量输入计算机的最有效的方法。

研究的对象及目标

1.4.1研究的对象

我们的研究对象是无限制手写数字和英文大写字母,这方面目前已经有大量的研究成果。但是,由于手写字符,特别是英文大写字母,拓扑结构变化的多样性,使得目前已有的一些字符识别系统在应用于无限制手写字符的分类时,始终存在这样或那样的缺陷。正因为如此,手写字符识别对于广大研究者来说,是一个充满魅力的领域。

1.4.2研究的目标

本文所要做的工作是:

(1)建立一个无限制手写数字脱机识别系统,要求该系统具有至少90%以上的识别率,

并且具备一定的稳定性。

(2)建立一个无限制手写大写英文字母脱机识别系统,要求该系统作为手写字符识别

系统中的脱机识别部分,要求该系统具有至少85%以上的识别率,并且具备一定的稳

定性。

第二章模板匹配算法及改进

模板匹配算法的描述

在机器识别事物的过程中,常需把不同传感器或同一传感器在不同时间、不同成像条件下对同一景物获取的两幅或多幅图像在空间上对准,或根据己知模式到另一幅图中寻找相应的模式,这就叫做匹配。若将已知模式的图像称为模板(如图2—1),在左侧的待匹配图像中找到对应于右侧模板图像的过程即为

待匹配图像模板

图2—1 待匹配图像和模板图像的示意图

模板匹配。因为只有当同一场景的两幅图像在同一坐标系下时,才能进行相似性比较,所以模板匹配的过程实际上也就是把一幅图像变换到另一幅图像的坐标系过程。图像的模板匹配就是先给定一幅图像,然后到另一幅图像中去查找这幅图像,如果找到了,则匹配成功。这看起来好像很简单,因为我们一眼就能看出一幅图中是否包含另一幅图像,遗憾的是电脑并不具有人眼的强大的视觉的功能,因而需要电脑去判定一幅图片中是否包含另一幅图片是件不容易的事情。对于机器视觉系统而言,实现匹配首先要对图像进行预处理。先计算模板图片的特征值,并存储到计算机中。然后计算待测试样板图片的特征值,与计算机中模板进行比较,运用匹配算法实现匹配。整个过程如图2—2所示。

图2—2 图像匹配系统示意图

从上述图像匹配系统结构图中可以看出实现匹配要考虑以下几方面内容:

(1)图像的数据结构类型:即描述像素灰度值和像素光学特征值之间的信息。

(2)图像的特征空间:由特征数据组成,这些特征数据可以是原始像素数据,也可以是经过处理后提取的图像特征数据。

(3)存储:将图像处理的一些相关信息资料存储在计算机中,了解其在计算机中存储的结构。

(4)匹配算法:是实现匹配的基本思想和方法,是解决匹配问题的关键所在。算法的实现涉及到相似性度量函数的正确选择,相似性度量函数是两幅图像相比较的相似性度量,直

接影响着匹配的速度和精度。

(5)搜索方法:即遍历图像时的查找策略,正确的选择搜索方法直接影响到匹配的速度。 在基于图像处理的应用领域中,对于图像匹配的研究可以说一直都是数字图像处理技术和计算机视觉理解的重要研究内容。图像匹配在机器视觉、工业自动模式识别、医学图像的定位等方面都有着重要意义。

图像匹配的数学描述

以传统的相关算法为例对图像匹配进行数学描述。如图2—3所示,搜索图即待匹配图像S 为一方形区域,边长为N ,模板图像T 也是一个方形区域,边长为M 。设模板T 叠放在搜索图S 上平移,模板覆盖下的那块搜索图(即图中的阴影部分)叫做子图S j i ,, (i,j)为子图S j i ,的左下角在搜索图S 中的坐标为:

图2—3 被搜索图(a)和模板(b) 匹配过程如下所示:

假设模板T 从待匹配图像S 的左下角开始逐点遍历图像,比较T 和S j i ,的内容。如果两者一致,则差值为零,可以用下面的测度来衡量T 和S j i ,的内容如果两者一致,则差值为零,可以用下面的测度来衡量T 和S j i ,的相似程度,如公式(1—1)所示。

D(i,j)=∑∑==-M

m M

n j i n m T n m S 112,)],(),([ --公式(1—1)

展开后有:

D(i,j)=∑∑∑∑∑∑===-==+?-M

m M

n M

m M

n j

i M

m M

n j

i n m T n m T n m S n m S 11

211

,11

2

,)],([),(),(2)],([--公式(1—2)

公式(1—2)右边第三项代表模板的总能量,与(i,j)无关,是一个常数;第一项是子图能量,随(i,j)而改变,T 和S j i ,匹配时这一项的取值最大,可以用下面的互相关系作相似性测度:

R(i,j)=项的第项

的第12D D =∑∑∑∑?m

n

j

i m

n

j

i n m S n m T n m S 2

,,)]

,([),(),( --公式(1—3)

或归一化为: R(i,j)=

∑∑∑∑∑∑?m

n

m

n

j

i m

n j

i n m T n m S n m T n m S

)

)],([())],([()

,(),(2

2

,, --公式(1—4)

显然R(i,j)越大,模板T 和子图S j i ,就越相似,使得R(i,j)取得最大值的位置即为最佳匹配位置,(i,j)也就是我们要搜索的匹配点。

算法的改进及图示

根据以上对模板匹配的介绍,可以对字符图像进行识别。但是求相似性度量函数,求待

匹配图像和模板之间的相似性映射关系均比较复杂。上一节知识的介绍中,也看到了其过程比较麻烦。

本系统中识别的图像均为20?36大小的。即模板图像和待测图像大小相同。即会从图像的左下角一直顺着搜索一直至全图结束。而且映射关系及相似性函数均比较复杂,不是数量级上的关系。此时识别效率就不明显。显得木讷不灵巧。并非像前面介绍的在待测图片中搜索,并返回得到匹配点。因此需要基于此模板匹配算法原理的基础上,对算法进行改进,才能更有效的去完成识别的功能及简化其识别的过程。提高识别速度。即将图片区域化。

算法改进的思想:将图片(3?4)分为12块区域,具体区域的划分如图2—4所示。

图2—4 算法改进的图像示意图

再加上5条交线。共记有17个特征值。模板训练时,将数字模板图片17个特征值的信息记下并存储在数组中。当进行样本训练的时候,用同样的算法计算图片中数字的17个特征值,并到计算机存储区中去匹配,直接利用象素灰度值的差异,找到特征值最接近的一个图片数字,便完成匹配识别的过程。得到匹配的结果。这样变简单多。算法改进后图像的17个特征值计算的程序代码,如附录中所示。先让计算机学习,先计算素材T 中模板图片0~9总共10个数字的特征值,每一个特征值显示如下所示:

数字0的特征值为:,,,,,,,,,,,,,,,,, 数字1的特征值为: ,,,,,,,,,,,,,,,,,

数字2的特征值为: ,,,,,,,,,,,,,,,,,

数字3的特征值为: ,,,,,,,,,,,,,,,,,

数字4的特征值为: ,,,,,,,,,,,,,,,,,

数字5的特征值为: ,,,,,,,,,,,,,,,,,

数字6的特征值为: ,,,,,,,,,,,,,,,,,

数字7的特征值为: ,,,,,,,,,,,,,,,,,

数字8的特征值为: ,,,,,,,,,,,,,,,,,

数字9的特征值为: ,,,,,,,,,,,,,,,,,

第三章 图像的预处理

一般说来,被观测的图像中含有这种各样的噪声和畸变,去掉这些噪声和畸变,并将图像变成某种标准形式进行加工,使得特征的提取和识别变的容易进行,这些处理称为字符识别预处理。预处理是识别字符前的重要的一步,预处理的好坏直接影响着识别方法的难易及识别结构的好坏。预处理工作做的好,使反映字符本质特征的部分得到保留甚至突出出来,识别就容易进行,识别率高且识别速度快。反之,就会使识别变的困难,甚至造成识别误识等不良后果。

图像的平滑去噪

平滑处理:

字符图像经过平滑处理,能够去掉孤立噪声干扰,平滑笔划边沿。可用平滑算法。设有3?3 窗口如图3—1所示:

图3—1平滑算法

其中P 为当前点,N0-N7为其8个邻接点,平滑准则为:

(1) 当P 为白时,N0,N2,N4,N6中至少有三个元素为黑,则,将P 改为黑,否则不变。 (2)当P 为黑时,如果:

(a)N4,N3,N2中至少有1个为黑,同时N6,N7和N0中也至少有一个为黑;

(b)N2,N1,N0中至少有一个为黑,同时N4,N5和N6中也至少有一个为黑,则P 不变,否则改为白。

噪声处理

噪声处理是一个重要而复杂的工作,通过扫描得到的字符图像有时含有噪声,这些噪声可能是因为纸张质量,污点,扫描通道的碎物或其它干扰造成的。这些噪声的存在,增加了数字识别的难度,较容易导致误识,拒识。如能较好地滤除噪声,无疑会为正确识别带来方便。

由于阿拉伯数字0~9和英文大写字母均为由连续笔划组成的字符,因此若检测到字符扫描图像中的笔划数超过1,则认为该字符图像中肯定存在噪声或者断笔,需加以去噪声或连断笔处理。将多余的噪声去掉,或将断笔连在主体笔划上。而噪声和断笔的区分则可通过设定阈值来实现。具体的方法如下:

设F(i,j),0≤ i ≤m,0≤j ≤n,,为二值图象,令A 为二值图象平面上的一个N ?N 的窗口区域,令A +为包含A 的(N+2)?(N+2)的窗口区域,若

A

j i j i F ∈∑),()

,(=∑+

∈A j i j i F ),()

,(≠0

则我们认为窗口区域A 中的笔划为噪声或断笔。通过让窗口A 在图像平面上浮动,可检测到的笔划判断为噪声;另N=5,并将检测到的笔划判断为断笔。对于检测到的噪声,只需要对应的窗口区域A 中所有的黑点变为白点,即可将噪声去除。

BMP图像的存储结构

设备无关位图(Device-Independent Bitmap)DIB是标准的Windows位图格式,DIB自带颜色信息,因此调色板管理非常容易。任何运行Windows的计算机都可以处理DIB,它通常以BMP文件的形式被保存在磁盘中。BMP文件中包含了一个DIB,一个BPM文件大体上分成如下4

表3—1 Windows DIB的组成

位图文件头:主要用于识别位图文件,下面是位图文件头结构定义:

Typedef struct tagBITMAPFILEHEADER

{

UNIT bfType;

DWORD bfSize;

UNIT bfReserved1;

UNIT bfReserved2;

DWORD bfOffbits;

} BITMAPFILEHEADER;

其中,bfType表示文件类型,必须是0X424D,即值应该是“BM”,标志该文件是BMP位图文件。bfSize的值是位图文件的大小。bfReserved1和bfReserved2为保留字,不用考虑。bfOffbits为从文件头到实际的位图的数据的偏移字节数。

位图信息头:包含了单个象素所用字节数以及描述颜色的格式,此外还包括位图的宽度、高度、目标设备的位图平面书、图像的压缩格式。以下是位图信息头结构的定义:Typedef struct tagBITMAPINFOHEADER

{

DWORS biSize;

LONG biWidth;

LONG biHeight;

WORD biplanes;

WORD biBicCount;

DWORD biCompression;

DWORD biSizeImage;

LONG biXPelPerMeter;

LONG biYPelsPerMeter;

DWORD biClrUsed;

DWORD biClrImportant;

} BITMAPINFOHEADER;

表 3—2

其中,biBitCount分别有如下的意义:

0:用在JPEG格式中。

1:单色图,调色板中含有两种颜色,通常说的黑白二色图。

4:16色图。

8:256色图,通常说的灰度图。

16:64K图,一般没有调色板,图像数据中每两个字节表示一个象素。

24:16M真彩色图,没有调色板,图像数据中每3个字节表示一个象素。

32:4G真彩色,一般没有调色板,每4个字表表示一个象素,相对24位

真彩色图而言,加入了一个透明度,即RGBA模式。

biClrused:这个值通常为0,表示使用biBitCount确定的全部颜色。

biClrImportant:这个值通常为0,表示所有颜色都是必须的。

调色板(Palette):有些位图需要调色板,有些位图,如真彩色图,不需要调色板,它们的BITMAPINFOHEADER后面直接是位图数据。调色板实际上是一个数组,调色板是由颜色表项组成的,调色板结构如下:

Typedef struct tagRGBQUAD

{

BYTE rgbBlue;

BYTE rgbGreen;

BYTE rgbRed;

BYTE rgbReserved;

} RGBQUAD;

需要注意的是,RGBQUARD结构中的颜色顺序是BGR。

位图数据:在位图头文件、位图信息头、调色板之后,便是位图的主体部分:位图数据。根据不同的位图,位图数据所占据的字节数也是不同的,比如,对于8位位图,每个字节代表了一个象素,对于16位位图,每两个字节代表了一个象素,对于24位位图,每三个字节代表了1个象素,对于32位位图,每4个字节代表了一个象素。

图像的颜色处理

在真彩色系统中,图像的颜色与真实世界中的颜色非常自然逼近,人眼难以区分他们的差别,通常使用RGB表示法来表现真彩色图像,每一个象素的值用24位表示,红、绿、蓝三原色的浓度分别用一个字节来表示。但对于仅能同时显示16色或者256色的系统,每

一个象素仅能分别采用4位或者8位表示,象素值与真彩色的颜色值不能一一对应,这时就必须采用调色板技术。所谓调色板就是在16色或者256色的显示系统中,由图像出现的最频繁的16中颜色或者256种颜色所组成的频色表,颜色表中的值是某种颜色在颜色查找表中的索引值。当需要对颜色位数进行转换时,可用八叉树颜色量化算法进行转换。这种方法首先扫描所有的象素,每遇到一种新的颜色就把它放到八叉树中,并创建一个叶子节点,图像扫描结束后,如果叶节点的数量大于调色板所需的颜色数,就将某些叶节点合并到其上一层节点中(父节点)去,并将父节点变为叶节点,这样进行下去直到叶节点的数量等于或者小于调色板所需的颜色数,之后遍历八叉树,将叶节点的颜色填入调色板的颜色表中。

3.4 图像的二值化

实际上在使用的图像处理系统中,处理的对象主要是二值图像。这是因为在使用的系统中,要求处理的速度高、成本低,所以信息量大的灰阶图像的处理占用太大的部分不是好办法。因此希望尽可能用二值图像的形式进行处理。图像信息和背景信息分别对应图像灰度直方图,因此可以通过灰度直方图选择一个阈值把整个图像分成图像信息和背景信息两部分,从而把灰度图像转化为黑白二值图像。图像的灰度直方图是将图像中的象素按其灰度值大小进行组合,所构成的象素数量随灰度级变化的函数的图形形式。通常,灰度直方图的横轴表示灰度值,纵轴用来表示频度。频度,是指具有某一灰度值的象素在图像中出现的次数或者在图像中占总象素的百分比。如图3—2所示。

图3—2 具有二值倾向的灰度直方图

图像二值化可根据下面的阈值处理来进行:

一般采用设定某一阈值,用阈值将图像的数据分成大于阈值和小于阈值的象素群。例如,输入的函数是f(x,y),输出的图像是f \(x,y)。如果用灰度变换的方法来研究f(x,y),其灰度变换函数为:

f \(x,y)=???<≥时

,当时

,当θθ),(0),(1y x f y x f 其中:θ为阈值。

输出的图像的灰度值大于阈值,其数据点值取1;反之取0。这种灰度变换的方法,成为图像的二值化。二值化处理就是把图像f(x,y)分为对象物和背景两个领域,然后求其阈值。在数字化的图像数据中,无用的背景数据和对象物的数据常常混在一起。除次之外,在图像中还含有其它的各种噪声。所以阈值选取必须根据实际情况进行调节。

这里的关键问题是阈值θ的确定方法。因为灰度图像二值化后可能丢失掉原图像中的一些信息,如果阈值选择不当,二值化后的图像有可能与原图像相差很大,不能正确的反映原图像,这样,二值化就失去了意义/因为图像二值化的目的是要在尽可能多的保留原图像特征的前提下舍弃冗余信息。所以阈值的正确选择很重要。

系统中二值化的代码实现如下:

void CDigitClass::BinaryDigit(BYTE thre) {

digitWidth = (); digitHeight = (); LONG x, y;

for(x=0; x

{

for(y=0; y

{

if(digitarray[x][y] >= thre)

digitarray[x][y]=(BYTE)1;

else

digitarray[x][y]=(BYTE)0;

}

}

}

图像的细化

3.5.1 细化的定义

经过预处理,待细化的图像是0,1二值图象。象素值为1的是需要细化的部分,象素值为0的是背景区域。一个图像的“骨架”是指图像的中央的骨骼部分,可以理解为图像的中轴。例如一个长方形的骨架是它的长方向上的中轴线;正方形的骨架是他的中心点;圆的骨架是他的圆心;直线的骨架是它自身;孤立点的骨架也是它自身。骨架是描述图像几何及拓扑性质的重要特征之一。求图像骨架的过程通常称为对图像“细化”的过程。

3.5.2 细化的要求

在字符识别系统中,为减少数据量,准确提取特征,常常需要采用细化算法。不过字符经过细化后,将不可避免地丢失部分信息。因此是否细化应根据实际情况而定。但一旦决定对字符进行细化,则对细化结果的好坏,将直接影响着识别率。

一般来说,细化有以下的基本的要求:

(1)细化要保持原有字符的连续性,不能使本来相连的笔划断开。

(2)要细化成1象素的骨架,骨架应接近原笔划的中心线。

(3)不要产生严重的畸变,对噪声不敏感。

(4)保留字符原有的拓扑,几何特征,特别是一些明显的拐角不应被光滑掉。

3.5.3 Hilditch算法描述

Hilditch细化算法描述

Hilditch 提出了一种串行细化算法,由于该算法是Hilditch提出的,就叫做Hilditch 算法。Hilditch详细讲述了该算法的思想,但没有给出这种算法地一个简洁的表达式。

Hilditch细化算法是一种串行算法。这种方法需要对整幅图像作多次扫描,在每一次扫描过程中。一些满足给定条件的象素点将被标记,在本次扫描结束后,再将这些标记的象素点删除,然后开始下一次扫描,直到在某一次扫描过程中,再没有象素点被标记,整个细化过程结束。通常在二值图象中,象素点的值为1或者0,值为1的点,称为黑点,也是前景点,即图形象素;值为0的点,称为白点,也是背景点。在细化算法中,每一次扫描过程中,一个黑点,即图形象素点必须满足下面的条件才能被删除:

(1)该点是一个边界点。

(2)该点不是一个端点。

(3)该点不是一个断点。

(4)该点的删除不应该造成过度侵蚀。

图像未经细化时模板训练的效果如图3—3所示

图片3—3 细化前的效果

如图3—4所示,当前象素点P(值为1)的8领域,以及P为边界点、端点、断点时的一种表现形式。

1)P的8领域 2)P为边界点 3)P为端点 4)P为断点

图3—4 P的几种形式

为了方便讨论,令B(P)为当前象素点P的8领域中的黑象素点,S4(P)为P的4领域之和,S8(P)为P的8领域之和。

次算法在对二值图像的每一次扫描处理过程中,扫描顺序是从左到右,从上到下,一个黑象素点同时满足下列七个条件将被删除:

(1)P=1。这个条件保证当前处理象素点P为黑点,即为图形信息点。

(2)S4(P)<=3。这个条件保证P不是边界点。

(3)S8(P)>=2。这个条件保证P不是端点。

(4)N(P)>=1。N(P)是P的8领域中没有被标记的黑象素的个数,这个条件是为了保证细线的两端不被删除。

(5)N(P)>=1。N(P)的定义为:X(P)为对bi的求和。(i=1,2,3,4),bi取值:当P(2i—1)值为0并且P(2i)的值为1或者P(2i+1)的值取为1,其他情况bi的值为0。 Hilditch定义X(P)为交叉数,交叉数X(P)的取值总是0-4之间,可以从理论上证明可以删除的象素与交叉数为1的情况是一致的。

(6)X4(P)=1或者P4没有被标志。X4(P)的定义为:假设P4为0时,求出交叉数X4(P)。

(7)X8(P)=1或者P6没有被标志。同上一条。这两个条件都是为了防止过度腐蚀。

在每一次扫描结束后,被标记的象素点被删除。在最后一次扫描过程中,若没有象素点被标记,整个细化算法结束。

图片细化之后,模板训练的效果如图3—5所示

图3—5 细化后的效果

第四章系统的设计与实现

Visual C++ 简介

是一种程序设计语言,也是一个集成开发软件,它提供自动生成软件代码和可视化资源编辑的功能。与Win32紧密相连。可灵活的开发底层软件到上层直接面向用户的软件。

4.1.1 运行环境安装:

(a)安装MICROSOFT公司的Visual C++ 开发工具。

(b)安装Visual Assist V6 编程助手。

(c)安装MSDNLibrary。

选择Visual C++ 的原因:

(1)它是C和C++的混合编译器,使得Visual C++ 开发的程序具备了C和C++的高效、简洁的特点。

(2)它是一种面向对象的语言,使得软件能够在编码级、类级、控件级等多个级别上的重用,软件的开发效率大为提高。

(3)借助于Microsoft 基本类库(Microsoft Foundation Class Library,简称MFC)和应用程序框架,能够轻松的开发出Windows标准界面的应用程序。可使用AppWizard生成完整的基于MFC类库的源文件和资源文件;可使用MFC ActiveX ControlWizard生成创建ActiveX空间所需的开始文件;还可使用ClassWizard来创建新类(Class),定义消息处理函

数(Message Hander),覆盖虚拟函数(Virtual Function),从对话框(Dialog Box)的空间中获取数据并验证数据的合法性等。其界面更友好,便于操作。

4.1.2 MFC概述

微软基础类库(MFC,Microsoft Foundation Class)是微软为Windows程序员提供的一个面向对象的Windows编程接口,它大大简化了Windows编程工作。使用MFC类库的好处是:首先,MFC提供了一个标准化的结构,这样开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是“站在巨人的肩膀上”,从一个比较高的起点编程,故节省了大量的时间;其次,它提供了大量的代码,指导用户编程时实现某些技术和功能。MFC 类库充分利用了Microsoft开发人员多年开发Windows程序的经验,并可以将这些经验融入到用户自己开发的应用程序中去。

系统界面按扭的生成

可以使用上图的控件调色板,直接把控件从调色板上拖到新的对话框中,然后放

表4—1 按扭的详细定义

选中对话框,点击右键点击类向导(ClassWizard),根据上述介绍的原理,打开类向导。或者选择“VIEW”菜单中的“ClassWizard”菜单项,弹出“MFC ClassWizard”对话框。选择“Message Maps”选项卡。在“Class name”列表框中选择类CDigitRecogDlg ,在“Object IDs”列表框中选择“IDC_BUTTON_INPUT_EQUIP”,在对应的“Messages”列表中选择“BN_CLICKED”。然后单击“Add Function”按扭,添加对鼠标点击左键的响应,点确认键。在“Member functions”栏中,将会增加一个 OnButtonInputEquip函数。如图4—1所示:

图4 —1 使用类向导自动生成代码

双击“OnButtonInputEquip”函数或者在选种函数的情况下点击“Edit Code”按扭,在出现下面的函数代码,如图4—2所示。

图4—3 模板计算函数调用关系图

4.3.2 代码实现

void CDigitRecogDlg::OnButtonInputEquip()

mp)|*.bmp|所有文件(*.*)|*.*||",

AfxGetMainWnd());

if () != IDOK)

return;

CString strFile;

CString strInfo;

();eature[i] = [i];

rueClass = j;

j++;

}

}

样本测试的实现

4.4.1 样本测试设计思想

函数调用关系如图4—4所示:

图4—4 样本测试函数调用关系图

4.4.2 代码实现

void CDigitRecogDlg::OnButtonInputTest()mp)|*.bmp|所有文件(*.*)|*.*||", AfxGetMainWnd());

if () != IDOK)

return;

CString strFile;

CString strInfo;

[5] 侯捷主编,《深入浅出Windows MFC 程序设计》,华中理工大学出版社,1998

年4月

[6] 钟志光,卢君,刘伟荣编着,《Visual C++.NET 数字图象处理实例与解析》,

清华大学出版社,北京,2003年6月

[7] 何斌,马天予,王运坚,朱红莲编着,《Visual C++ 数字图象处理》,

第二版,北京,人民邮电出版社。2002

[8] 夏良正编着,《数字图象处理》,东南大学出版社,南京,1999年9月

[9] 中国学术期刊网

[10] 万方数据库资源系统

致谢语

首先我要感谢合肥学院计算机科学与技术系的全体老师对我的关怀。在本次毕业设计与毕业论文写作过程中得到赵大政指导老师的悉心指导。通过这次毕业设计,启发了我的思维,提高了我的动手能力,学到了很多书本上学不到的东西,这些为我在今后工作岗位上发挥自己的才能奠定了坚实基础。

我还要感谢我的家人,是他们的无私支持是我能顺利完成大学几年的学习,是他们在我遇到难题时给我及时的帮助与无限的动力,所以,我以此毕业论文作为我的学习成果向父母汇报,感谢你们。

最后,我要再次向给予我帮助的所有老师和同学表示深深的谢意,感谢大家在学习、生活中对我的帮助,谢谢大家!

附录

附录一:以下是按扭的部分代码清单:

mp)|*.bmp|所有文件(*.*)|*.*||",

AfxGetMainWnd());

if () != IDOK)

return;

CString strFile;

CString strInfo;

(); eature[j]);eature[j])*9;mp)|*.bmp|所有文件(*.*)|*.*||",

AfxGetMainWnd());

if () != IDOK)

return;

CString strFile;

CString strInfo;

();eature[i] = [i];

rueClass = j;

j++;

}

}

void CDigitClass::GetFeature() {

int i,j;

for(i=0; i<17; i++)

feature[i] = 0;

//图像是20×36大小的,分成12块for(i=0; i<7; i++)

{

for(j=0; j<9; j++)

{

if(digitarray[i][j]==1)

feature[0]+=;

}

}

for(i=0; i<7; i++)

{

for(j=9; j<18; j++)

{

if(digitarray[i][j]==1)

feature[1]+=;

}

}

for(i=0; i<7; i++)

{

for(j=18; j<27; j++)

{

if(digitarray[i][j]==1)

feature[2]+=;

}

}

for(i=0; i<7; i++)

{

for(j=27; j<36; j++)

{

if(digitarray[i][j]==1)

feature[3]+=;

}

}

for(i=7; i<13; i++)

{

for(j=0; j<9; j++)

{

if(digitarray[i][j]==1)

feature[4]+=;

}

}for(i=7; i<13; i++)

{

for(j=9; j<18; j++)

{

if(digitarray[i][j]==1)

feature[5]+=;

}

}for(i=7; i<13; i++)

{

for(j=18; j<27; j++)

{

if(digitarray[i][j]==1)

feature[6]+=;

}

}for(i=7; i<13; i++)

{

for(j=27; j<36; j++)

{

if(digitarray[i][j]==1)

feature[7]+=;

}

}for(i=13; i<20; i++)

{

for(j=0; j<9; j++)

{

if(digitarray[i][j]==1)

feature[8]+=;

}

}for(i=13; i<20; i++)

{

for(j=9; j<18; j++)

{

if(digitarray[i][j]==1)

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

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

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

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

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

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

毕业论文计算机手写数 字识别技术 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

手写数字识别的实现

燕山大学 课程设计说明书 题目:手写数字识别的实现 学院(系):电气工程学院 年级专业: 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)

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

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

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

专业年级:电子信息工程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 错误!未找到引用源。

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

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

手写数字识别技术研究【开题报告】

毕业设计开题报告 计算机科学与技术 手写数字识别技术研究 一、选题的背景、意义 字符识别处理的信息可分为两大类:一类是文字信息,处理的主要是用各国家,各民族的文字(如:汉字,英文等)书写或印刷的文本信息,目前在印刷体和联机手写方面技术已趋向成熟,并推出了很多应用系统;另一类是数据信息,主要是由阿拉伯数字及少量特殊符号组成的各种编号和统计数据,如:邮政编码,统计报表,财务报表,银行票据等等,处理这类信息的核心技术是手写数字识别。因此,手写数字的识别研究有着重大的现实意义,一旦研究成功并投入应用,将产生巨大的社会和经济效益。 在当前在手写体数字识别的研究中,对于已二值化的图像抽取特征的方法有许多种。常用的统计特征有Gabor变换特征、Legendre矩特征、Pseudo-Zernike矩特征与Zernike矩特征。统计特征通常反映图像点阵总体分布情况,这些特征的图像预处理简单,对噪声不敏感,但对字的一些精细结构部分反应不灵敏。由数字图像的骨架和轮廓可抽取出手写体数字的结构特征,它往往对字结构精细部分反映灵敏,但图像预处理复杂,对噪声较敏感,一个完善的基于结构特征的分类器往往十分庞杂。基于这种情况,研究一种特征提取基于根据图像象素的走向判断出某段数字的结构的手写体识别系统具有一定的现实意义。 二、研究的基本内容与拟解决的主要问题 手写字符识别技术作为光学字符识别的一个重要分支,其综合了数学图像处理、计算机图形学和人工智能等多方面的知识,已越来越成为计算机自动化和智能化的重要技术。 由于手写数字的不规范性和多样性,再加上为了识别精确而对数字图像进行高点阵扫描,从而使数字识别时所要处理的信息不仅量大,而且复杂。为了能更好地识别,就要求识别系统能从大量数据中抽取关键信息,加以准确识别。脱机识别将书写字符转化为点阵或二值图像再抽取特征进行识别, 该方法与书写顺序无关, 较易识别具有“补笔划”或有“自由始终点”的字符, 但不易抽取象笔划特征这样分类能力强的特征。 本毕业设计主要解决以图像形式存在的手写体数字的识别问题。主要分为三个部分,

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

大学生研究计划项目 论文报告 项目名称:_手写体数字识别系统的设计与实现 负责人:_________ _______________ 学院/专业:_____ ______ 学号:____ ________ 申请经费:_____ _________________ 指导教师:______ _______ 项目起止时间: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.sodocs.net/doc/6d6732815.html,/ml

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

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

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

数字识别的主要算法

BP神经网络识别手写数字 1.图像的预处理 对手写数字图像样本灰度化处理,二值化处理,归一化调整等预处理。其中二值化处理利用greythresh函数得到图像的全局阈值,然后使用im2bw将灰度图像转换为二值图像。 Ibw = im2bw(I1,greythresh(I1)); --Ibw为二值化图像的存储矩阵。 bw2 = edu_imgcrop(Ibw); %找到图像边界 [y2temp x2temp] = size(bw); x1=1; y1=1; x2=x2temp; y2=y2temp; % 找左边空白 cntB=1; while (sum(bw(:,cntB))==y2temp) x1=x1+1; cntB=cntB+1; end

% 左边 cntB=1; while (sum(bw(cntB,:))==x2temp) y1=y1+1; cntB=cntB+1; end % 上边 cntB=x2temp; while (sum(bw(:,cntB))==y2temp) x2=x2-1; cntB=cntB-1; end % 下边 cntB=y2temp; while (sum(bw(cntB,:))==x2temp) y2=y2-1; cntB=cntB-1; end bw2=imcrop(bw,[x1,y1,(x2-x1),(y2-y1)]); --对图像进行裁剪,使边框完全贴近字符。 归一化处理将图片归一化为28×28像素点阵图。 2.特征提取 将经过预处理的后的数字图像中提取最能体现这个字符特点的特征向量,然后提取出训练样本中的特征向量带入BP网络中就可以对网络进行训练。可以采用逐像素特征提取方法提取数字样本的特征向量。归一化后的图像形成一个28 28 的布尔矩阵,依次取每列的元素转化为784×1的列矩阵,及数字字符的特征向量。还可以对每幅单个手写体图像进行边缘裁剪后,将裁减后的二值图像

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

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

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

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

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

目录 前言 (1) 概述 (2) 1 需求分析 (4) 1.1 功能需求分析 (4) 1.2 性能需求分析 (4) 1.3 数据需求分析 (5) 1.4 相关软件介绍 (5) 2 手写数字识别系统的设计与基本原理 (6) 2.1 系统整体功能模块设计 (6) 2.2 手写数字识别系统的基本原理 (6) 2.2.1 数字图像的绘制 (6) 2.2.2 图像的预处理 (6) 2.2.3 图像的特征提取 (7) 2.2.4 特征库的建立 (8) 2.2.5 图像数字的识别 (8) 3 手写数字识别系统程序设计 (8) 3.1 数字图像的绘制 (8) 3.2数字的特征提取 (15) 3.3 模板特征库的建立 (18) 3.4 数字的识别 (20) 总结 (23)

致谢.................................... 错误!未定义书签。参考文献 (23)

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

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

自由手写体数字识别系统的设计与实现 戴建辉 信息科学与工程学院,电子信息工程系 指导老师:吴谨 摘要:本文论述并设计实现了一个脱机自由手写体数字识别系统。文中首先对待识别数字的预处理进行了介绍,包括二值化、平滑滤波、规范化、细化等图像处理方法;其次,探讨了如何提取数字字符的结构特征和笔划特征,并详细地描述了知识库的构造方法;最后采用了以知识库为基础的模板匹配识别方法,并以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是模式识别的一个分支,按字体分类主要分为印刷体识别和手写体识别两大类。对于印刷体识别又可以分成单一字体单一字号和多种字体多种字号几类。而手写体识别又可分为受限手写体和不受限手写体两类;按识别方式可分为在线识别和脱机识别两类。 字符识别处理的信息可分为两大类:一类是文字信息,处理的主要是用各国家、各民族的文字(如:汉字,英文等)书写或印刷的文本信息,目前在印刷体和联机手写方面技术已趋向成熟,并推出了很多应用系统;另一类是数据信息,主要是由阿拉伯数字及少量特殊符号组成的各种编号和统计数据,如:邮政编码、统计报表、财务报表、银行票据等等,处理这类

手写数字识别的实现

手写数字识别的实现 摘要: 手写数字识别是模式识别的应用之一。文中介绍了手写数字的一些主要特征,具体识别方法是通过主成分分析(PCA)和最近邻方法应用matlab等计算机软件来实现。 关键词:手写数字、主成分分析(PCA)、最近邻方法 1. 手写数字的特征分析 数字类别不但少,而且笔划简单,尤其是手写数字个个差异大。数字识别的关键在于能否找到有效的特征,[2] 就给出了数字的多个特征,选取的特征应具有可分辨能力并尽可能的少,分辨能力在应用中而言就是特征能够使得不同类别的个体在特征值上相差大,同类别特征值相差小。特征值小一方面是为了减少计算量,另一方面也减少了信息冗余。目前研究的手写数字特征主要有笔画密度特征、粗网格特征、重心以及重心距特征、首个黑点位置特征、投影特征以及空间域变换特征等,除了以上特征,也不断的有新的特征[1]被提出。 1.1 数字的特征 1.1.1 单个数字的特征 单个数字特征是指特定数字普遍具有的特征。例如如果数字竖直长度比上横向宽度大于某个值比如 4 ,那么很有可能是数字 1 ,如果数字内有两个封闭的区域则很可能是字8 ,如果只有一个封闭的区域,且封闭区域的重心偏上则很可能是数字9 (同理可判断数字 6 ),以上都是这些数字普遍具有的特征,但因为数字手写的原因,也包含了大量不规则的例子,如图 1 ,则需要进一步 借助其他特征进行识别。 单个数字特征可以辨别出那些具有典型数字特征的手写数字,但计算复杂并且在手写数字识别中误差大,但是作为正式识别过程前的预识别可减少运算量和时间。 1.1.2 笔画密度特征 笔画密度特征是指不同数字在水平方向、竖直方向以及其他角度方向上笔画密度特征。如图 2 数字 1 在竖直方向上笔画密度大,而在水平方向上笔画密度小,而数字8 在倾斜方向上笔画密度大。找到这样的特征我们可以间隔一定行

手写数字识别技术的应用

手写数字识别技术的应用 林晓帆丁晓青吴佑寿 手写数字识别(handwritten numeral recognition)是光学字符识别技术(optical character recognition,简称ocr)的一个分支,它研究的对象是:如何利用电子计算机自动辨认人手写在纸张上的阿拉伯数字。 在整个ocr领域中,最为困难的就是脱机手写字符的识别。到目前为止,尽管人们在脱机手写英文、汉字识别的研究中已取得很多可喜成就,但距实用还有一定距离。而在手写数字识别这个方向上,经过多年研究,研究工作者已经开始把它向各种实际应用推广,为手写数据的高速自动输入提供了一种解决方案。 一、研究的实际背景 字符识别处理的信息可分为两大类:一类是文字信息,处理的主要是用各国家、各民族的文字(如:汉字,英文等)书写或印刷的文本信息,目前在印刷体和联机手写方面技术已趋向成熟,并推出了很多应用系统;另一类是数据信息,主要是由阿拉伯数字及少量特殊符号组成的各种编号

和统计数据,如:邮政编码、统计报表、财务报表、银行票据等等,处理这类信息的核心技术是手写数字识别。这几年来我国开始大力推广的“三金”工程在很大程度上要依赖数据信息的输入,如果能通过手写数字识别技术实现信息的自动录入,无疑会促进这一事业的进展。因此,手写数字的识别研究有着重大的现实意义,一旦研究成功并投入应用,将产生巨大的社会和经济效益。 二、研究的理论意义 手写数字识别作为模式识别领域的一个重要问题,也有着重要的理论价值: 1.阿拉伯数字是唯一的被世界各国通用的符号,对手写数字识别的研究基本上与文化背景无关,这样就为各国,各地区的研究工作者提供了一个施展才智的大舞台。在这一领域大家可以探讨,比较各种研究方法。 2.由于数字识别的类别数较小,有助于做深入分析及验证一些新的理论。这方面最明显的例子就是人工神经网络(ann)———相当一部分

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])

相关主题