手写汉字识别(精选7篇)
手写汉字识别 篇1
(一)引言
手写体汉字识别一直是模式识别中的一个重要研究领域,具有很高的理论和应用研究价值。近几年来,脱机手写体汉字识别已经取得了重大的发展。
在识别系统中,特征抽取与分类器的设计是整个系统中最为重要的环节。稳定特征的抽取与良好的分类器的设计是整个识别系统的核心,它们直接决定了识别系统的性能。多分类器集成或组合是模式识别中一个重要的研究方向。Mori等人在1984年就指出,各种简单的特征抽取方法的集成是手写体汉字研究的一个趋势。不过那时的集成方法只是特征级的集成,还不是方法级的集成,多分类器集成的概念是在数字识别中为提高系统的可靠性而提出的。应该指出:以综合集成理论为指导的集成策略不仅仅是多分类器集成,它更加强调人机集成的思想。
目前,用于手写汉字识别上的集成方法还不是很多,本文给出了一种并行集成方法,克服了类别大而引起的网络规模过大的缺陷。该方法通过一个有教师的两步监督学习过程来实现,在第一步监督学习中,构建并训练两个BP网络分类器;在第二步中构建并训练集成网络。
本试验针对金融票据自动识别处理应用中常用的45个字进行识别试验,结果证明,这一基于BP网络的集成方法大大提高了识别率,说明该方法是有效的。
(二)BP网络
BP网络是目前应用最广泛的一种神经网络模型,在模式识别、语音识别、智能控制、信号处理、生物工程、非线性优化等领域都有大量的应用,显示了其巨大潜力。BP网络实质就是多层感知器 (Multi-Layers Perceptron——MLP) ,由于其学习算法采用BP算法所以又被称为BP网络。BP网络本质上是静态网络,只能实现非线性静态映射,不具备动态信息处理能力,并不是一个非线性的动力学系统。在训练和学习的过程中可能出现的情况有:网络收敛速度慢,收敛到局部极小点,学习过程产生震荡等等。所以,需要对BP网络进行必要的改进。常用的改进方法有:附加动量项、学习速度的调整、改变误差函数的形式、激活函数的选择等等,也有一些基于新理论的算法改进。
(三)系统的组成
1989年Robert Hechi-Nielson证明了对于任何闭区间内的一个连续函数都可以用一个隐含层的BP网络来逼近,因而包含一个隐含层的三层BP网络就可以完成任意的n维空间到m维空间的映射,故网络设计时选择隐含层的层数为一层。在该并行集成分类器中,单分类器采用两个三层BP网络,集成也是由一个三层BP网络完成。
每个单分类器对样本空间进行某种划分,对集成系统来说,每个分类器相当于一个特征抽取器,它们的输出形成一个扩展特征向量,集成系统又以另一种方式对样本空间进行划分。我们可以对每一分类器设计不同的判别准则,然后用截然不同的准则将各分类器结合起来。这样,特征之间便具有了多样化的关系,其表达特征之间关系的能力也是任何一个单分类器所无法比拟的。
如果希望系统有较好的分类性能,必须:(1)各分类器本身必须是“专家”,即每一分类器的识别率不能太低;(2)各分类器之间要有一定的互补性。从识别结果来说,所谓互补性指的是两分类器根据各自的准则选择的侯选或类别有差异,或各类别的排列有差异,即每个分类器都能提供一些新的类别信息。局部特征和全局特征有较好的互补特性,基于这两种原始特征合成的新特征向量将具有更强的分类能力。本文中,局部特征采用结合Gabor滤波器的弹性网格提取方法,全局特征采用Zernike矩变换的提取方法。
传统的BP网络分类器要求网络的每个输出节点与类别具有一一对应的关系,但在该系统中,只要输出节点的不同排列与类别一一对应就可以了。考虑一个6维二进制向量,所有分量共有64个不同的排列。如果每个排列对应一个类别,一个具有6个输出节点的网络可以预期处理64个类别。这样,每个网络的规模都得到了大幅度减小。训练这样大小规模的网络是较为容易的,它在保证网络处理能力的同时,网络规模也不会因类别数的增加而迅速增大。
图1所示为网络的并行连接:
从一定意义上讲,整个系统就是一个具有大规模、非线性和并行分布式处理能力的广义的网络。该网络强调信息的并行处理,结构上分布集中的特点有效克服了串行集成中误差累积的缺陷,网络本身具有的容错性和抗干扰性同样保留在集成分类器中,增强了方法的纠错能力。不同的是,不能以传统的算法来训练这个网络,通过两步来训练,教师以不同的知识和途径来“教会”每个处于不同层次的网络。
(四)系统的实现
为实现全并行集成方法并建立相应的系统,在此设计了两步监督学习算法,如图2。
在第一步监督学习过程中,构造两个网络单分类器,由教师通过监督转换单元训练网络参数;在第二步监督学习过程中,构造集成网络并形成集成网络的扩展输入向量,然后由教师训练集成网络的参数。具体过程如下:
第一步:网络单分类器的构造与训练。
首先,进行网络初始化工作,包括确定网络各层节点数和阈值,给网络连接权值矩阵赋初值,初值一般随机确定。接下来,输入相应的特征向量到网络的输入层各端子,教师通过监督转换单元给定网络的期望输出,之后按照传统的反向传播算法训练网络。训练过程的结束与否可根据输出误差和迭代次数两者结合起来判断。如:如果迭代次数超过300次或输出误差小于0.0001,则网络训练结束,重复整个过程,直到这两个网络单分类器训练结束。
第二步:集成网络的构造与训练。
首先,进行集成网络的初始化工作,与网络单分类器的初始化一致。接下来,每个单分类器对集成网络训练集中的样本进行处理,并将输出合并,形成集成网络的扩展输入。然后,教师给出集成网络的期望输出,同样通过传统的反向传播算法进行训练。训练的结束判断和第一步相同。在此,期望输出直接代表模式与各类别间的相似度,教师的知识以简单和直接的方式引导网络的学习过程。在学习当中,各个网络单分类器之间的协作互补关系由集成网络得出,同时记忆到以分布式存在的各权值因子中。
经过监督转换,不仅将从相似度为标准的知识表述转换为更加适合网络学习的表述形式,而且降低了集成网络的输入端子数量。可以说,人机的结合降低了原问题的复杂度,同时没有丧失综合集成所重视的整体与系统的策略。其实,这里的网络单分类器已经不再是传统分类器,因为它的输出是一种新的模式表达式,而不是模式与类别间相似度的大小。这种表述形式具有简洁和互不相关的特点。另一方面,集成网络虽然工作在扩展特征基础上,但是从输出的意义上看,是一个传统分类器,其输出对大多数人都具有明显的意义。
(五)实验结果
本试验针对金融票据自动识别处理应用中常用的45个字进行识别试验,每个字选取100个不同的样本,其中取80个样本用于训练,20个用于测试。
实验结果如表1所示:
从表1可以看出,集成系统的识别率比单分类器一和单分类器二分别高出4.1和5.4个百分点。
(六)结论
从实验结果可以看出,本文提出的全并行集成方法的识别率明显高于只采用单分类器的识别率,在速度上也有极大的提高,而且为特征的综合集成提供了多种途径。因此本文提出的方法是有效的,同时本文也为BP网络在大类别分类识别问题中的应用提供了一条可行的途径。接下来的工作,可以把该方法继续改进,进而应用到大类别分类识别中。
参考文献
[1]S.Mori, K.Yamamoto, M.Yasuda.Research on machine recognition of handprinted characters[J].IEEE Trans.Pattern Anal.Mach.Intell, Vol.6, 1984:386-405.
[2]C.Suen, C.Nadal, R.Legault, T.Mai, and L.Lam[J].Computer recognition of unconstrained handwritten numerals.Proceedings of the IEEE, Vol.80, 1992, 6 (7) :1162-1180.
[3]戴汝为, 等.汉字识别的系统与集成[M].浙江:浙江科学技术出版社, 1998.
[4]申东日, 冯少辉, 陈义俊.BP网络改进方法概述[J].计算机应用, 2000, 27 (1) :30-32.
[5]R.Hechi-Nielson.Theory of the back propagation neural network[C].Proc.of IJCNN, 1989:593-603.
手写汉字识别 篇2
1 系统流程
首先对汉字图像进行灰度化、二值化、形态学处理、倾斜校正、字符分割和归一化、细化等图像预处理操作,再对字符进行特征提取,最后采用SVM算法构造分类器。系统识别流程如图1所示。
2 SVM原理
SVM(Support Vector Machines)是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,面对小样本问题,其能表现出良好的学习能力,并能做到与数据的维数无关[2]。
SVM方法是从线性可分情况下的最优分类超平面提出的,所谓最优分类超平面就是要求分类平面不但能将两类无错地分开,且要使分类平面两侧样本之间的间隔最大[4]。过两类样本中离最优分类超平面最近的点,且平行于最优分类超平面的分类超平面上的训练样本称为支持向量[3]。设样本集(xi,yi),xi∈Rd,yi∈{1,-1},i=1,…,n。在线性可分情况下,则可找到权向量w,使两类间隔最大,即‖w‖2最小,同时满足
其中,i=1,…,n,n表示分类样本的数目。
为求解上述优化问题,引入拉格朗日函数
式中,α为拉格朗日乘子,αi≥0。
通过拉格朗日函数L分别对w,b求偏导,并令偏导数值为0,结果代入超平面方程得到最优分类函数
汉字识别的分类对象是非线性不可分的。对于不可分问题,可通过引入非负松弛变量ξi加以解决,则约束条件变为
则求解的二次规划问题可转化为
式中,C是惩罚因子,用来调节分类的准确率与泛化能力[5]。拉格朗日乘子α的取值范围变为0≤αi≤C。对于低维空间的非线性可分问题,可通过引入核函数解决。原始数据的核函数变换为(xi·xj)→K(xi·xj),则非线性情况下,使用核函数之后对应的分类函数为
作者采用径向基核函数
3 关键技术
3.1 质心特征的提取
质心特征是字符笔划分布的体现[6]。将二值图像转化成点阵形式,黑色像素点用“1”表示,白色像素点用“0”表示。设c(i,j)表示汉字点阵,质心计算如下:水平质心
垂直质心
式中,i表示该点阵的行;j表示该点阵的行。
3.2 笔划特征的提取
汉字由横、竖、撇、捺4种基本笔划构成,笔划的构成体现了汉字的基本形态[7]。下面对4种基本笔划进行提取。
(1)横、竖笔划的提取。横笔划中所有的像素点具有同一纵坐标,而竖笔划中所有的像素点具有同一横坐标[8]。其特征明显,提取算法也基本相同。本文提出一种将细化后图像与原图像相结合的笔划提取方法,方法如下:1)对细化后图像进行自上而下、从左往右的水平扫描,若同一纵坐标上连续的黑点个数大于或等于2,则记下这些黑点的坐标;2)对原图像进行水平扫描,若这些黑点依然连续,则说明这些黑点构成一个横笔划,横笔划数量加1;3)重复第1、2步;4)当细化后图像水平扫描全部完成时,记下横笔划数。同理,对细化后图像进行自左向右而下、从上往下的竖直扫描,可得到竖笔划数;
(2)撇、捺笔划的提取。1)将细化后图像中的横、竖笔划删除,降低图像的复杂性;2)自上而下、从左往右的水平扫描细化后图像,如果第i行扫描到黑点,记下该黑点的纵坐标yi;3)跳出对第i行的扫描,依次扫描第i+1,i+2,i+3,…,20行,记下首次扫描到黑点的纵坐标y2,y3,y4,…,y21-i;4)比较y2,y3,y4,…,y21-i,若满足yj+1≤yj≤yj+1+1∪yj+2≤yj≤yj+2+2,j∈{1,2,3,…,20-i},则这些点构成一撇笔划,撇笔划数量+1,若满足yj≤yj+1≤yj+1∪yj≤yj+2≤yj+2,j∈{1,2,3,…,20-i},则这些点构成一捺笔划,捺笔划数量+1;5)删除已提取的撇、捺笔划,重复第2)~4)步;6)扫描结束后,记下撇、捺笔划数。
3.3 特征点的提取
汉字笔划特征点主要有端点、折点、歧点、交点[9]。端点是笔划的起点或终点(不与其他笔划相接);折点是指笔划方向出现显著变化的点;歧点是三叉点,要求其中两个笔端的分支方向相同;交点是四叉点,且有两对等的对顶角。自左向右、自上而下的对二值图像进行扫描,统计各笔划特征点的个数。
3.4 构造分类器
分类器是整个字符识别系统的核心,作者采用SVM来构造分类器。SVM方法解决的是二分类问题,为使其能够应用于10个汉字的分类,需构造多值分类器。将采用一对一方法构造分类器。对于10个不同的汉字,一对一方法需要构造(C210即45)个分类器,分类结束后选取得票数最多的类别作为最终的识别结果。
SVM方法的关键环节是选取参数(C,γ)[10]。本文通过网格化寻优和交叉验证的方法得到训练集500×10(10个汉字各有500个样本)的最优参数为(1.76,0.02)。500×10训练集的最优参数网格化寻优如表1所示。
4 实验与分析
实验使用的计算机平台为三星R467笔记本,2.13GHz CPU,4 GB RAM,Win7 32位操作系统,软件平台为Visual Studio 2010。实验图片来自于HCL2000脱机手写汉字库,使用开源的LIBSVM软件包作为SVM的开发工具。
作者选取训练集500×10、测试集200×10的样本进行3组实验,第一组采用多特征模板匹配法,第二组采用网格特征SVM法,第三组采用多特征SVM法。3组实验的结果如表2~表4所示。由实验结果可知,多特征模板匹配法的平均识别率为81.1%,网格特征SVM法的平均识别率为89.1%,多特征SVM法的平均识别率为95.1%,相比于传统的模板匹配法,多特征SVM法的识别率得到显著提高,从而验证了该方法的有效性。
5 结束语
文中提出的基于SVM的多特征手写体汉字识别技术,为提高汉字的识别率,提取了较为全面的字符特征,但提取更多的字符特征意味着算法更为复杂,这样将影响程序的执行效率,降低了识别速度。因此在今后的研究中,还需继续努力改进方法,进一步提高系统的识别速度,使其兼备较高的识别率和较快的识别速度,这样才能更好地替代人工录入。
参考文献
[1]姜宇,张子潮,周富强.基于Open CV的车牌识别系统研究[J].辽宁师范大学学报:自然科学版,2011,34(2):170-174.
[2]Gary Bradski,Adrian Kaehler.学习Open CV:中文版[M].于仕琪,刘瑞祯,译.北京:清华大学出版社,2009.
[3]汪芳,康慕宁,李先国.印刷体汉字识别技术[J].情报杂志,2004(2):32-33.
[4]王建平,钱自拓,王金玲,等.基于数学形态学的图像汉字笔划细化和提取[J].合肥工业大学学报:自然科学版,2005,28(11):1431-1435.
[5]陈胜勇,刘盛.基于Open CV的计算机视觉技术实现[M].北京:科学出版社,2008.
[6]刘聚宁.印刷体汉字识别系统研究与实现[D].大连:大连理工大学,2011.
[7]王晓雪.基于字型特征的脱机手写体汉字多分类识别的研究[D].合肥:合肥工业大学,2008.
[8]蔺菲.手写体汉字识别的研究[D].合肥:合肥工业大学,2006.
[9]高彦宇,杨扬.脱机手写体汉字识别研究综述[J].计算机工程与应用,2004(7):74-77.
调查显示国人汉字手写能力变差 篇3
据光明日报报道, 伴随着信息技术的发展, 键盘输入替代书写, 网络用语渐成风尚———在告别“铅与火”的同时, 我们逐渐失去很多与汉字“亲密接触”的机会, 很多人变成了“键盘手”, 患上了“失写症”, “汉字危机”成为一个令人忧心的文化现象。零点指标数据针对京、沪、穗等12个城市进行了“中国人书法”系列调查, 结果显示:有94.1%的受访者都曾提笔忘字, 其中26.8%的人经常出现该情况;除此之外, 很多人经常写错别字或者写字越来越难看, 甚至惧怕手写。《通用规范汉字表》研制组组长、北京师范大学教授王宁认为, 把提笔忘字归咎于电脑技术, 在逻辑上行不通。“人们应当检讨精神追求的失落、文化素养的降低, 以及对母语和汉字缺乏敬畏之心, 没有爱惜之情———这是在基础教育阶段没有培养成写字的爱好和习惯, 而不能怪罪于人类用智慧发明出来的电脑。”她表示:“我们可以探讨汉字手写机会少了, 很多人特别是青少年写字水平下降这个问题如何解决, 不过, 没有必要把这种现象夸大为‘汉字危机’。”中国工程院院士、微电子技术专家许居衍认为, 形码输入法对汉字的传承具有重要作用。他表示, “汉字走拼音化的道路”已经在年轻一代中形成了思维定式, 人们越来越多地使用拼音输入法, 不仅写字的机会减少了, 连汉字的构造都记不住。“‘形码’是依形编码, 输入时就相当于直接输入汉字, 会写就会输入, 会输入就会写。通过这种方式, 人们就不会忘掉汉字的笔画和结构, 这才是传承汉字文化的上上之策。”
手写汉字的特性与生命力 篇4
手写汉字是人们学习语文的一项重要内容, 它在一切文化知识的学习中具有不可或缺的“工具性”作用, 并且, 对它的学习与传承具有重要的“育人功能”。
写字是一项重要的语文基本功, 也是一项重要的能力。对一个正常人来讲, 无论是学习还是工作, 谁都离不开这项最起码、最基本的能力。也可以说手写汉字对于人们从事各项学习活动几乎都具有不可或缺的工具性作用, 特别是文化知识的学习更不能离开手写汉字。人们从启蒙学习开始, 伴随着识字就开始了写字基本功的训练。无论是传统的语文教学, 还是现代的语文教学, 也不管采取的方法是“先识后写”、还是“多认少写”, 识字与写字总是相辅相成, 密不可分的学习活动。只不过由于人的天赋和爱好不同, 随着个人的发展, 在学习写字的追求上, 和所形成的写字能力上会有很大的差异。有的可能写得差一些, 有的写得可能好一些, 有的还可能成为书法家。有的练习写字只是为了适应学习、工作的需要;有的练习写字是力求把字写得更美观一些;有的则是为了追求书法艺术的境界成为书法家而练习。无论哪一种目标的追求, 在学习写字的漫长过程中, 这一学习活动对人的影响、陶冶和锻炼所起的作用都是非常大的。在评论“写字教学的意义”时曾经有一位网民这样说:“写字是集德、智、体、美、劳诸方面教育功能于一体的特殊学科。写字教学的意义可以用一句话来概括。即:‘以字有德, 以字启智, 以字益美, 以字健体’。”意思是说让学生通过学习写字来培养高尚品德, 通过学习写字来开启聪明才智, 通过学习写字提高审美能力, 通过学习写字来锻炼体魄。早在2 0 0 2年《教育内参》第2 4期就报道过山东省阳谷县以书法教育为切入点全面推进素质教育的经验。报道说, 汉字书法是中国传统文化的瑰宝, 学习书法既能陶冶人的情操, 又能提高人的文化素养, 一直为历代教育家所重视。他们把“写漂漂亮亮的中国字, 做堂堂正正的中国人”作为书法教育追求的目标。根据他们的经验和做法, 我们也认为, 抓好写字教学和书法教育, 一是能提高学生的审美水平和学习情趣;二是有利于提高学生的综合素质, 写一手好字, 能使一个人求职、工作乃至终生受益;三是还可以增强学生的爱国意识。文字是一个民族文化的重要标志, 是传统文明和民族精神的主要载体。因此, 无论是为实用而学习写字, 还是为艺术而习练汉字书法, 其过程都是继承和弘扬中华民族传统文化, 接受爱国主义教育的过程。
手写汉字在实用功能上不但具有“广泛性”和“方便性”, 而且还具有“不可替代性”。
电脑虽然可以输入和提取汉字, 而且与手写汉字相比, 电脑打字有操作快捷、字迹清晰、文面整洁等优势, 但是, 在使用范围和方便性方面却不如手写汉字。首先, 手写汉字在使用范围上要比电脑打字广泛的多。可以说, 凡是能用电脑打字完成的文字材料, 几乎都可以用手写汉字来完成 (印刷排版除外) 。但是, 有些必须用手写汉字去完成的文字材料, 却不宜用电脑打字来替代, 如果替代了, 就会失掉它应有的作用和意义。例如, 各种类型的签字、签名、题词;老师讲课板书、批改作业;领导批阅文件;医生开据处方、填写病历;学生写作业、答试题, 以及填写需要长期或永久性保存的文字档案资料等等, 这些一般都不能用电脑打字来完成。即便有的文字能用电脑打印, 但与手写的效果也大不一样。如春联、喜联等, 大家都有体会, 手写的对联要比打印的或印刷的对联, 感觉更人性化、更祥和、喜庆和温馨。其次, 在使用的方便性上, 手写汉字要方便于电脑打字。如, 记者外出采访做记录, 人们参加会议、听课、听报告作笔记, 外出活动或出差, 随时记点东西, 写个便条等等, 都更适宜用笔直接书写。因为手写汉字操作起来, 不但用具简便——一支笔、一个本, 或者一支笔、一张纸足矣, 而且书写起来可以随意自如, 灵活多变。时间紧了就可能写得潦草一些, 时间多了就可能写得工整一些;纸面空间大了可以写得字体大一些, 行间距疏松一些, 纸面空间小了就可以将字体写得小一些, 行间距紧凑一些。除此之外, 还可以圈点勾画, 随意添涂。有时还可能使用一些速记符号或代码以提高写字的速度和效率。尽管手写汉字有时文面显的不那么整洁, 甚至潦草不堪, 但它只要能让人识别读懂, 就能起到“白纸黑字”落笔为据的作用。
手写汉字具有鲜明的“个性色彩和感情色彩”, 它在发挥文字交际功能的同时, 还能为书写者彰显个性, 表现书写能力, 宣泄思想情感, 已成为一种“文化”。
电脑虽然能输出多种类型和各种型号的字体, 但是, 无论它能输出何种字体, 它都只不过是一个个定型不变的字符而已, 笔画、形态绝不会因操作者的技能水平, 思想情感等因素而产生任何变化。而手写汉字与电脑打字相比就大不一样了。虽然用手写的汉字也是一个个字符, 但它却是一个个富有变化、充满情感与活力的字符。它可以因书写者书写技能水平的高低、条件的优劣、心态的好坏等, 使其字符的笔画、型态、组合布局等, 呈现出各种相应的势态。它能给人以各种各样的感受, 或俊俏, 或丑陋;或粗俗, 或典雅;或平静, 或躁动;或滞涩, 或流畅;或刚硬, 或柔软;或急促, 或缓慢;或老成, 或稚嫩;或认真, 或草率等等。给人的这些感受, 有时很明显, 有时很微妙。除了这些之外, 人们还有“字如其人”之说, 一是说字的特点, 往往与人的特征相一致, 如男孩子写的字与女孩子写的字往往就不大一样, 性刚的人与性柔的人写的字也不一样, 等等;二是说字貌与人相也差不多, 人是百人百面, 字也因人而异, 百人百样。不然的话, 公安部门在破案时, 就用不上鉴别笔迹的技术了, 在传统的书信中人们也就不会常说“见字如面”了。由此可以看出, 手写汉字与电脑打字相比, 除了具有相同的书面语言交流功能之外, 所不同的是还具有鲜明的个性色彩和丰富的感情色彩。比如一个手写信件或节日贺卡, 无论是亲人所送, 还是朋友或者是其他人, 我们看了之后, 总感觉比电脑打印的信件或贺卡亲切的多。看信时, 除了能了解信中述说的内容之外, 还可以仔细体察、端详笔迹, 从中体味那难以言表的人际亲情。在这一点上人们都有深切的体会, 例如, 胡锦涛总书记给孟二冬教授女儿的一封信和香港回归十周年前夕, 温家宝总理给香港小学生的一封信, 之所以使收信人那样激动不已、热泪盈眶, 其重要原因就是国家领导人“亲笔书写”, 将关怀、关切等深情寄予笔端的缘故。再如唐代大书法家颜真卿在得知侄子季明被叛贼安禄山杀害并将人头悬挂在城门之上后, 义愤填膺, 慷慨陈词, 奋笔疾书, 一气呵成, 写下了《祭侄文稿》。文稿书法通篇气势磅礴、纵笔豪放、一泻千里, 沉痛悲愤之情溢于笔端, 被后人誉为“天下第二行书”。时隔千年, 现在人们看着他那疾书的笔画线条与那无意创作却又错落有致、跌宕起伏的章法布局, 仍能体味出颜鲁公当时怒不可遏、不书不快的悲愤心情。因此, 书法界常说“书为心画”还是很有道理的。手写汉字在将一个个字符, 组合成书面语言进行表情达意时, 它本身也起到了辅助作用, 有时通过它自身的表现形式还可以引发人们的其它联想和感受, 从而加深和丰富了对文字内容的理解和体会。这一点是手写汉字所具有的独特功能和作用, 它是电脑文字和其它的印刷文字所不具备的。这一独特的人文功能和作用会使人们永远的依赖与留恋。
手写汉字具有独特的审美价值, 其中一些变化丰富、和谐完美的表现形式, 形成了我们中华民族一门独特的博大精深的艺术——书法。
如上所述, 手写汉字与电脑打字相比, 无论是在笔画、线条还是在结构组合及整体形态上都有很强的变化性, 正是这种变化性形成了它独特的审美内涵。因为汉字本身就具有很丰富的审美因素, 如笔画有粗细、长短、俯仰、斜正、方圆、轻重、曲直、向背;结构形式有左右、上下、全包围、半包围;结构特点有疏密、开合、穿插、避让;形态有方矩、长扁、三角形、梯形等;造字方法有会意、指事、象形、形声、转注、假借。手写汉字除了能突显这些共性的审美因素之外, 同时还蕴含了千变万化的个性审美因素。我们中华民族特有的汉字书法艺术, 就是凭借汉字自身的审美因素和手写汉字的个性审美因素, 才形成了它源远流长、博大精深的艺术领域。在这个领域里, 从古至今, 人才辈出, 涌现出了众多的艺术家。这些书法艺术家们之所以能够获得成功并在这个艺术王国里尽情发挥, 任意驰骋, 就是靠的这种个性审美因素的发展与张扬。人们日常生活的手写汉字除了实用价值之外, 审美价值虽然不如书法艺术那样丰富, 但是也有“字如其人”、“书为心画”、“见字如面”等人文价值和审美价值。因此, 古往今来, 无论是书法艺术家们精心创作的书法作品, 还是人们日常生活、学习、工作中留下的手写笔迹 (当然也包括残疾人或特技者用其它器官书写的汉字) 无不给人们带来丰富的精神享受。可以说手写汉字的审美价值不但是独特的而且是永恒的。因为手写汉字是书写者借用书写工具心驱手动、心手合一、一挥而就而留下的轨迹, 这种轨迹一旦形成就容不得任何人再去修饰或改动, 否则就会形游神离。所以它的作用和独特效果是任何印刷文字, 电脑文字所不能比拟与替代的。虽然现在电脑打字的出现, 取代了不少手写汉字的交际功能, 大大地减少了手写汉字的使用量, 但同时我们却发现在电脑打字的衬托下, 手写汉字变化丰富、寄情于字、神采飞扬的审美特征越发显得更明显、更突出了, 给人们带来的感受也更加深切了。特别是在需要利用手写汉字的特性去满足其需求和欲望的时候, 人们对手写汉字的特殊魅力表现得更加青睐, 更加推崇。
联机手写数学公式识别技术 篇5
一般而言书写的公式识别主要分为联机手写公式识别、脱机手写公式识别和印刷体公式识别等三种[1]。本文主要讨论联机手写公式识别技术。
联机手写公式识别的任务是对用户通过鼠标或者手写板等输入的一个数学公式进行识别, 主要包括笔划输入、笔划预处理、符号切分、字符识别、公式分析、公式输出等阶段。
1 笔划预处理
为了更好地识别数学公式, 必须对用户输入的笔划进行预处理, 预处理的结果直接对后续的字符识别效果产生影响。预处理主要包括平滑笔画、调整笔画方向和顺序、大小和位置的归一化、重采样和特征提取等[1]。
1.1 笔画平滑、笔划方向和顺序
由于书写时不可避免的产生抖动, 需要对笔画进行平滑, 去掉孤立噪声和干扰等。不同的人书写字符时可能习惯不同, 为了提高识别效果, 需要对笔划方向和笔划顺序进行处理。
平滑处理有多种方法, 如可对笔画中的每个点进行滤波, 主要分为两步:对原始坐标的滤波和笔画方向码的滤波等[2]。
笔划方向一般分为横向、纵向和斜方向。对于横向规定从左到右, 对于纵向规定从上到下, 对于斜线规定从上到下, 如果遇到闭合曲线, 则规定起始点位于左或者上方。
笔划顺序是指一个符号的笔划之间书写的先后顺序, 必须对笔划顺序作统一规定。一种是按照笔划的终点相对于包围盒上边所形成夹角大小来确定顺序, 另一种是按照笔划中心或重心、起点或终点位置确定顺序。
1.2 大小和位置归一化
由于数学符号具有二维结构, 各符号位置和大小均可能不同, 为了方便进行符号识别, 对其进行归一化, 即将各个符号均缩放为同一大小和同一位置, 在系统中, 我们均缩放到360×360大小, 原点位于该图的左上角。
1.3 重采样
由于人不同、机器不同、符号不同, 构成每个笔划的点数也是不同的, 为了更好地提取特征, 需要对其进行重采样。例如将笔划重采样为60个点 (60为2、3、4、5的最小公倍数) 。有两种重采样方法, 一种是符号中每个笔划的点数是相同的[1], 另一种是根据笔划的长短来确定点数, 例如x是由两个笔划构成的, 假设其长度分别为60和40, 则前一种方法是各笔划均重采样30个点, 后一种方法则分别采样36和24个点。一般来说后一种方法可能好些, 但是计算量增大。
1.4 特征提取
联机手写字符一般采用如下几种特征。我们把这些特征分为两大类, 即笔划特征和字符整体特征。
(1) 笔划特征, 刻画笔划中每个点的位置、方向等特征。
a) 字符位置点特征。每个字符都是由一个或多个笔划构成的, 通过简略统计, 数学字符一般不会超过5个笔划, 每个笔划都是由多个点构成的, 这些点的 (x, y) 坐标可以作为符号特征进行提取。例如符号α是由一个笔划构成的, 符号是由5个笔划构成等, 那么这些点坐标位置经过重采样后可以作为特征。
b) 二阶微分平方和特征。为了克服用户书写符号时不可避免的抖动现象, 可以采用二阶微分平方和特征[1]。
(2) 字符整体特征, 刻画符号整体的特征。
a) 宽高比率, 即每个字符所在包围盒宽度w和高度h的比率w/h。
b) 宽高与面积比率, 即每个字符所在包围盒宽度w或高度h与包围盒面积a平方根a的比率[3]。
c) 周长与面积比率, 每个字符的所在包围盒周长s与包围盒面积a平方根a的比率。
d) 傅里叶系数, 对字符的笔划进行傅里叶分析, 取其前几个系数[4]。
经过实践发现, 可以采用多种特征组合的方式, 仅一种特征效果不太理想。
2 符号切分
用户输入笔划后, 必须对这些笔划进行符号切分, 即确定那些笔划属于一个符号。假设用户输入笔划为集合S:{s 0, s 1, s 2, ...s n}, 必须对这个笔划集合S做一个划分{S 0, S 1, S 2, ...S m}, 然后对每个子集S i (i=0, 1, ..., m) 作为一个整体进行符号识别。由于笔划较多, 如果盲目地划分, 则划分空间会非常巨大, 一般为笔划数目n的指数量级。
符号切分存在二义性, 例如对于图1来说, 字符为英文大写字母B还是两个数字1和3呢?这种识别对于人来说有时都存在困难, 何况计算机。
人们对符号切分进行了研究, 一般采用各笔划之间的距离作为切分依据, 例如采用包围盒方法等、最小生成树、最小游程距离方法等。下面简要介绍最小生成树算法[5]。
以各笔划的包围盒中心或者重心作为顶点v, 全部笔划的顶点为集合V:{v 0, v 1, v 2..., v n}, 任两个顶点构成边集合E:{e 01, e02, e03..., e ij, ...}, 其中边eij表示该边由顶点vi和vj构成。令W表示边权重集合, 即W:{w01, w02, w03..., wij, ...}, 其中wij表示边eij的权重, 这里权重使用两个顶点的欧式距离表示, 即wij的值为iv和vj的直线距离。这样V、E和W构成一个无向图G。最小生成树是在E中寻找子集T, 要求T中包含所有顶点, 无环路, 并且满足其权重和是E中所有连通图中是最小的, 即:
称T为G的最小生成树。
最小生成树算法有多种, 包括Prim算法、Kruskal算法和Boruvka算法等。三种算法都是贪婪算法的应用, 下面给出Kruskal算法。
对所有边eij依权重wij按递增排序
遍历所有边
if iv和vj不在同一棵子树
算法执行完后, T即为所有笔划的最小生成树。在笔划划分时, 只有距离近的笔划才有可能被划分在一个字符中, 这样就极大地缩减了划分空间。
3 字符识别
经过预处理和符号切分后, 我们得到了符号的特征向量, 下一步应该判断该符号同哪个数学字符是最佳匹配, 即字符识别。字符识别有多种方法。
第一种方法是传统的统计方法。假设各特征均为独立变量且正态分布, 可以采用高斯分类器。假设待识别字符s的特征向量为x, 特征数为D, 字符i的特征向量均值为μi, 其协方差矩阵为Σi, 则s匹配i的概率密度的高斯公式[6]为:
由于特征数目一般很大, 例如80维, 通常要对其进行降维, 一般采用主成分分析 (PCA) 方法, 得到其主分量[7]。
第二种方法是采用多层神经网络[6], 例如BP算法, 其功能强大, 易于理解。神经网络是一种可以使用复杂模型的启发式的统计模式识别技术。通过建立一个三层神经网络 (输入层、隐含层和输出层) , 输入特征向量, 给出相对应的模式。
此外还有其他方法[6]等。还可以对分类器串并联组合[8]等。在本系统中, 使用了传统的统计方法和BP神经网络等。
4 公式分析
经过前面几个阶段, 各个笔划所构成的符号已经识别为单独的数学字符, 接下来的工作是进行公式分析, 即根据各个数学字符的相对位置关系及上下文逻辑关系确定这些字符之间所对应的数学公式[1]。
例如对于图2来说, 图2a是用户输入的公式, 图2b是符号及其包围盒, 经过前面几个阶段后, 各个符号已经被识别为x和2。由图中可以看出, 字符2位于字符x的右上方, 则经过公式分析, 结果为x2, 如图2c所示。
对于用户输入的公式可以进行上述简单分析, 将各种数学符号进行分类, 包括简单字符, 例如希腊字母等;上下结构, 例如分式等;修饰符号, 例如着重号等;左右结构, 例如括号等, 在此不再列举。在系统中将各种字符可能的关系分析清楚, 按照可能性进行排列。
为了减少错误, 必须考虑上下文。例如193, 中间的9可能被识别为字母q或9, 到底采用哪一个, 我们需要考虑上下文逻辑关系, 在此例中, 该字符前面和后面均为数字, 显然该字符为9的可能性远远大于为q的可能性。
5 输入与输出
公式输入主要解决用户输入笔划的问题, 用户可以通过鼠标或者手写笔输入。输入界面主要包括输入面板、各种工具按钮、菜单等。图3是为识别系统在训练模式下的界面。
用户通过鼠标等工具在输入面板中输入公式笔划, 然后点击识别按钮 (R) 即可进行识别, 点击训练按钮 (T) 即可输入训练样本, 点击管理按钮 (M) 可对样本库中样本进行管理。
数学公式可以表示为多种形式, 例如MathML, OpenMath, LaTex, OLE、图片等。在此系统中, 输出表示为MathML格式, 这样许多数学软件包括Mathematica、MathType都可以使用。
6 小结
本文简单地讨论了联机手写数学公式的识别技术, 主要包括笔划输入、笔划预处理、符号切分、字符识别、公式分析、公式输出等各阶段。用户通过鼠标或手写笔输入笔划;接着进行预处理, 它主要解决笔划方向、笔划顺序、位置和大小归一化、笔划重采样等问题;然后进行符号切分, 根据最小生成树算法, 把可能在一起的笔划组合成一个符号;对符号进行特征提取, 然后将其识别成数学字符;根据这些字符的相对位置关系和上下文, 通过公式分析后, 形成数学公式;将识别结果表示成MathML格式, 这样就可以在其他应用程序中使用了。
参考文献
[1]单洪浩.基于笔输入的数学公式编辑器[D].北京:中科院软件所, 2001.
[2]胡莹.联机手写数学公式识别系统的研究与实现[D].广州:广州大学, 2007.
[3]冯海波.基于手势和两级分类器的联机手写公式识别[D].北京:中科院软件所, 2003.
[4].联机手写大写英文字母识别[EB/OL]. (2007-6-23) [2011-1-2]http://www.opencv.org.cn/.
[5]Thomas H.Cormen, Charles E.Leiserson, Ronald L.Rivest, Clifford Stein.算法导论[M] (第二版) [M].潘金贵, 顾铁成, 李成法, 叶懋, 译.北京:机械工业出版社, 2006:348-350.
[6]Richard O.Duda, Peter E.Hart, David G.Stork.模式识别 (第二版) [M].李宏伟, 姚天翔, 译.北京:机械工业出版社, 2003.
[7]Nicholas E.Matsakis.“Recognition of Handwritten Mathematical Expressions, ”Department of Electrical Engineering and Computer Science, MIT, 1999.http://www.ai.mit.edu/people/viola/research/publi cations/matsakis-MS-99.pdf.
基于神经网络的手写数字识别 篇6
手写数字识别 (Handwritten Numeral Recognition, 简称HNR) 是"光学字符识别技术" (Opticale haraeter Recognition, 简称OCR) 的一个分支, 它研究的对象是:如何利用电子计算机自动辨认人手写的阿拉伯数字。
在整个OCR领域中, 最为困难的就是脱机手写字符的识别。到目前为止, 尽管人们在脱机手写英文、汉字识别的研究中已取得很多可喜成就, 但距实用还有一定距离。而在手写数字识别这个方向上, 经过多年研究, 研究工作者已经开始把它向各种实际应用推广, 为手写数据的高速自动输入提供了一种解决方案。
基于人工神经网络的数字识别技术目的就是力图通过对人脑功能和结构的模拟来实现字符的高效识别。在数字识别系统中, 人工神经网络主要充当分类器的功能。网络的输入是字符的特征向量, 输出是字符的分类结果, 即识别结果。由于识别策略的不同和对问题理解水平的限制, 输入的特征向量所包含的信息常常是冗余的, 甚至是矛盾的。经过反复学习, 神经网络可以智能地将特征向量优化, 去除冗余、矛盾的信息, 强化类间的差异。其次, 由于神经网络采用分布式的网络结构, 本身具备可以并行的条件, 可以加快大规模问题的求解速度。
2. BP神经网络
2.1 BP神经网络拓扑结构图
2.2 BP算法
基本思想:
逐一地根据样本集中的样本 (Xk, Yk) 计算出实际输出Ok和误差测度E1, 对权值W (1) , W (2) , …, W (k) 各做一次调整, 重复这个循环, 直到∑Ep<ε。
用输出层的误差调整输出层权矩阵, 并用此误差估计输出层的直接前导层的误差, 再用输出层前导层误差估计更前一层的误差。如此获得所有其它各层的误差估计, 并用这些估计实现对权矩阵的修改。形成将输出端表现出的误差沿着与输入信号相反的方向逐级向输入端传递的过程。
其实现方式如下:
1 for k=1 to L do
1.1初始化W (k) ;
2初始化精度控制参数ε;
3 E=ε+1;
4 while E>εdo
4.1 E=0;
4.2对所有的i, j, k:△W (k) ij=0;
4.3对S中的每一个样本 (Xp, Yp) :
4.3.1计算出Xp对应的实际输出Op;
4.3.2计算出Ep;
4.3.3 E=E+Ep;
4.3.4对所有i, j根据相应式子计算△p W (L) ij;
4.3.5对所有i, j:△w (L) ij=△W (L) ij+△p W (L) ijj;
4.3.6 k=L-1;
4.3.7 while k≠0 do
4.3.7.1对所有i, j根据相应式子计算△p W (k) ij;
4.3.7.2对所有i, j:△W (k) ij=△w (k) ij+△p W (k) ij;
4.3.7.3 k=k-1
4.4对所有i, j, k:w W (k) ij=W (k) ij+?W (k) ij;
4.5 E=E/2.0
3. 手写数字识别系统
通常, 数字识别系统过程主要由学习、识别两个阶段构成。如图3.1所示
3.1 学习阶段
主要是通过对训练集数字字符的研究, 确定每一数字字符类别的标准样本建立样本库, 以便在识别阶段使用。
3.2 识别阶段
在识别阶段中, 将待识别数字字符经过扫描仪等输入设备送入主机;然后进行预处理, 预处理后再按某种特征提取方法取出数字字符的特征;最后, 将待识别数字字符的特征与学习阶段中所确定的标准样本的特征进行比较判决, 得出识别结果并把结果以某种方式输出。也就是说识别阶段, 主要经过输入、预处理、特征提取、分类、输出五个步骤实现
4. 手写数字识别系统处理方法
在系统处理过程当中我们不难看出, 学习和识别阶段都包括了预处理和特征提取两个步骤:
4.1 预处理
由于输入设备及纸张原因会造成输入字体的畸变, 产生污点、非白、断笔、交联、噪声等干扰。所以, 在识别之前要对数字字符进行预处理, 以去除噪声, 压缩冗余信息。由于一般都是在预处理后的图像上提取特征, 因此如果这个步骤结果不理想, 往往会给后面的特征提取阶段带来无法纠正的错误。所以预处理的优劣直接关系到识别结果的正确与否, 关系到识别算法的性能。预处理必须在手写数字识别应用系统设计时一高度重视。预处理主要包括二值化、平滑、归一化、细化等过程。
4.2 图像二值化
二值化就是把数字字符图像的灰度数字信号处理成只有0和1两级灰度的图像。
4.3 字符平滑处理
数字字符图像经过平滑处理, 能去掉孤立噪声、干扰, 平滑笔划边沿中值滤波法。
所谓中值滤波, 就是对二值图像上的一点 (i, j) , 按照公式
计算 (i, j) 及其8邻域的代数和F (i, j) 。那么像素点 (i, j) 的值f (i, j) 由公式
决定。
4.4 归一化
由于采集的手写数字图像大小不一, 为了有效的提取图像特征, 减少这种大小不一带来的影响, 因此根据识别的需要把图像归一化。图像归一化一般采用外框归一化或重心归一化两方法处理。
由于手写数字字符图像点阵大小不一, 为了抽取特征, 必须对该字符点阵进行归一化, 本系统采用了外框归一化处理, 使其归一化为16x24大小的点阵, 即字符宽16像素, 高24像素。对于数字"1"需要进行特别处理。
5. 基于BP神经网络的数字识别系统
由于系统采用了多分类器, 那么最后的识别结果的确定将依赖于系统集成方法。由于在前面描述的BP改进算法中, 我们对其权值进行了调整。故本系统在BP神经网络中, 采用BP改进算法的权值作为权值集成多分类器方法来设计手写数字识别系统, 其整个识别系统的如上图所示。
在本系统中, 设计了两个单一分类识别器, 分别通过特征提取1模块提取某一样本的一个原始特征向量用来作为分类其1的向量输入, 通过特征提取2模块提取某一样本的一个宏观特征向量和微观特征向量用来作为分类其2的向量输入, 为了解决样本单一特征向量的输入分类识别问题, 同时为了提高样本的识别率, 本系统提出了基于BP神经网络与多分类识别器以权值集成方法进行结合的方法, 将两个提取单一特征向量的分类识别器在BP网络中进行集成, 从而形成了一个基于BP网络的手写数字识别系统。
5.1 两个单一分类器设计
5.1.1 识别器一设计
原始特征向量提取:把归一化的点阵划分成16*16的网格, 统计每个网格里的黑点数, 当点数小于总点数的50%时为0, 大于50%时为1, 这里共256个特征值。输出向量为10, 根据公式姨 (其中N为特征值向量维数, K为输出向量维数, 为随机数) 得出隐含层个数为20.
5.1.2 识别器二设计
宏观特征向量提取:
(1) 粗网格特征提取:把归一化的点阵划分成4*4的粗网格, 统计每个网格里的黑点数, 当点数小于总点数的25%时为0, 大于25%小于75%为1, 大于75%为2。这里共16个特征值。
(2) 七段框架投影值:七段框架投影形状类似于LED七段显示器的形状, 投影方法为将任意点向最近的框边投影。最后统计每个框边的投影点数, 这样就形成了7个数, 分别计算这7个数与字符总点数之比, 然后归一化。归一化的策略如下:如果该比值小于0.08, 则记为0;大于0.08同时小于0.15, 则记为1;若大于0.15则记为2。这里共7个特征值。
(3) 宽高比:字符的高度个宽度之间的比值, 这里有1个特征值
微观特征向量提取:
(1) 网孔数特征:统计字符中的闭合孔洞数, 如"0"、"6"、"9"的孔洞数为1, "8"的孔洞数为2。这里为1个特征值。另外孔洞所在位置为1个特征值, 记孔洞在上部为1, 中部为2, 下部为3, 上下皆有为4。共计特征值为2个。
(2) 线特征。分别统计水平、垂直, 左下45度、右下45度4个方向的投影, 当水平和垂直存在连续的宽度为归一化后点阵宽或者高1/16且点数大于总宽的80%时为1, 否则为0;当左下45度和右下45度存在连续的宽度为归一化后点阵宽或者高1/16且点数大于总宽度的90%时为1, 否则为0。这里共4个特征值。
(3) 凹特征。字符的凹特征是指字符边缘相邻两最外点距所夹最内点水平或垂直方向的距离向中心凹进去的程度。当凹深度大于给定的阈值时视为1, 否则为0。分别计算左上、左下、右上、右下方向的凹特征, 共计4个特征值。
(4) 凸特征。字符的凸特征是指在上、下、左、右4个方向, 从字符边缘曲线检测存在2点之间曲线向外凸的程度。当凸深度大于给定的阈值时视为1, 否则为0。分别计算上、下、左、右4个方向的凸特征, 共计4个特征值。
(5) 穿线数特征。分别统计垂直中线, 水平上中线, 水平下中线的穿线数, 把过线数作为特征值。这里共3个特征值。
所以识别器二输入向量为维数为:16+7+1+2+4+4+3=37;输出向量维数为:10;隐含层个数为:10
5.2 集成分类器设计
如果识别置信度高的识别向量的对应分量在集成时其权重能够较大的话, 那么它在最终的集成结果向量中就能保持这种优势。这里, 我们把权值定义为BP改进算法中的冲量系数β:
其中β取输出向量1, 2组成的向量组的最大特征值。
在本系统中, 采用权值方法集成的识别结果可以简要的表示为:
其中yii为第i个分类器输出向量的第j个分量。
6. 实验结果
仿真实验:
选用BP神经网络的权值集成多分类器识别系统后的测试结果。两个识别器的输入层、隐层和输出层的节点个数分别为256, 20, 10;37, 12, 10学习参数设置如下:
学习率:0.01
训练结束条件:训练结束条件为网络的平方和误差E≤0.002。
7. 结论
为了提高手写体数字的识别率和可靠性, 本文将改进的BP神经网络引入模式识别之中, 提出一种基于BP神经网络的权值集成多分类器识别系统。与单一的识别器相比, 实验数据表明本文设计的数字识别系统具有较高的准确率和识别率, 而其有962%的识别率与其他的识别器相比, 本文设计的手写数字识别系统各项性能指标有明显的提高, 这显示了该识别系统具有较高的识别率和实用性。随着图像技术的不断发展, 越来越多的工具算法都将应用到手写数字识别当中, 并且识别率和准确率都将得到大幅度的提高
摘要:本文提出了一种采用BP神经网络方法来对无限制手写体数字进行识别的方案。通过图像预处理和数字特征提取, 基于神经网络的判别方法, 并结合使用Matlab工具箱中提供的人工神经网络函数设计了一种手写数字识别的新方法。实验表明, 该方法可以获得较好的识别率。
关键词:BP神经网络,图像预处理,特征提取
参考文献
[1].唐轶峻, 申小阳, 朱雯兰, 等。基于BP神经网络的数显仪表数字数字识别系统.[J].电测与仪表。2005.09
[2].郑南宁, 王龙, 胡超等。BP神经网络的改进及其用于手写数字识别的研究。西安交通大学学报, 1992, 2:11一12
[3].高隽。人工神经网络原理及仿真实例。北京-机械工业出版社, 2007, 35-48
[4].胡小锋, 赵辉。Visual C++/MATLAB图像处理与识别实用案例精选[M]。人民邮电出版社, 2004
手写汉字识别 篇7
手写字符识别属于模式识别领域, 模式识别作为一门学科, 属于机器智能, 故属于人工智能范畴。模式识别理论的发展和广泛应用, 推动了人工智能的发展和应用。
脱机手写识别是通常所说的光学字符识别 (Optical Character Recognition, OCR) , 在文字信息电子化时通常有以下分类:
2. OpenCV简介
开放源代码的计算机视觉类库OpenCV (Intel®Open Source Computer Vision Library) 由英特尔公司位于俄罗斯的研究实验室所开发, 它是一套可免费获得的、由一些C函数和C++类所组成的库, 用来实现一些常用的图像处理及计算机视觉算法。
OpenCV主要用于对图像进行一些高级处理, 比如特征检测与跟踪、运动分析、目标分割与识别以及三维重建等。与其他计算机视觉工具相比, OpenCV的优越性如表1所示:
OpenCV是Intel公司开发的图像处理和计算机视觉函数库, 它有以下特点:
(1) 开放C及C++源码;
(2) 基于Intel处理器指令集开发的优化代码;
(3) 统一的结构和功能定义;
(4) 强大的图像和矩阵运算能力;
(5) 方便灵活的用户接口;
(6) 同时支持MS-Windows, Linux平台;
(7) 在速度上OpenCV还有Intel公司的mmx和ssl优化。
3. 识别系统
3.1 图像获取
通常通过扫描仪或数码相机获取图像, 也可以通过手写板等外接设备输入图像信息。
3.2 预处理
3.2.1 图像级预处理
如果是数码相机拍摄得到的照片, 通常附带颜色信息, 这些信息对字符识别没有任何用处, 通常要进行二值化操作。之后还需要去噪、倾斜校正和滤波处理。文献[6]中对倾角估计做了详细阐述。
OpenCV中使用void cvThreshold (const CvArr*src, CvArr*dst, double threshold, double m2x_value, int threshold_type) 对图像进行二值化, 其中参数threshold为阈值。
3.2.2 字符级预处理
将大幅的文本图像先切分成若干行, 对每行再切分成单词或单个字符, 使每一个字符边缘没有空白的多余区域, 如图3所示。之后, 需要对得到的图片按一定比例因子进行缩放, 使所有要进入下一步处理的图像大小相同, 这样可以去除字号对识别结果的影响。
3.3 特征提取
对上一步得到的图像进行处理, 首先将图片的像素矩阵转化为一个特征向量。
3.3.1 机器学习
在机器学习部分要训练分类器, 本文介绍的方法使用K近邻分类器。
近邻分类器简介
将均值作为代表点时, 最小距离分类器的实质就是将样本判属于与代表点距离最近的类, 是一种分段线性分类器。
A.最近邻法
最近邻法的主要特点就是将样本判属它的最近邻 (和它距离最近的代表点) 所在的类。
假定有m个类别ω, ω2, …, ωm的模式识别问题, 每类有Ni (i=1, 2, .., m) 个样本, 规定类ωj的判别函数为
其中, xik表示第i类的第k个元素
判决准则:
称这种决策方法为最近邻法, 相应的分类器称为最近分类器。
优缺点分析:最近邻分类器的判决实现是将样本判属与它距离最小的样本所属的类, 这种方法的特点是概念容易理解, 最近邻样本和待分类样本在距离意义下是最相似的。其缺点在于受随机噪声影响较大, 尤其是在两类的交叠区内。
B.k-近邻法
对于待分类样本x, 在N个样本集中找出它的k个近邻, 设k个样本中属于第i类的为ki个 (i=1, 2, ..., m) , 即
定义判别函数:
判别准则为
称这种方法为k-近邻法, 相应的分类器称为k-近邻分类器。
实验表明, 在大多数情况下, k-近邻分类器的分类性能是很理想的, 最大缺点是需要记忆训练集全部样本, 决策时需要进行大量的比较运算, 这对大规模训练样本集来说是十分不利的。正因为如此, 一般来说, k-近邻分类器不适宜于存在大规模训练集时的实时预测。另外, k-近邻分类器对变标签 (Alternate labels) 问题、双螺旋 (Two-spirals) 问题等经典的模式分类难题也无能为力。
在OpenCV中封装了机器学习库 (MLL) , 是一些用于分类、回归和数据聚类的类和函数。大部分分类和回归算法用C++类来实现。尽管这些算法有些不同特性, 但是也有一些相同特性, 这些相同之处在类CvStatModel中被定义, 其他机器学习类都是从这个类中继承。CvStatModel类中包含了一些基本的函数, 如:
对于K-近邻算法在OpenCV中封装了CvKNearest类。包含以下函数, 如:
3.3.2 识别
在识别过程中, 用分类器识别待识别的特征向量。
在OpenCV中调用函数:float CvKNearest::find_nearest (cons CvMat*_samples, int k, CvMat*results=0, const float**neighbors=0CvMat*neighbor_responses=0, CvMat*dist=0) 。在回归中, 预测结果将是指定向量的近邻的响应的均值。在分类中, 类别将由投票决定。该函数通过参数neighbor_responses返回一个CvMat类型矩阵, 记录了K个最可能的结果, 在这K个结果中, 投票最多的作为函数返回值。
3.3.3 样本测试
如果同一字符的样本很多, 可以选择一部分用来训练分类器, 另一部分样本用于测试分类器的准确率。
在OpenCV中设有提供测试的函数, 可以自己编程实现, 其思想是使用测试样本作为待识别的样本进行识别操作。设总共有M个样本用于测试, m个样本识别结果与实际值不同, 则识别误差率为
3.4 后处理
一般是利用词义、词频、语法规则或语料库等语言先验知识对识别结果进行校正的过程。
3.5 文本输出
将识别得到的文本输出, 输出方式根据需求不同可自由选择。
4. 结语
本文重点对手写识别的流程、K-近邻算法以及OpenCV库函数的使用做了介绍。手写字符识别在生产生活中应用广泛, 如识别手写邮政编码实现邮件分拣。因此, 其识别问题一直是图像处理和模式识别的热点。如今, 手写识别功能已在某些嵌入式设备上得到应用, 如手机等。也许随着技术的完善, 未来可以将手写板集成在键盘上, 给打字不熟练的用户提供另一种信息录入的途径。
参考文献
[1]W.S.Rohland.Character Sensing System.USA, 2877951.1959
[2]Intel Corporation.Open Source Computer Vision Library Reference Manual[S].2001-12