基于多特征提取的识别算法

摘 要

该文提出了一种基于多特征提取的手写汉字识别算法及其实现。该算法同时运用了基于统计特征和基于结构特征的汉字识别算法并对它们做了相应改进。

算法在匹配判别阶段采用了分类判别思想,在汉字图像输入的同时,记录汉字图像的输入结构特点,在此基础上得到输入的未知汉字的笔划特征,由笔划特征即可对未知汉字做粗分类,这样可以缩小判别时的汉字范围。经过汉字粗分类后,提取整个汉字图像的统计特征,该步骤采用了网格划分方法,即先对图像做划分,再计算每一网格内文字相素与整个图像中文字相素的比值,通过这些特征对文字图像做细分类即可得到识别结果.

基于多特征提取的识别算法对汉字的识别十分有效,能使识别率达到90%以上,该文同时也给出了对书写不规范的字的解决方案。

关键词:文字识别,特征提取,模式匹配, 模式识别

ABSTRACT

The article proposes an algorithm for hand-written Chinese character recognition and its realization . The algorithm is based on the multi-characteristics, it unifies and improves the algorithm based on the statistic characteristic and the algorithm based on the structure characteristics.

The algorithm adopts the classified distinction through the match distinction stage. It takes down the character image’s input unique feature when the image input. With the input unique feature, it can obtains the pen delimits characteristics of the unknown character image. The first classification can be managed based on these steps, thus the range of the second classification will smaller. After the first classification, it must withdraws the statistic characteristics of the image. The algorithm adopts the grid division method in this step. It makes a division to the image and then compute the element ratio of every areas. As a result, the character image can be recognized by the steps above.

The recognition algorithm based on multi-characteristics is extremely effective to the Chinese character recognition.The recognition rate can achieves above 90% .This article also provide methods for the characters written standardless.

Key words: Writing recognition, Characteristic withdraws , Pattern matching, Pattern recognition

目 录

中文摘要 . .................................................................................................. Ⅰ ABSTRACT .............................................................................................. Ⅱ 目录 ........................................................................................................... III 图片索引目录 . .......................................................................................... Ⅳ 绪论 ............................................................................................................ 1 1 汉字识别原理及常用算法 . ................................................................... 4

1.1 汉字识别的原理 . ..................................................................................... 4

1.2 基于统计决策方法的汉字识别 . ................................................................... 5

1.3基于结构特征方法的汉字识别 .................................................................... 6 2 基于多特征提取的识别算法 . ............................................................... 9

2.1手写汉字识别的现行算法分析 .................................................................... 9

2.1.1以笔划序列为特征的识别算法 .............................................................. 9

2.1.2基于统计特征的汉字识别算法.............................................................. 11 2.2现行算法的结合和改进.............................................................................. 12 3 识别算法对应的VC 代码 . .................................................................... 14

3.1输入预处理 . ........................................................................................... 15

3.2识别算法 . .............................................................................................. 18 4 算法实现结果和分析 . .......................................................................... 20

4.1 模拟结果介绍 . ....................................................................................... 20

4.2 结果分析 . ............................................................................................. 21 5 总结与展望 . .......................................................................................... 24

5.1 论文总结 . ............................................................................................. 24

5.2 算法的前景展望 . .................................................................................... 24 参考文献 . .................................................................................................. 25

附:图片索引目录

图1.1 汉字识别原理框图 .................................................................................. 4 图 1.2 汉字图像的粗外围图 .............................................................................. 5 图 2.1 二维平面的划分图 ................................................................................. 9 图 2.4 汉字图像的统计特征图 .......................................................................... 11 图 2.6 汉字识别算法流程图 ............................................................................. 13 图 4.1 程序运行界面 ...................................................................................... 20 图 4.2 汉字的写入 ......................................................................................... 20 图 4.3 系统识别写入的汉字图像 ....................................................................... 21 图 4.4 通过“学习”过程向字库中添加汉字特征 .................................................. 21 图 4.5 能够识别的汉字图像示例 ....................................................................... 22 图 4.6 不能识别的汉字图像示例 ....................................................................... 22

绪 论

世界上的文字有两大类,一种是拼音类文字(如英文),另一种是象形类或图形类文字(如汉字)。在人机交互中,拼音文字显示出了极大的优越性,利用键盘可以把一个个字母很自然很方便的输入计算机,而对与图形类文字,一直没有适当的输入设备。从80年代开始,微机大量地进入我国,许多用于中文信息处理,但输入设备仍然只是键盘,为了将汉字输入计算机,涌现出了各种各样的汉字编码方案,所谓编码方案就是通过人为的规则,把汉字转换成字符或数字以方便利用键盘输入。利用编码方案进行汉字输入需要记忆,这给计算机在生活领域的普及带来了很大的不便,利用西文键盘输入汉字的限制成了计算机普及应用的瓶颈和桎酷。随着科学技术的发展,人们意识到要用图形输入设备输入汉字,输入后由计算机自动识别并转化成内码,至于计算机怎样把输入的汉字图像识别出来,就是汉字识别技术。

从学科上来说,汉字识别属于模式识别与图像处理的范畴,还涉及到人工智能、形式语言与自动机、统计决策理论、模糊数学、信息论、语言文字学、计算机科学等学科,是一门综合性技术科学。由于汉字数量多,结构复杂,相似字很多,所以汉字识别是难度较大的文字识别。近年来,随着模式识别技术及计算机科学技术的发展,汉字识别也取的了极大的进展。汉字识别的基本过程包括汉字输入、预处理、特征提取、分类识别、识别后处理五个大步骤。

根据识别对象的不同,汉字识别分为手写体汉字识别和印刷体汉字识别两种,前者因为各人的书写习惯不同和手写汉字变化太大而显的比较困难,后者要相对容易一些。

在手写汉字识别这个范畴中,根据汉字输入方式不同又可以分为联机手写汉字识别和脱机手写汉字识别。通俗地讲,联机手写就是在书写的同时,根据笔划顺序等特征对汉字进行识别,该技术较多地应用在汉字输入设备如手机的手写板中。与联机手写汉字识别不同,脱机手写汉字识别主要是多一副汉字图像进行分类识别,多用于签名识别,笔迹鉴别等领域。

汉字识别应用在以下几个方面:

(1) 使汉字高速自动地输入计算机,以彻底解决汉字信息处理系统中手

动输入效率底这个关键

(2) 办公自动化和下一代印刷技术的文字信息自动输入。

(3) 做为新一代计算机智能接口的重要组成部分

(4) 汉字文本高倍压缩存储和传输。

下面讲述汉字识别的研究现状和发展前景。汉字识别研究始于20世纪60年代,当时大多数文字识别研究者都集中在英文印刷体文本识别,美国科学家Casey 和Nagy 率先进行印刷体汉字识别的研究工作,并于1966年发表了第一篇有关汉字识别的论文,随后在这个领域有了大量的研究,这些严重主要是在亚洲进行的,如日本、中国大陆、台湾等地。

我国在70年代末开始了汉字识别的研究工作,到现在关于这方面的研究非常活跃,有些产品已经进入市场。眼下印刷体汉字识别系统对实际文本的识别率一般达94%~98%,识别速度为5~10字每秒;联机手写汉字识别系统的识别率最高可大95%;脱机非特定手写汉字识别率最高达85%,速度为1字每秒;脱机特定手写汉字的识别率85%~93%,速度3~5字每秒;其中前两个已经达到实用化要求,台湾的研究水平与大陆相当,日本的研究水平比大陆稍高。

从总体来说,汉字识别技术的广泛应用将产生一个新的产业,而这个产业将覆盖社会生活的各个方面,从笔式电脑到办公自动化设备,从邮政信函的自动分拣到各种表格的自动录入,从证件识别到证券识别,从自动阅读机到智能视觉系统。而与汉字识别密切相关的笔迹鉴别设备将会广泛应用于银行、保安等部门。 汉字识别最直接的用途是汉字输入。针对我国汉字录入的现状,汉字识别技术能很好地满足不同层次的单位、个人需要。对有大量汉字录入任务的单位如报社、出版社、印刷厂等,一方面可以大幅度提高汉字输入的效率,建设汉字输入时间,另一方面还能缩小庞大的录入员队伍及相应的设备。

汉字识别的另一大用途是在笔式电脑中。笔式电脑没有键盘,用笔进行输入和操作。该设备的一个技术关键是联机手写字符识别技术。笔式电脑是计算机发展的一个重要趋势。目前已经有多中英文笔式电脑产品。笔式电脑的市场前景很大,据IDG 预测,到1966年,英文笔式电脑的全球销售量将达到500万台。中文笔式电脑的市场前景同样也是十分巨大的,所以汉字识别技术的研究十分重要。 邮政信函的分拣也是汉字识别技术应用前景看好的领域,目前我国使用的邮政信函分拣机是依据邮政编码的,也就是手写数字识别。但是单纯基于邮政编码识别的正确分拣率只能达到30%左右,所以手写汉字识别技术将使邮政信函的分拣更加完善。

表格信息自动录入也是汉字识别技术大有可为的方向。表格信息的自动录入需要印刷体汉字识别技术、脱机手写汉字识别技术及手写数字识别技术。同样地汉字识别技术还将应用于证件识别和证券识别、智能计算机的智能接口和视觉系统、笔迹鉴别等,由于篇幅有限,不在细述。

在本文的第一部分我们将介绍汉字识别的一般算法和原理,以便对汉字识别

实现算法形成初步认识;第二部分主要讲述现在用的比较多的两个算法以及将它们改进结合形成的新的方法,第三和第四部分将对算法模拟工具(vc )和主要程序代码做必要讲解,第五部分为对结果的分析。

1 汉字识别的原理及常用算法

1.1 汉字识别的原理

和其他模式识别一样,汉字识别的基本思想也是匹配判别。抽取代表未知汉字模式本质的表达形式(如各种特征)和预先存储在机器中的标准汉字模式表达形式的集合(称为辞典)逐一匹配,用一定的准则进行判别,并在机器存储的标准汉字模式表达形式的集合中,找出最接近输入文字的模式表达形式,该表达形式对应的字就是识别结果。

汉字识别的原理框图见图1.1。光电扫描纸面文字产生模拟电信号,经模数转换成为带灰度值的数字信号送至预处理环节。预处理的内容和要求取决于识别方法。一般包括行、字切分,二值化,细化和抽取轮廓,平滑,规范化等。预处理后,汉字模式成为规范化的二值数字点阵,其中‘1’代表笔画,‘0’代表文字的空白背景。预处理后即可对文字图像提取特征(一种类型的表达式),和存储在辞典里的已知标准汉字表达形式进行匹配判别,就可识别出输入的未知汉字。

图1.1 汉字识别原理框图

在上图中中间横线以下是系统的学习部分,学习是根据多个未知子样(一个文字的不同字样称为子样)提取出的模式表达形式,自动构成或修改、充实辞典,不断提高系统的识别率。

汉字的模式表达式和相应的辞典形式有多种,每一种形式可以选择不同的特征(或基元),每种特征又有不同的提取方法。这些造成了判别方法和准则以及所用的数学工具的不同,形成了种类繁多、形式各异的汉字识别方法。不过,所有这些方法可以归结为两类一般的处理方法——统计决策方法和句法结构方法。最近还有人提出用人工智能方法识别汉字。接下来的两节中将对上面来种常用算法分别阐述。

必须指出的是,汉字识别有联机识别和脱机识别之分。在联机的情况下,汉字结构的输入顺序可以做为重要特征来识别汉字,在第二章将详细介绍这种方法及其实现。

1.2 基于统计决策方法的汉字识别

汉字识别的统计决策方法提取字符图像的特征形成特征矢量,特征矢量并不直接表示笔迹,而是表示字符图像的特性。统计字符识别方法根据训练样本集估计特征矢量的分布,具有优异的抗干扰能力,因此在汉字识别中得到广泛应用.该方法需要一个表达样本分布的函数,多变量正态分布概率密度函数通常被认为是样本分布的近似函数.汉字的统计特征种类很多, 比如笔划密度特征, 汉字粗外围特征、汉字网格特征等。下面简单介绍汉字粗外围特征的提取。

1.2.1 汉字粗外围特征的提取

汉字轮廓结构包含了汉字特征的重要信息, 粗外围特征(即从汉字四边向中间扫描, 以第1 次碰到笔划象素所经过的行程值作为特征) 分类就是抽取汉字四周轮廓信息作为特征来进行分类的, 它被认为是印刷体汉字识别方面比较有效的粗分类方法。也可以采用一种改进的粗外围特征来进行粗分类, 其基本思路是对原图进行变换, 以使内部结构受外围信息影响, 以图1.2为例,具体实现过程为: 先从文字四边框对文字进行扫描, 然后把原文字背景部分中, 从所有方向都不能连续扫描到的区域设为笔划部分, 这样就得到所谓的粗外围图. 由其实现过程可以看出, 原文字内部区域的特征也受轮廓影响, 如图1.2 (b) 所示, 其中“件”字内部一小块区域原来是背景(黑象素) , 但因为轮廓的影响, 变换后成为笔划区域(白象素). 特征的计算方法为: 首先将36×36 点阵的粗外围图划分为4×4= 16 个网格(每个网格包括9×9pixel) , 再统计其中的白象素数, 以构成16 维粗外围特征. 实际上, 虽然特征实现时仍然使用了粗外围特征, 但原始粗外围特征仅考虑汉字的轮廓信息, 而改进方法则在利用汉字内部结构信息的基础上, 又加强了粗外围轮廓信息在特征量中的比重.

图1.2 汉字图像粗外围图

1.3 基于结构特征方法的汉字识别

目前, 文字结构特征的提取有两种方法, 第一种方法是基于像素的字符轮廓获取方法, 这种方法没有考虑全局信息和结构信息, 因而结果中存在诸如毛边和交叉点变形等问题. 为此, 研究人员提出了其它一些特征提取方法 ,但这使得基于像素的字符识别更加复杂而不稳定。第二种方法是用一组线段及它们相互间的关系来描述文字并进行识别, 但是这些方法步骤繁多、计算复杂, 难以实现, 而且易受边界噪声和交叉点的影响。

无约束手写汉字数量庞大、结构复杂、形近字多而且无规则变形严重, 所以各种不同字体手写汉字的识别是字符识别领域中一个极为困难的问题, 被认为是该领域最具挑战性的研究课题和最高目标之一 . 在已有的方法中, 有些只能识别相对简单的手写数字, 有些虽然可以识别少量的手写汉字 ,但它们都无法从根本上克服误识别率高这一不足。贝叶斯分类器等传统的模式识别方法因先验知识不足而无法取得理想的效果, 语法推理法和继电器法等新的识别方法因编码过程复杂、计算量大或可识别的文字数量有限等原因而难以实现 。神经网络具有很强的知识获取能力和分类能力, 有很高的容错性和鲁棒性, 可以在特征空间内形成任意复杂的决策区域, 它所具有的自组织、自学习功能大大放宽了传统模式识别方法所受的约束条件, 为汉字识别提供了新的有力工具 。

1.3.1 文字输入预处理及特征提取

因为手写汉字大小不一, 所以在提取结构特征和进行识别时首先需要对其进行归一化处理。目前, 大小归一化有两种方法, 一是在水平和垂直方向都进行归一化; 二是仅在一个方向归一化, 同时保持输入汉字的形状比例。 前者在减小不同人的手写汉字差异方面较为有效, 但可能使汉字在某一方向上发生失真。 这里根据手写汉字特征提取和识别的需要, 对不同的输入手写汉字采用不同的归一化策略. 设原始手写汉字为Y 行*X 列, 归一化后为height ⨯width 列, 则: (1) 如果X ≤width 且Y ≤height , 文字只做平移操作; (2) 如果X >width 且Y height ,则将文字高度归一化为height , 宽度按比例归一化; (4) 如果X >width 且Y >height , 则将文字归一化为height 行×width 列。

现在来讨论归一化手写汉字的结构特征提取问题。该方法选择的结构特征包括:特征点、线段、基本笔画以及笔画方向图等。基本笔画定义为长度有限的直线, 而笔画方向图描述了字符几何结构特征, 其提取是以笔画方向为基础的。考虑了沿逆时针与水平方向夹角分别为0°,45°,90°和135°的四个方向, 并用1 ,2 ,3 ,4 以及- 1 , - 2 , - 3 , - 4 分别标记这四个方向及其反方向. 令g (x , y ) 为像素

(x , y ) 的灰度级, 对于黑色像素g (x , y ) =1 ,对于白色像素g (x , y ) =0, 字符是由黑

色像素组成的图像。 一个黑色像素的方向码是根据沿四个方向经过该像素的笔画长度而确定的。该方法定义d 向笔画为沿方向d 的一系列连续黑色像素(d = 1 ,2 ,3 ,4) ,将经过黑色像素(x , y ) 的最长d 向笔画的方向定义为该点的方向码。 具有相同方向码的相连黑色像素构成一个像块, 且称方向码为d 的像块为d 向像块。 如果某个像块与其它像块交叉或相接, 则需要将该块进而分解为笔画段和交叉段。下面来提取结构特征量。首先需要提取的是轮廓段, 它是从笔画段中提取出来的, 对于方向代码为d 的笔画段, 它可以分解成一组连续的d 向笔画, 提取轮廓段之前先确定该组两端的d 向笔画, 将它们用一条直线连接起来, 形成笔画段的轮廓. 虽然根据其方向码可将轮廓段分为四种, 但轮廓段可能是任意方向. 如果某个轮廓段的长度小于或等于一个允许长度, 就称其为短轮廓段. 如果短轮廓段的两端都不与交叉点相接, 即为一个孤立轮廓段, 则认为该短轮廓段是噪声. 如果只有一段与交叉点相接, 这样的短轮廓段称为毛边. 该算法根据这样的逻辑去除了所提取的轮廓段中的噪声和毛边现象。

接下来提取交叉点和轮廓。 假设交叉段只包括一个交叉点, 当程序发现一个交叉段后, 就首先计算交叉度和交叉点的位置, 然后延长所有与该交叉段相接的轮廓段到该交叉点处, 从而形成完整的字符轮廓。 假设Nd 代表方向代码同为d 且与同一个交叉段相接的轮廓段的个数, 令Df 为该交叉段的交叉度, 则有

Df =N 1+N 2+N 3+N 4。 为了确定交叉点的位置, 本文按照方向代码考虑了全部

四种不同的情况:

(1) Df =0, 即没有轮廓段。

(2) Df =1, 只有一个轮廓段, 确定该轮廓段方向上与白色像素相邻接的黑色像素为交叉点。

(3) Df >1且N 1, N 2, N 3, N 4至少有两个轮廓段, 而且一个方向上最多只有一个轮廓段。 选择任意两个轮廓段并沿各自的方向将其延长, 延长线的交点即为交叉点。 (4) N 1>1, N 2, N 3, N 4≥2, 至少有两个具有相同方向代码的轮廓段. 如果有一对延伸方向相反的d 向轮廓段, 则标识量Flagd 置为1 ,相反则为0. 此时确定交叉点时需要分三种情况讨论:

(a) Flag 1+Flag 2+Flag 3+Flag 4=0, 不存在延伸方向相反的一对轮廓段. 如果有两个轮廓段方向码不相同, 则将其沿各自的方向延长后必然会形成一个交叉点. 而如果所有轮廓段的方向码都相同, 则将其中一段按估计的笔画宽度的某一倍数延长后即得到所期望的交叉点。

(b) Flag 1+Flag 2+Flag 3+Flag 4=1, 只存在一对延伸方向相反的轮廓段. 用一段直线将它们连接起来, 取该直线的中点作为交叉点。

(c) Flag 1+Flag 2+Flag 3+Flag 4>1, 至少存在两个延伸方向相反的轮廓段. 任选两对轮廓段, 将每对用一条直线相连, 两条直线的交点便是所期望的交叉点。

提取出一个交叉点后, 将每个在该交叉点相接的轮廓段与该交叉点连接起来, 这样把所有轮廓段和交叉点都连接起来便构成了字符轮廓, 即瘦化字符。

在提取出交叉点和轮廓段(即点特征和线段特征) 后, 就可根据这两种信息进而提取基本笔画, 根据轮廓段信息还可以提取出笔画方向图. 该处用一种简单的轮廓段合并策略将轮廓段合并成基本笔画. 依次检查各个交叉点处所有相接的轮廓段中是否有两个轮廓段共线, 如果有就将它们合并成一个新的轮廓段, 即基本笔画. 记φ1 和φ2 分别为两个轮廓段的方向角, 令φ= min (| φ1 - φ2 | ,360°- | φ1- φ2 | ) 为两段的夹角, 若155

最后根据各轮廓段的方向代码来绘制笔画方向图. 首先将n ⨯n 字符沿水平和垂直方向分成k ⨯k 个单元, 每个单元为m ⨯m , 其中mk =n 。选择每个单元中像素数目最多的轮廓段的方向代码为该单元方向码。如果某单元没有轮廓段经过, 则其方向码置空(null ) ,所有单元的方向代码一起就构成了笔画方向图.

2 基于多特征提取的识别算法

现在对于联机手写体的汉字识别算法很多,在本章第一节,我们先对这些算法做初步的分析认识,然后在其基础上导出多特征提取的算法,而用于实现这些算法的代码将在下章给出。

2.1 手写汉字识别的现行算法分析

2.1.1 以笔划序列为特征的算法

该算法将汉字的笔画分为若干类,然后根据各类笔画的输入顺序做为一个汉字的特征并存入字库,当汉字联机输入时,得到该文字图像的笔画序列特征并和字库中的特征进行比较,若有一组特征与该图像特征的差别很小,即可认为是同一字。下面我们先介绍笔画的分类方法,然后在分别介绍图像的预处理和距离定义。

在介绍笔划的划分前,我们先把二维平面做一个划分,如下图所示:

图2.1 二维平面的划分

在上图基础上,笔划通常划分为以下几种: (1) 横,用数字1标识,方向为1; (2) 竖,用数字2标识,方向为3; (3) 撇,用数字3标识,方向为4; (4) 捺,用数字4标识,方向为2;

(5) 折,用数字5标识,有至少两个方向;

在有些算法中,又把折细分为顺时针方向折、逆时针方向折和混合方向折三种,在此不再细述。

将笔划分类以后,我们就要面临一个问题,如何从文字图像的读入过程中得到方向序列,自然地我们会想到斜率,即得到一个笔划中每一相素点的斜率,然后依照上图得到该笔划的方向,但严格来讲,用斜率表示并不明智,比如方向3和7的斜率根本不存在。得到一个相素点方向的可行方法是:用该相素后面第二个点的坐标与该相素坐标做比较,如下: 1、 2、 3、 4、 5、 6、 7、 8、

若point[a+2].y=point[a].y且point[a+2].x>point[a].x,方向1。 若point[a+2].y=point[a].y且point[a+2].xpoint[a].y,方向3。 若point[a+2].x=point[a].x且point[a+2].ypoint[a].x且point[a+2].y>point[a].y,方向2。 若point[a+2].x>point[a].x且point[a+2].ypoint[a].y,方向4。 若point[a+2].x

为得到一笔划方向,在得到该笔划内各相素的方向后,我们还要做一些去噪处理。比如为消除下笔和收笔时的抖动误差而去除两边若干相素点、为消除书写时的歪曲而除去若干奇异点等。得到笔划方向序列后,就必须为以后的匹配定义距离,即定义何谓相似的标准。通常做以下定义:

1m

距离d=∑(1-a i ) 2.2

m i =0

其中m 为输入文字图像的笔划数,a i 为输入文字图像第i 笔test[i]的笔划与字库中某组待比较特征的第i 笔的相似度,经过大量的调查分析,a i 一般取值如下表:

表2.3 笔划的相似度表

该算法的一般步骤如下:

(1) 从输入端得到输入点序列。

(2) 由输入点序列去噪、计算得到方向码序列。 (3) 将方向码序列去噪处理得到笔画码序列。

(4) 根据笔画码序列参照表2.3得到距离d ,匹配判别识别汉字。

根据此定义得到距离后与事先设定的阙值dis 进行比较,若d

相同,即对手写汉字图像做了识别。这种识别算法原理简单且易于实现,但也有其不足之处,例如:汉字“六”和“文”的笔划序列都是“4134”,所以无法正确识别。

2.1.2 基于统计特征的汉字识别算法

统计特征即汉字图像的相素分布特征[5],为简化起见,一般把汉字图像转换成二值图像再做处理,通常把一副汉字图像分成4*4=16或3*3=9个区,统计每个区的黑色相素点数,然后与字库里已有特征做比较,将距离最小的做为匹配字符。这种算法中的距离也有多种定义,通常采用两种方法,方差距离和绝对值距离,下面以绝对值距离为例,讲述一下该方法的具体应用。

下图是一个汉字图像并对其做了4*4划分,其中各区的特征值如图所示:

图2.4 汉字图像的统计特征图

现在把其特征表示为一个数组即test.p[16],若字库中第i 组特征为tez[i].p[16],则待识别汉字图像与字库里第i 个字的距离为:

d =∑|test . p [j ]-tez [i ].p [j ]| 2.5

j =016

为了便于识别,需要定义阙值dis, 若d

至此该算法的步骤可以归纳如下:

(1) 对输入图形进行4*4分区,统计每区黑色相素点数。

(2) 将每区黑色相素点数除以图像总黑相素点数,的到p[i],i=1,2„„9。 (3) 由2.5式得到距离d ,然后匹配判别。

该方法形象直观,也很容易实现,但其弊端很多,表现在以下几个方面, (1) 这种方法只局限于一种字体且多用于印刷体汉字的识别,手写体汉字

由于字形变化、歪曲教大,只使用该方法收效甚微。

(2) 由于汉字图像大小不一,在读如图像后需要对其做规范化预处理。 (3) 在汉字中存在很多字形十分相似的字,如“冢”和“家”,“狼”和“狠”

等,基于统计的识别算法对这些字不能区分。

(4) 由于直接对图像进行分析,所以该方法主要用于脱机汉字识别。

2.2 现行算法的结合和改进

上节我们分别讲述了基因笔划特征和基于基于统计特征的的汉字识别算法,也讲了两种方法的优缺点,下面我面介绍怎么将两种算法结合并改进以进行联机手写汉字识别。

汉字是一种结构文字,即它的输入有一定的顺序,每一笔也有一定的结构,所以在进行联机手写汉字识别时,笔划信息一定要充分利用起来,同时我们知道,单纯的笔划特征不足以区分所有汉字,现在我们考虑将输入汉字图像分别从笔划和相素角度做两次分类识别,以下分别称为粗分类和细分类。

在粗分类阶段,我们根据2.1.1小节中的算法先把汉字定位于小范围内,即根据笔划数和笔划顺序从字库选出几个可能的汉字,至于怎样从这几个汉字中找出正确的对应字符就由细分类部分完成。

在细分类阶段,可以根据2.1.2小节中的算法对粗分类后的若干汉字进行识别,由于范围已经很小,所以该步骤不需要划分太细,通常情况下做3*3分区即可取得理想结果。注意,正如2.1.2小节中所说,用该方法要对汉字图像做规范化处理,我们可以稍做改进,把每区的黑色相素点数改为次数与汉字总相素点数的比值,这样就可以排除汉字大小不一的干扰。

在以上两个阶段,阙值的选取都十分重要,阙值太大则无法选出具体的汉字,阙值太小又可能由于书写不规范而无法识别,具体值可以根据多次实践、观察结果分析得出,同样处理的还有2.1.1小节的笔划相似度表,若结果不理想可以适当修改该表。

至此我们已经很详细的讲述了要采取联机手写汉字的识别算法,但不管什么算法都需要一种计算机语言去实现(通常使用高级语言),在下章,我们将给出各步骤实现的vc 代码,以便分析结果。 附注:

在下图中给出了基于多特征提取的联机手写汉字识别算法的流程图,借助此图可以更清晰地理解该算法。

图2.6 汉字识别算法流程图

3 识别算法对应的vc 代码

在本章中,我们将介绍文字预处理、识别、识别后处理的代码,语句一般大都简单,有难度的语句后面都有文章注释,所以在文中不在详细讲解,每一程序都在vc 平台中调试过并成功运行,如不能允许请检查代码是否抄错。因为篇幅原因,用户界面、鼠标手写笔模拟等程序代码不再给出,有需要可自行查阅参考数目。首先介绍一下程序实现所需的数据结构: int num,Time;

int xmax,ymax,xmin,ymin;//随时记录最大x,y 坐标 int mouseDown;//鼠标按下标记 int fxm[15][300];//方向码 int zong;//字库中的字符总数 struct {

int x; int y;

}store[15][300];//一笔划点序列

//备份的序列 struct {

int x; int y;

}storeback[15][300];

struct {

char zifu[2];//代表字符 int total;//总的笔划数

int bh[15];//每个笔划的点数 double p[9];//每区相素比重 }tez[4000];

struct {

char zifu[2];

int total;//笔画数

int bh[15];//笔画码序列 double p[9];//每区相素比重 }test;//意义同上,为测试点的结构

struct fangxtz {

int b[8];//每方向点数 int total;//共有方向数 int totaldian;//共有点数 }fxtz[15];

3.1 输入预处理

//数据去噪、处理函数,得到笔划码序列 void CRecogDlg::DealDat() { int i,j,k; for(i=0;istore[i][j].x) fxm[i][j]=1; else if(store[i][j+2].xstore[i][j].y) fxm[i][j]=3; else if(store[i][j+2].ystore[i][j].y) { if(store[i][j+2].x>store[i][j].x) fxm[i][j]=2; else if(store[i][j+2].xstore[i][j].x) fxm[i][j]=8; else if(store[i][j+2].x

for(i=0;i1) test.bh[i]=5; } }

//将图像3*3分区,得到各区特征(具体见2.3节) void CRecogDlg::obtp() {

摘 要

该文提出了一种基于多特征提取的手写汉字识别算法及其实现。该算法同时运用了基于统计特征和基于结构特征的汉字识别算法并对它们做了相应改进。

算法在匹配判别阶段采用了分类判别思想,在汉字图像输入的同时,记录汉字图像的输入结构特点,在此基础上得到输入的未知汉字的笔划特征,由笔划特征即可对未知汉字做粗分类,这样可以缩小判别时的汉字范围。经过汉字粗分类后,提取整个汉字图像的统计特征,该步骤采用了网格划分方法,即先对图像做划分,再计算每一网格内文字相素与整个图像中文字相素的比值,通过这些特征对文字图像做细分类即可得到识别结果.

基于多特征提取的识别算法对汉字的识别十分有效,能使识别率达到90%以上,该文同时也给出了对书写不规范的字的解决方案。

关键词:文字识别,特征提取,模式匹配, 模式识别

ABSTRACT

The article proposes an algorithm for hand-written Chinese character recognition and its realization . The algorithm is based on the multi-characteristics, it unifies and improves the algorithm based on the statistic characteristic and the algorithm based on the structure characteristics.

The algorithm adopts the classified distinction through the match distinction stage. It takes down the character image’s input unique feature when the image input. With the input unique feature, it can obtains the pen delimits characteristics of the unknown character image. The first classification can be managed based on these steps, thus the range of the second classification will smaller. After the first classification, it must withdraws the statistic characteristics of the image. The algorithm adopts the grid division method in this step. It makes a division to the image and then compute the element ratio of every areas. As a result, the character image can be recognized by the steps above.

The recognition algorithm based on multi-characteristics is extremely effective to the Chinese character recognition.The recognition rate can achieves above 90% .This article also provide methods for the characters written standardless.

Key words: Writing recognition, Characteristic withdraws , Pattern matching, Pattern recognition

目 录

中文摘要 . .................................................................................................. Ⅰ ABSTRACT .............................................................................................. Ⅱ 目录 ........................................................................................................... III 图片索引目录 . .......................................................................................... Ⅳ 绪论 ............................................................................................................ 1 1 汉字识别原理及常用算法 . ................................................................... 4

1.1 汉字识别的原理 . ..................................................................................... 4

1.2 基于统计决策方法的汉字识别 . ................................................................... 5

1.3基于结构特征方法的汉字识别 .................................................................... 6 2 基于多特征提取的识别算法 . ............................................................... 9

2.1手写汉字识别的现行算法分析 .................................................................... 9

2.1.1以笔划序列为特征的识别算法 .............................................................. 9

2.1.2基于统计特征的汉字识别算法.............................................................. 11 2.2现行算法的结合和改进.............................................................................. 12 3 识别算法对应的VC 代码 . .................................................................... 14

3.1输入预处理 . ........................................................................................... 15

3.2识别算法 . .............................................................................................. 18 4 算法实现结果和分析 . .......................................................................... 20

4.1 模拟结果介绍 . ....................................................................................... 20

4.2 结果分析 . ............................................................................................. 21 5 总结与展望 . .......................................................................................... 24

5.1 论文总结 . ............................................................................................. 24

5.2 算法的前景展望 . .................................................................................... 24 参考文献 . .................................................................................................. 25

附:图片索引目录

图1.1 汉字识别原理框图 .................................................................................. 4 图 1.2 汉字图像的粗外围图 .............................................................................. 5 图 2.1 二维平面的划分图 ................................................................................. 9 图 2.4 汉字图像的统计特征图 .......................................................................... 11 图 2.6 汉字识别算法流程图 ............................................................................. 13 图 4.1 程序运行界面 ...................................................................................... 20 图 4.2 汉字的写入 ......................................................................................... 20 图 4.3 系统识别写入的汉字图像 ....................................................................... 21 图 4.4 通过“学习”过程向字库中添加汉字特征 .................................................. 21 图 4.5 能够识别的汉字图像示例 ....................................................................... 22 图 4.6 不能识别的汉字图像示例 ....................................................................... 22

绪 论

世界上的文字有两大类,一种是拼音类文字(如英文),另一种是象形类或图形类文字(如汉字)。在人机交互中,拼音文字显示出了极大的优越性,利用键盘可以把一个个字母很自然很方便的输入计算机,而对与图形类文字,一直没有适当的输入设备。从80年代开始,微机大量地进入我国,许多用于中文信息处理,但输入设备仍然只是键盘,为了将汉字输入计算机,涌现出了各种各样的汉字编码方案,所谓编码方案就是通过人为的规则,把汉字转换成字符或数字以方便利用键盘输入。利用编码方案进行汉字输入需要记忆,这给计算机在生活领域的普及带来了很大的不便,利用西文键盘输入汉字的限制成了计算机普及应用的瓶颈和桎酷。随着科学技术的发展,人们意识到要用图形输入设备输入汉字,输入后由计算机自动识别并转化成内码,至于计算机怎样把输入的汉字图像识别出来,就是汉字识别技术。

从学科上来说,汉字识别属于模式识别与图像处理的范畴,还涉及到人工智能、形式语言与自动机、统计决策理论、模糊数学、信息论、语言文字学、计算机科学等学科,是一门综合性技术科学。由于汉字数量多,结构复杂,相似字很多,所以汉字识别是难度较大的文字识别。近年来,随着模式识别技术及计算机科学技术的发展,汉字识别也取的了极大的进展。汉字识别的基本过程包括汉字输入、预处理、特征提取、分类识别、识别后处理五个大步骤。

根据识别对象的不同,汉字识别分为手写体汉字识别和印刷体汉字识别两种,前者因为各人的书写习惯不同和手写汉字变化太大而显的比较困难,后者要相对容易一些。

在手写汉字识别这个范畴中,根据汉字输入方式不同又可以分为联机手写汉字识别和脱机手写汉字识别。通俗地讲,联机手写就是在书写的同时,根据笔划顺序等特征对汉字进行识别,该技术较多地应用在汉字输入设备如手机的手写板中。与联机手写汉字识别不同,脱机手写汉字识别主要是多一副汉字图像进行分类识别,多用于签名识别,笔迹鉴别等领域。

汉字识别应用在以下几个方面:

(1) 使汉字高速自动地输入计算机,以彻底解决汉字信息处理系统中手

动输入效率底这个关键

(2) 办公自动化和下一代印刷技术的文字信息自动输入。

(3) 做为新一代计算机智能接口的重要组成部分

(4) 汉字文本高倍压缩存储和传输。

下面讲述汉字识别的研究现状和发展前景。汉字识别研究始于20世纪60年代,当时大多数文字识别研究者都集中在英文印刷体文本识别,美国科学家Casey 和Nagy 率先进行印刷体汉字识别的研究工作,并于1966年发表了第一篇有关汉字识别的论文,随后在这个领域有了大量的研究,这些严重主要是在亚洲进行的,如日本、中国大陆、台湾等地。

我国在70年代末开始了汉字识别的研究工作,到现在关于这方面的研究非常活跃,有些产品已经进入市场。眼下印刷体汉字识别系统对实际文本的识别率一般达94%~98%,识别速度为5~10字每秒;联机手写汉字识别系统的识别率最高可大95%;脱机非特定手写汉字识别率最高达85%,速度为1字每秒;脱机特定手写汉字的识别率85%~93%,速度3~5字每秒;其中前两个已经达到实用化要求,台湾的研究水平与大陆相当,日本的研究水平比大陆稍高。

从总体来说,汉字识别技术的广泛应用将产生一个新的产业,而这个产业将覆盖社会生活的各个方面,从笔式电脑到办公自动化设备,从邮政信函的自动分拣到各种表格的自动录入,从证件识别到证券识别,从自动阅读机到智能视觉系统。而与汉字识别密切相关的笔迹鉴别设备将会广泛应用于银行、保安等部门。 汉字识别最直接的用途是汉字输入。针对我国汉字录入的现状,汉字识别技术能很好地满足不同层次的单位、个人需要。对有大量汉字录入任务的单位如报社、出版社、印刷厂等,一方面可以大幅度提高汉字输入的效率,建设汉字输入时间,另一方面还能缩小庞大的录入员队伍及相应的设备。

汉字识别的另一大用途是在笔式电脑中。笔式电脑没有键盘,用笔进行输入和操作。该设备的一个技术关键是联机手写字符识别技术。笔式电脑是计算机发展的一个重要趋势。目前已经有多中英文笔式电脑产品。笔式电脑的市场前景很大,据IDG 预测,到1966年,英文笔式电脑的全球销售量将达到500万台。中文笔式电脑的市场前景同样也是十分巨大的,所以汉字识别技术的研究十分重要。 邮政信函的分拣也是汉字识别技术应用前景看好的领域,目前我国使用的邮政信函分拣机是依据邮政编码的,也就是手写数字识别。但是单纯基于邮政编码识别的正确分拣率只能达到30%左右,所以手写汉字识别技术将使邮政信函的分拣更加完善。

表格信息自动录入也是汉字识别技术大有可为的方向。表格信息的自动录入需要印刷体汉字识别技术、脱机手写汉字识别技术及手写数字识别技术。同样地汉字识别技术还将应用于证件识别和证券识别、智能计算机的智能接口和视觉系统、笔迹鉴别等,由于篇幅有限,不在细述。

在本文的第一部分我们将介绍汉字识别的一般算法和原理,以便对汉字识别

实现算法形成初步认识;第二部分主要讲述现在用的比较多的两个算法以及将它们改进结合形成的新的方法,第三和第四部分将对算法模拟工具(vc )和主要程序代码做必要讲解,第五部分为对结果的分析。

1 汉字识别的原理及常用算法

1.1 汉字识别的原理

和其他模式识别一样,汉字识别的基本思想也是匹配判别。抽取代表未知汉字模式本质的表达形式(如各种特征)和预先存储在机器中的标准汉字模式表达形式的集合(称为辞典)逐一匹配,用一定的准则进行判别,并在机器存储的标准汉字模式表达形式的集合中,找出最接近输入文字的模式表达形式,该表达形式对应的字就是识别结果。

汉字识别的原理框图见图1.1。光电扫描纸面文字产生模拟电信号,经模数转换成为带灰度值的数字信号送至预处理环节。预处理的内容和要求取决于识别方法。一般包括行、字切分,二值化,细化和抽取轮廓,平滑,规范化等。预处理后,汉字模式成为规范化的二值数字点阵,其中‘1’代表笔画,‘0’代表文字的空白背景。预处理后即可对文字图像提取特征(一种类型的表达式),和存储在辞典里的已知标准汉字表达形式进行匹配判别,就可识别出输入的未知汉字。

图1.1 汉字识别原理框图

在上图中中间横线以下是系统的学习部分,学习是根据多个未知子样(一个文字的不同字样称为子样)提取出的模式表达形式,自动构成或修改、充实辞典,不断提高系统的识别率。

汉字的模式表达式和相应的辞典形式有多种,每一种形式可以选择不同的特征(或基元),每种特征又有不同的提取方法。这些造成了判别方法和准则以及所用的数学工具的不同,形成了种类繁多、形式各异的汉字识别方法。不过,所有这些方法可以归结为两类一般的处理方法——统计决策方法和句法结构方法。最近还有人提出用人工智能方法识别汉字。接下来的两节中将对上面来种常用算法分别阐述。

必须指出的是,汉字识别有联机识别和脱机识别之分。在联机的情况下,汉字结构的输入顺序可以做为重要特征来识别汉字,在第二章将详细介绍这种方法及其实现。

1.2 基于统计决策方法的汉字识别

汉字识别的统计决策方法提取字符图像的特征形成特征矢量,特征矢量并不直接表示笔迹,而是表示字符图像的特性。统计字符识别方法根据训练样本集估计特征矢量的分布,具有优异的抗干扰能力,因此在汉字识别中得到广泛应用.该方法需要一个表达样本分布的函数,多变量正态分布概率密度函数通常被认为是样本分布的近似函数.汉字的统计特征种类很多, 比如笔划密度特征, 汉字粗外围特征、汉字网格特征等。下面简单介绍汉字粗外围特征的提取。

1.2.1 汉字粗外围特征的提取

汉字轮廓结构包含了汉字特征的重要信息, 粗外围特征(即从汉字四边向中间扫描, 以第1 次碰到笔划象素所经过的行程值作为特征) 分类就是抽取汉字四周轮廓信息作为特征来进行分类的, 它被认为是印刷体汉字识别方面比较有效的粗分类方法。也可以采用一种改进的粗外围特征来进行粗分类, 其基本思路是对原图进行变换, 以使内部结构受外围信息影响, 以图1.2为例,具体实现过程为: 先从文字四边框对文字进行扫描, 然后把原文字背景部分中, 从所有方向都不能连续扫描到的区域设为笔划部分, 这样就得到所谓的粗外围图. 由其实现过程可以看出, 原文字内部区域的特征也受轮廓影响, 如图1.2 (b) 所示, 其中“件”字内部一小块区域原来是背景(黑象素) , 但因为轮廓的影响, 变换后成为笔划区域(白象素). 特征的计算方法为: 首先将36×36 点阵的粗外围图划分为4×4= 16 个网格(每个网格包括9×9pixel) , 再统计其中的白象素数, 以构成16 维粗外围特征. 实际上, 虽然特征实现时仍然使用了粗外围特征, 但原始粗外围特征仅考虑汉字的轮廓信息, 而改进方法则在利用汉字内部结构信息的基础上, 又加强了粗外围轮廓信息在特征量中的比重.

图1.2 汉字图像粗外围图

1.3 基于结构特征方法的汉字识别

目前, 文字结构特征的提取有两种方法, 第一种方法是基于像素的字符轮廓获取方法, 这种方法没有考虑全局信息和结构信息, 因而结果中存在诸如毛边和交叉点变形等问题. 为此, 研究人员提出了其它一些特征提取方法 ,但这使得基于像素的字符识别更加复杂而不稳定。第二种方法是用一组线段及它们相互间的关系来描述文字并进行识别, 但是这些方法步骤繁多、计算复杂, 难以实现, 而且易受边界噪声和交叉点的影响。

无约束手写汉字数量庞大、结构复杂、形近字多而且无规则变形严重, 所以各种不同字体手写汉字的识别是字符识别领域中一个极为困难的问题, 被认为是该领域最具挑战性的研究课题和最高目标之一 . 在已有的方法中, 有些只能识别相对简单的手写数字, 有些虽然可以识别少量的手写汉字 ,但它们都无法从根本上克服误识别率高这一不足。贝叶斯分类器等传统的模式识别方法因先验知识不足而无法取得理想的效果, 语法推理法和继电器法等新的识别方法因编码过程复杂、计算量大或可识别的文字数量有限等原因而难以实现 。神经网络具有很强的知识获取能力和分类能力, 有很高的容错性和鲁棒性, 可以在特征空间内形成任意复杂的决策区域, 它所具有的自组织、自学习功能大大放宽了传统模式识别方法所受的约束条件, 为汉字识别提供了新的有力工具 。

1.3.1 文字输入预处理及特征提取

因为手写汉字大小不一, 所以在提取结构特征和进行识别时首先需要对其进行归一化处理。目前, 大小归一化有两种方法, 一是在水平和垂直方向都进行归一化; 二是仅在一个方向归一化, 同时保持输入汉字的形状比例。 前者在减小不同人的手写汉字差异方面较为有效, 但可能使汉字在某一方向上发生失真。 这里根据手写汉字特征提取和识别的需要, 对不同的输入手写汉字采用不同的归一化策略. 设原始手写汉字为Y 行*X 列, 归一化后为height ⨯width 列, 则: (1) 如果X ≤width 且Y ≤height , 文字只做平移操作; (2) 如果X >width 且Y height ,则将文字高度归一化为height , 宽度按比例归一化; (4) 如果X >width 且Y >height , 则将文字归一化为height 行×width 列。

现在来讨论归一化手写汉字的结构特征提取问题。该方法选择的结构特征包括:特征点、线段、基本笔画以及笔画方向图等。基本笔画定义为长度有限的直线, 而笔画方向图描述了字符几何结构特征, 其提取是以笔画方向为基础的。考虑了沿逆时针与水平方向夹角分别为0°,45°,90°和135°的四个方向, 并用1 ,2 ,3 ,4 以及- 1 , - 2 , - 3 , - 4 分别标记这四个方向及其反方向. 令g (x , y ) 为像素

(x , y ) 的灰度级, 对于黑色像素g (x , y ) =1 ,对于白色像素g (x , y ) =0, 字符是由黑

色像素组成的图像。 一个黑色像素的方向码是根据沿四个方向经过该像素的笔画长度而确定的。该方法定义d 向笔画为沿方向d 的一系列连续黑色像素(d = 1 ,2 ,3 ,4) ,将经过黑色像素(x , y ) 的最长d 向笔画的方向定义为该点的方向码。 具有相同方向码的相连黑色像素构成一个像块, 且称方向码为d 的像块为d 向像块。 如果某个像块与其它像块交叉或相接, 则需要将该块进而分解为笔画段和交叉段。下面来提取结构特征量。首先需要提取的是轮廓段, 它是从笔画段中提取出来的, 对于方向代码为d 的笔画段, 它可以分解成一组连续的d 向笔画, 提取轮廓段之前先确定该组两端的d 向笔画, 将它们用一条直线连接起来, 形成笔画段的轮廓. 虽然根据其方向码可将轮廓段分为四种, 但轮廓段可能是任意方向. 如果某个轮廓段的长度小于或等于一个允许长度, 就称其为短轮廓段. 如果短轮廓段的两端都不与交叉点相接, 即为一个孤立轮廓段, 则认为该短轮廓段是噪声. 如果只有一段与交叉点相接, 这样的短轮廓段称为毛边. 该算法根据这样的逻辑去除了所提取的轮廓段中的噪声和毛边现象。

接下来提取交叉点和轮廓。 假设交叉段只包括一个交叉点, 当程序发现一个交叉段后, 就首先计算交叉度和交叉点的位置, 然后延长所有与该交叉段相接的轮廓段到该交叉点处, 从而形成完整的字符轮廓。 假设Nd 代表方向代码同为d 且与同一个交叉段相接的轮廓段的个数, 令Df 为该交叉段的交叉度, 则有

Df =N 1+N 2+N 3+N 4。 为了确定交叉点的位置, 本文按照方向代码考虑了全部

四种不同的情况:

(1) Df =0, 即没有轮廓段。

(2) Df =1, 只有一个轮廓段, 确定该轮廓段方向上与白色像素相邻接的黑色像素为交叉点。

(3) Df >1且N 1, N 2, N 3, N 4至少有两个轮廓段, 而且一个方向上最多只有一个轮廓段。 选择任意两个轮廓段并沿各自的方向将其延长, 延长线的交点即为交叉点。 (4) N 1>1, N 2, N 3, N 4≥2, 至少有两个具有相同方向代码的轮廓段. 如果有一对延伸方向相反的d 向轮廓段, 则标识量Flagd 置为1 ,相反则为0. 此时确定交叉点时需要分三种情况讨论:

(a) Flag 1+Flag 2+Flag 3+Flag 4=0, 不存在延伸方向相反的一对轮廓段. 如果有两个轮廓段方向码不相同, 则将其沿各自的方向延长后必然会形成一个交叉点. 而如果所有轮廓段的方向码都相同, 则将其中一段按估计的笔画宽度的某一倍数延长后即得到所期望的交叉点。

(b) Flag 1+Flag 2+Flag 3+Flag 4=1, 只存在一对延伸方向相反的轮廓段. 用一段直线将它们连接起来, 取该直线的中点作为交叉点。

(c) Flag 1+Flag 2+Flag 3+Flag 4>1, 至少存在两个延伸方向相反的轮廓段. 任选两对轮廓段, 将每对用一条直线相连, 两条直线的交点便是所期望的交叉点。

提取出一个交叉点后, 将每个在该交叉点相接的轮廓段与该交叉点连接起来, 这样把所有轮廓段和交叉点都连接起来便构成了字符轮廓, 即瘦化字符。

在提取出交叉点和轮廓段(即点特征和线段特征) 后, 就可根据这两种信息进而提取基本笔画, 根据轮廓段信息还可以提取出笔画方向图. 该处用一种简单的轮廓段合并策略将轮廓段合并成基本笔画. 依次检查各个交叉点处所有相接的轮廓段中是否有两个轮廓段共线, 如果有就将它们合并成一个新的轮廓段, 即基本笔画. 记φ1 和φ2 分别为两个轮廓段的方向角, 令φ= min (| φ1 - φ2 | ,360°- | φ1- φ2 | ) 为两段的夹角, 若155

最后根据各轮廓段的方向代码来绘制笔画方向图. 首先将n ⨯n 字符沿水平和垂直方向分成k ⨯k 个单元, 每个单元为m ⨯m , 其中mk =n 。选择每个单元中像素数目最多的轮廓段的方向代码为该单元方向码。如果某单元没有轮廓段经过, 则其方向码置空(null ) ,所有单元的方向代码一起就构成了笔画方向图.

2 基于多特征提取的识别算法

现在对于联机手写体的汉字识别算法很多,在本章第一节,我们先对这些算法做初步的分析认识,然后在其基础上导出多特征提取的算法,而用于实现这些算法的代码将在下章给出。

2.1 手写汉字识别的现行算法分析

2.1.1 以笔划序列为特征的算法

该算法将汉字的笔画分为若干类,然后根据各类笔画的输入顺序做为一个汉字的特征并存入字库,当汉字联机输入时,得到该文字图像的笔画序列特征并和字库中的特征进行比较,若有一组特征与该图像特征的差别很小,即可认为是同一字。下面我们先介绍笔画的分类方法,然后在分别介绍图像的预处理和距离定义。

在介绍笔划的划分前,我们先把二维平面做一个划分,如下图所示:

图2.1 二维平面的划分

在上图基础上,笔划通常划分为以下几种: (1) 横,用数字1标识,方向为1; (2) 竖,用数字2标识,方向为3; (3) 撇,用数字3标识,方向为4; (4) 捺,用数字4标识,方向为2;

(5) 折,用数字5标识,有至少两个方向;

在有些算法中,又把折细分为顺时针方向折、逆时针方向折和混合方向折三种,在此不再细述。

将笔划分类以后,我们就要面临一个问题,如何从文字图像的读入过程中得到方向序列,自然地我们会想到斜率,即得到一个笔划中每一相素点的斜率,然后依照上图得到该笔划的方向,但严格来讲,用斜率表示并不明智,比如方向3和7的斜率根本不存在。得到一个相素点方向的可行方法是:用该相素后面第二个点的坐标与该相素坐标做比较,如下: 1、 2、 3、 4、 5、 6、 7、 8、

若point[a+2].y=point[a].y且point[a+2].x>point[a].x,方向1。 若point[a+2].y=point[a].y且point[a+2].xpoint[a].y,方向3。 若point[a+2].x=point[a].x且point[a+2].ypoint[a].x且point[a+2].y>point[a].y,方向2。 若point[a+2].x>point[a].x且point[a+2].ypoint[a].y,方向4。 若point[a+2].x

为得到一笔划方向,在得到该笔划内各相素的方向后,我们还要做一些去噪处理。比如为消除下笔和收笔时的抖动误差而去除两边若干相素点、为消除书写时的歪曲而除去若干奇异点等。得到笔划方向序列后,就必须为以后的匹配定义距离,即定义何谓相似的标准。通常做以下定义:

1m

距离d=∑(1-a i ) 2.2

m i =0

其中m 为输入文字图像的笔划数,a i 为输入文字图像第i 笔test[i]的笔划与字库中某组待比较特征的第i 笔的相似度,经过大量的调查分析,a i 一般取值如下表:

表2.3 笔划的相似度表

该算法的一般步骤如下:

(1) 从输入端得到输入点序列。

(2) 由输入点序列去噪、计算得到方向码序列。 (3) 将方向码序列去噪处理得到笔画码序列。

(4) 根据笔画码序列参照表2.3得到距离d ,匹配判别识别汉字。

根据此定义得到距离后与事先设定的阙值dis 进行比较,若d

相同,即对手写汉字图像做了识别。这种识别算法原理简单且易于实现,但也有其不足之处,例如:汉字“六”和“文”的笔划序列都是“4134”,所以无法正确识别。

2.1.2 基于统计特征的汉字识别算法

统计特征即汉字图像的相素分布特征[5],为简化起见,一般把汉字图像转换成二值图像再做处理,通常把一副汉字图像分成4*4=16或3*3=9个区,统计每个区的黑色相素点数,然后与字库里已有特征做比较,将距离最小的做为匹配字符。这种算法中的距离也有多种定义,通常采用两种方法,方差距离和绝对值距离,下面以绝对值距离为例,讲述一下该方法的具体应用。

下图是一个汉字图像并对其做了4*4划分,其中各区的特征值如图所示:

图2.4 汉字图像的统计特征图

现在把其特征表示为一个数组即test.p[16],若字库中第i 组特征为tez[i].p[16],则待识别汉字图像与字库里第i 个字的距离为:

d =∑|test . p [j ]-tez [i ].p [j ]| 2.5

j =016

为了便于识别,需要定义阙值dis, 若d

至此该算法的步骤可以归纳如下:

(1) 对输入图形进行4*4分区,统计每区黑色相素点数。

(2) 将每区黑色相素点数除以图像总黑相素点数,的到p[i],i=1,2„„9。 (3) 由2.5式得到距离d ,然后匹配判别。

该方法形象直观,也很容易实现,但其弊端很多,表现在以下几个方面, (1) 这种方法只局限于一种字体且多用于印刷体汉字的识别,手写体汉字

由于字形变化、歪曲教大,只使用该方法收效甚微。

(2) 由于汉字图像大小不一,在读如图像后需要对其做规范化预处理。 (3) 在汉字中存在很多字形十分相似的字,如“冢”和“家”,“狼”和“狠”

等,基于统计的识别算法对这些字不能区分。

(4) 由于直接对图像进行分析,所以该方法主要用于脱机汉字识别。

2.2 现行算法的结合和改进

上节我们分别讲述了基因笔划特征和基于基于统计特征的的汉字识别算法,也讲了两种方法的优缺点,下面我面介绍怎么将两种算法结合并改进以进行联机手写汉字识别。

汉字是一种结构文字,即它的输入有一定的顺序,每一笔也有一定的结构,所以在进行联机手写汉字识别时,笔划信息一定要充分利用起来,同时我们知道,单纯的笔划特征不足以区分所有汉字,现在我们考虑将输入汉字图像分别从笔划和相素角度做两次分类识别,以下分别称为粗分类和细分类。

在粗分类阶段,我们根据2.1.1小节中的算法先把汉字定位于小范围内,即根据笔划数和笔划顺序从字库选出几个可能的汉字,至于怎样从这几个汉字中找出正确的对应字符就由细分类部分完成。

在细分类阶段,可以根据2.1.2小节中的算法对粗分类后的若干汉字进行识别,由于范围已经很小,所以该步骤不需要划分太细,通常情况下做3*3分区即可取得理想结果。注意,正如2.1.2小节中所说,用该方法要对汉字图像做规范化处理,我们可以稍做改进,把每区的黑色相素点数改为次数与汉字总相素点数的比值,这样就可以排除汉字大小不一的干扰。

在以上两个阶段,阙值的选取都十分重要,阙值太大则无法选出具体的汉字,阙值太小又可能由于书写不规范而无法识别,具体值可以根据多次实践、观察结果分析得出,同样处理的还有2.1.1小节的笔划相似度表,若结果不理想可以适当修改该表。

至此我们已经很详细的讲述了要采取联机手写汉字的识别算法,但不管什么算法都需要一种计算机语言去实现(通常使用高级语言),在下章,我们将给出各步骤实现的vc 代码,以便分析结果。 附注:

在下图中给出了基于多特征提取的联机手写汉字识别算法的流程图,借助此图可以更清晰地理解该算法。

图2.6 汉字识别算法流程图

3 识别算法对应的vc 代码

在本章中,我们将介绍文字预处理、识别、识别后处理的代码,语句一般大都简单,有难度的语句后面都有文章注释,所以在文中不在详细讲解,每一程序都在vc 平台中调试过并成功运行,如不能允许请检查代码是否抄错。因为篇幅原因,用户界面、鼠标手写笔模拟等程序代码不再给出,有需要可自行查阅参考数目。首先介绍一下程序实现所需的数据结构: int num,Time;

int xmax,ymax,xmin,ymin;//随时记录最大x,y 坐标 int mouseDown;//鼠标按下标记 int fxm[15][300];//方向码 int zong;//字库中的字符总数 struct {

int x; int y;

}store[15][300];//一笔划点序列

//备份的序列 struct {

int x; int y;

}storeback[15][300];

struct {

char zifu[2];//代表字符 int total;//总的笔划数

int bh[15];//每个笔划的点数 double p[9];//每区相素比重 }tez[4000];

struct {

char zifu[2];

int total;//笔画数

int bh[15];//笔画码序列 double p[9];//每区相素比重 }test;//意义同上,为测试点的结构

struct fangxtz {

int b[8];//每方向点数 int total;//共有方向数 int totaldian;//共有点数 }fxtz[15];

3.1 输入预处理

//数据去噪、处理函数,得到笔划码序列 void CRecogDlg::DealDat() { int i,j,k; for(i=0;istore[i][j].x) fxm[i][j]=1; else if(store[i][j+2].xstore[i][j].y) fxm[i][j]=3; else if(store[i][j+2].ystore[i][j].y) { if(store[i][j+2].x>store[i][j].x) fxm[i][j]=2; else if(store[i][j+2].xstore[i][j].x) fxm[i][j]=8; else if(store[i][j+2].x

for(i=0;i1) test.bh[i]=5; } }

//将图像3*3分区,得到各区特征(具体见2.3节) void CRecogDlg::obtp() {


相关内容

  • 行业与技术调查报告
  • 一.行业调查报告 1).市场容量(近3-5年) 随着多媒体技术及Internet网络的迅速发展,图像来源不断扩大,大容量高速存储系统为图像的海量存储提供了基本保障,各行各业对图像的使用越来越多,图像信息资源的管理和检索也就显得越来越重要. 二十一世纪是一个多元化的信息社会,对图像的需求将是前所未有的 ...

  • 基于二维熵和轮廓特征的非结构化道路检测
  • 文章编号:10019081(2013)07200504 doi:10.11772/j.issn.10019081.2013.07.2005 摘 要: 针对非结构化道路场景复杂干扰因素较多.检测困难的问题,提出了一种基于轮廓特征和二维最大熵的道路检测算法.采用融合色彩特征不变量的二次 ...

  • 跟踪算法综述
  • (1) 基于特征匹配的目标跟踪 基于特征匹配的跟踪方法的基本思路是:提取运动目标的子特征,如目标的边缘.轮廓.角点等,将这些特征作为目标的描述因子,并在连续帧中匹配以实现跟踪.由于运动目标的子特征分布在整个目标区域中,当目标出现部分遮挡时,该方法仍然能够检测到未被遮挡的部分,所以该方法对有遮挡的目标 ...

  • 线性SVM算法与最小平方误差算法的比较
  • 线性SVM 算法与最小平方误差算 法的比较 (哈尔滨工程大学 动力与能源工程学院,黑龙江 哈尔滨 150001) 摘要:在机器识别模式里,在基于贝叶斯决策理论之上有多种算法.机器识别应用领 域十分广泛,例如可以区分柴油机是否工作正常.在此,我利用两种不同的算法对两批不同的柴油机的多项热力学参数进行分 ...

  • 流量内容词语相关度的网络热点话题提取
  • 第41卷第lO期 2007年10月 西安交通大学学报 JOURNAI.OFXI'ANJIAOTONGUNIVERSITY Vol41№10Oct.2007 流量内容词语相关度的网络热点话题提取 周亚东"2,孙钦东"2-,管晓宏1.23.4,李卫"2,陶敬"2 ...

  • GLCM纹理特征提取_SVM
  • 第26卷第7期2009年7月 计算机应用研究 ApplicationResearchofComputers V01.26No.7 Jul.2009 基于纹理特征提取的图像分类方法 研究及系统实现木 谢菲,陈雷霆,邱航 (电子科技大学计算机科学与工程学院,成都610054) 摘要:深入研究灰度共生矩阵 ...

  • 检索论文及国外期刊发表论文
  • 检索论文及国外期刊发表论文 序号 1 作 者 车新生 第一单位 沈阳工业大学 论文题目 Emulation and Simulation of Dynamic Weighting Signal (动态称重信号的模拟仿真) 刊物名称(含卷.期.页码) Proceedings of ICICTA,200 ...

  • 高维少样本数据的特征压缩
  • Computer Engineering and Applications 计算机工程与应用2009,45(36)165 高维少样本数据的特征压缩 2 游文杰1,,吉国力1,袁明顺2 2,YOU Wen-jie 1,JI Guo-li 1,YUAN Ming-shun 2 福建厦门3610051. ...

  • 人脸识别方法的综述与展望
  • 计算机与数字工程 第33卷24 人脸识别方法的综述与展望 艾英山 张德贤 (河南工业大学机电工程系 郑州 450052) Ξ 摘 要 综述了人脸识别理论的概念和研究现状, , 最后对人脸识别研究中的有关问题提出了我们的看法. 关键词:人脸自动识别 面部特征提取中图分类号:TP391. 41 for ...