文字识别算法.docx
《文字识别算法.docx》由会员分享,可在线阅读,更多相关《文字识别算法.docx(11页珍藏版)》请在冰点文库上搜索。
文字识别算法
题目图像分割技术
学院计算机科学与技术
班级计软1401
学生兰俊锋
学号20141214023
文字识别是智能识别技术中的一个重要技术。
文字具有便于信息保存和传递的优点,使信息在时间和空间上得以迅速扩散。
在人们的日常生活中,在机关事务处理、工业以及商业交往中,需要识别文字的数量如同天文数字,但利用计算机识别的文字量却很少。
最近几年,随着计算机技术、数学和图像技术的发展,文字识别的应用领域逐步扩大,目前较为活跃的应用包括数字识别,文字识别等。
文字识别是指用计算机字典、高速地识别现在介质(如纸张等)上的数字、英文符号或汉字。
文字识别实际上就是解决文字的分类问题,一般通过特征及特征匹配的方法来进行处理。
本文将从算法、应用两方面介绍文字识别技术,本文介绍的文字识别应用有英文字母识别、车牌特殊文字识别、书写文字识别、特殊文字识别。
文字是人类相互交流信息的重要工具。
社会发展进入信息时代,人们已不再停留在用自己的耳朵和眼睛去直接获得这些信息,而是使用计算机将文字自动的输入计算机,用计算机对他们进行处理,随时以各种方式满足人们的不同需要。
因此,研究如何用计算机自动识别文字图像,解决文字信息自动输入计算机,并进行高速加工处理的问题已引起大家的广泛关注。
归一化算法一般作为一种图像的预处理技术,其目的是将采集到的原始图像转换成特征提取器所能接受的形式(灰度图像或二值图像),消除一些与类别无关的因素(噪声消除、归一化等)。
从理论上讲,经过归一化后的骨架应该是宽度为一的中心线,但这是不可能的。
不同的硬件设备和不同的算法得出的结果可能不是唯一的,其结果与原图案的扭曲程度也是不~样的,扭曲程度尽量的小应该是归一化算法追求的目的之一。
既然预处理是为后续的特征提取和分类器设计服务的,那么预处理方法的选择就应该有利于特征的提取,以使分类变得简单。
汽车牌照识别,在高速公路收费、电子警察和治安卡口等系统中有重要的应用价值。
作为图像识别的典型问题,汽车牌照识别的研究有很长的历史,但因为实际路况的高度复杂性(如车速、光线、污染及变形等),目前的性能还不能令人满意。
1.文字识别过程概述
一般来说,文字图像的识别过程主要由以下4个部分组成:
①正确地分割文字图像区域;②正确地分离单个文字;③正确识别单个文字;④正确地连接单个文字。
其中①、④属于文字图像分析技术问题,③属于文字识别技术问题。
关于②,由于仅从分割处理不能对其进行评价,通常采用文字识别地评价值来判断分离的正确性。
单纯的文字识别是指经二值化处理后的单个文字识别。
1.1.文字识别系统的原理及组成
文字图像的识别的原理如下图所示。
图中光电变换检测部分的主要功能,是对纸面上的文字进行光电转换,然后经模数转换成具有一定灰度的数字信号,送往其后的各部分进行处理和识别。
常用的检测设备是扫描仪,CCD摄像头等。
文字图像分割的目的就是根据文字图像的特征的视线文字图像区域的定位和分割,将真正的文字图形分割出来,以便后续进行识别,识别与处理部分的功能是将已分割出的文字图形信息加以区分,去除信号中的污点、空白等噪声,增强文字图像的信息。
并根据一定的准则除掉一些非本质信号,对文字的大小、位置和笔画粗细等进行规范化,以便简化判断部分的复杂性。
特征提取部分是从整形和规范化的信号中抽取反映字符本身的有用信息,供识别部分进行识别。
作为特征提取的内容是比较多的,可以是几何特征,如文字线条的端点、折点和交点等。
识别判断部分则是根据抽取的特征,运用一定的识别原理,对文字进行分类,确定其属性,达到识别的目的,实际上判断部分就是一个分离器。
识别系统学习部分的功能是生成计算机特征字典,学习根据已准备好的多个字样,抽出代表该字的特征,进行修改,按照字典的规定位置存放该特征。
学习分为两种:
一种是在人的参与下进行,称为“有教师”学习;一种由计算机自动进行,称为“无教师学习”。
1.2.文字识别的方法
文字识别是指用计算机字典、高速地识别现在介质(如纸张等)上的数字、英文符号或汉字。
文字识别实际上就是解决文字的分类问题,一般通过特征及特征匹配的方法来进行处理。
特征判别是通过文字类别(例如英文或汉字)的共同规则(如区域特征、四周边特征等)进行分类判别。
它不需要利用各种文字的具体知识,根据特征抽取的程度(知识的使用程度)分解到地使用结构分析的办法完成字符的识别。
匹配的方法则是根据各国文字的知识(称为自动)采取按形式匹配的方法进行。
按实现的技术途径不同又可分为两种:
一种是直接利用输入的二维平面图像与字典中记忆的图像进行全域匹配;另一种是只抽出部分图像与字典进行匹配。
然后根据各部分形状及相对位置关系,与保存在字典中的知识进行对照,从而识别出每一个具体的文字。
前一种匹配方法适合于数字、英文符号一类的小字符集;后一种匹配方法适用于汉字一类的大字符集。
1.3.边缘检测
边缘(Edge)是指图像局部亮度变化量最显著的部分。
边缘主要存在于目标与木板、目标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征提前和形状特征提取等图像分析的重要基础。
图像分析和理解的第一步常常是边缘检测。
由于边缘检测十分重要,因此成为机器视觉研究领域最活跃的课题之一。
图像中的边缘通常与图像亮度或图像亮度的一阶导数的不连续性有关。
图像亮度的不连续可分为:
①阶跃不连续,即图像亮度在不连续处的两边的像素灰度值有着显著的差异;②线条不连续,即图像亮度突然从一个值变化到另一个值,保持一个较小的行程后又返回到原来的值。
在实际中,阶跃和线条边缘图像是很少见的,由于大多数传感元件具有低频特性,使得阶跃边缘变成斜坡型边缘,线条边缘变成屋顶形边缘,其中的亮度变化不是瞬间的,而是跨越一定的距离。
对一个边缘来说,有可能同时具有阶跃和线条边缘特性,例如在一个表面上,由一个平面变化到发线方向不同的另一个平面上就会产生阶跃边缘;如果这一表面具有镜面反射特性且两平面形成的棱角比较圆滑,则当棱角圆滑表面的法线经过镜面反射角时,由于镜面反射分量,在棱角圆滑表面上会产生明亮光条,这样的边缘看起来像在阶跃边缘上叠加了一个线条边缘。
由于边缘可能与场景中物体的重要特征对应,所以它是很重要的图像特征。
比如,一个物体的轮廓通常产生阶跃边缘,因为物体的图像亮度不同于背景的图像亮度。
2.简单贝叶斯分类器
简单贝叶斯分类器(SimpleBayesClassifier或NaïveBayesClassifier)[1]假定特征向量的各分量间相对于决策变量是相对独立的。
对于特征向量为X=[x1,x2,…xd]T的测试样本,它属于第Ci类的条件概率为:
P(Ci|X)=P(X|Ci)*P(Ci)/P(X)
=(P(Ci)/P(X))
(1)
对每一个类别(即取不同的值)都计算上面的条件概率,最终的识别结果为条件概率最大的那一类别。
虽然简单贝叶斯分类器是基于独立性假设的,在违背这种假定的条件下简单贝叶斯也表现出相当的健壮性和高效性678,它已经成功地应用到分类、聚类等问题中。
2.1.简单贝叶斯分类器在切分中的应用
在确定文字的最佳候选后边界时,假设有m个候选后边界,分别对应m个候选切分结果,用d种特征来衡量其合理性,记为Xj=[x1,x2,…xd]T,j(=1,2…m)。
。
则,当文字为Ci类(C1、C2、C3)分别表示汉字、英文和数字、标点类别),且后边界为第j个候选后边界的概率为:
P(Xj,Ci)=P(Xj|Ci)*P(Ci)
=P(Ci)(i=1,2,3j=1,2…m)
(2)
以上公式
(2)与公式
(1)不同的是,公式
(1)只需要确定一个值,即观测值X对应的类别;而公式
(2)不仅需要确定一个候选后边界切分出文字的种类,还需要确定m个候选后边界那一个最合适。
显然,使P(Xj|Ci)取最大值时的j就对应了最佳切分位置,而相应的i即为对文字类别的定义。
2.2.特征提取
文中的贝叶斯分类器用到的特征可分为两种:
一种是文字形状和结构方面的特征,包括6种文字外形特征(文字高度、宽度、字间距离、覆盖率、高宽比[2]、纵向起始位置)和3种后边界特征(后边界穿越笔划数、后边界投影值、后边界上下穿越笔划点距离);另一种是文字内容特征,包括16维方向线素特征(把文字分成不重叠的2×2块,每块提取出水平、垂直、45°和135°4个方向的方向线素特征)。
第一种特征里,除了覆盖率和高宽比外都需要特征归一化。
这里用图像中的汉字平均高和宽对它们归一化。
因此,切分过程的第一步需要估计基本参数:
汉字平均高和宽。
在研究中发现,文字切分中最容易出现的错误是:
(1)把汉字的偏旁、部首等部件当成英文、数字或标点单独切开;
(2)把英文、数字或标点与汉字切在一起。
为了有较好的切分效果,就需要抽取出能够区分这些错误的特征。
一级汉字中容易切开的汉字有以下几种:
(1)“八”,“儿”,“川”,“非”,“加”,“旧”,“别”,“训”;
(2)“叫”,“礼”,“仆”,“讨”,“引”,“很”;(3)“必”,“小”,“心”;(4)“懊”。
第1、3种字,单个字左右部分容易切开;第2、4种字,由于有左边的部首,左右部分也容易切开;第1、2种汉字易被当成英文或数字类文字切开;第2、4种汉字左边的点易被当成标点类文字切开。
为此,把上面4种文字易被切开的部分定义为新的文字类别:
部件类,用C4来表示它;该类仅用于提取特征。
3.归一化算法的研究
汉字图像的归一化包括位置、大小、旋转、倾斜和笔画宽度的归一化。
在整个汉字识别系统中会进行字符切分、倾斜校正等步骤,本文主要研究汉字的大小和笔画宽度的归一化。
3.1.字体大小归一化
由于汉字字形、字体繁多,同一汉字的特征也因此而不同,为了便于统一描述和提取同一汉字的特征,对不同字形、字体汉字均能识别,为汉字识别工作打好基础,在汉字特征提取前还需对汉字图像进行大小归一化的操作。
所谓大小归一化就是对实际提取的字符进行缩放操作,最后得到预定大小的字符图像。
一般汉字图像预处理的第一步是进行二值化处理,二值化处理的目的是把灰度图像转换为二值图像。
二值化处理后图像中的像素点不是1(黑点)就是0(白点)。
记为:
GM*N=(Pi,j)(1≤i≤M,1≤J≤N)
其中,M和N分别为G的长和宽;Pi,j为第i行、第j列的像素点。
Pi,j=1时表示一个黑像素点(前景点),Pi,j=0时表示一个白像素点(背景点)。
简记为G。
一般的缩放算法是对一个区域的灰度值进行运算,由四个以上的输入像素决定输出像素的灰度值。
而对于二值图像,只有黑白像素,此时可以对图G进行划分而得到一组图块g,使得每个g内黑像素点的分布是比较均匀的,记为:
gm*n=(Pa,b)(Pa,b∈G,1≤a≤m,1≤b≤n)
其中,m和n(m≤M,n≤N)分别称为该图块的长和宽。
定义了图块之后,二值点阵图像又可表示为:
GM*N=(gx,ym*n)(1≤x≤[M/m],1≤y≤[N/n])
其中,(x,y)表示图块g在图像G中的位置。
在图块g中,值为1的像素点个数与全部像素点个数之比,称为该图块的灰度值。
记为:
P(g)=(ΣPi,j/(m×n))×100%(1≤i≤m,1≤j≤m)
若g中所有的像素点为1,则称将g置1,若所有的像素点为0,则称将g置0。
本文所用的大小归一化算法不是简单地将g压缩为一个像素点,而是按压缩比将g缩小成为另一个图块g’,使得g’具有与g相同的特征,即二者的黑像素点分布是相似的。
这样,由g’构成的缩小图G就可基本上保持原图G的特征,从而减小了由缩小所造成的失真。
设:
GM*N=(gi,jm*n)(1≤i≤[M/m],1≤J≤[N/n])
G’=(g’i,j)(g’i,j为g缩小后形成的图块)
算法描述如下:
①读入原图G,根据G的行列数、特征及压缩比,确定图块g的行、列数及g’的行、列数;
②i=1,j=1;
③读人gi,j,根据第一次划分得到的图块的灰度值P(gi,j)及图块的特征构造g’i,j;
④若i≤[M/m]或j≤[N/n],则修改i,j的值使之指向下一个像素点,然后转向步骤③继续;否则结束。
算法的关键是根据原图块g的黑点分布特征来动态地构成g’。
为了提高处理效率,可在分布特征基本相似的一个较大的区域采用相同的g’。
而当特征发生较大变化时再重新构造新的g’。
3.2.笔画宽度归一化
对笔画宽度进行归一一化的目的是使二值图像变为仅有一个像素宽度的骨架,这个过程也称之为细化。
细化的本质就是寻找图形的中轴线或骨架。
并以其骨架来取代该图形。
细化后的图形的像素宽度变为1,但仍能保持原图形的结构性信息,如位置、方向、长度等。
在现代模式识别系统中,细化处理已经成为最为关键的预处理步骤之一,细化效果的好坏将直接影响识别速度及识别的准确率。
可以说能否进行有效的细化,已成为识别系统成功与否的关键所在。
对一个图像细化之后的骨架必须能够反映出原来物体的形状特征才具有实用价值。
因此,一个好的细化算法一般需要满足以下要求:
①保留物体形状的连通性,可以是4向连通也可以是8向连通。
②无过度腐蚀,即保留位置重要的点(如线段终点)。
③骨架图像尽可能是原图像的中心线。
④骨架必须与原物体是拓扑等价的。
⑤抗噪声性能好,出现在物体边界上的噪声不应该过分影响细化结果。
细化分成串行细化和并行细化,串行细化即是一边检测满足细化条件的点,一边删除细化点;并行细化即是检测细化点的时候不进行点的删除只进行标记,而在检测完整幅图像后一次性去除要细化的点。
经典的图像细化算法有Hilditch算法,Pavlidis算法和Rosenfeld算法等。
Zhang细化算法[2]是目前应用最为普遍的方法之一,是在上面三种细化算法的基础上演变而来的,也是本系统所采用的算法。
每当人们开发出一种新的算法时,也经常引用Zhang细化算法来与新算法进行比较,以评定新算法的优劣。
定义边界点是本身标记为1而其8向连通邻域中至少有一个点标记为0的点。
以边界点为中心的8向邻域,即中心点为p1,其邻域的8个点绕中心点顺时针依次进行标记,如图所示。
首先标记同时满足下列条件的边界点:
①连接数=1。
②2—6个零像素。
③p2,p4,p6中至少有一个像素是背景像素(即白色点)。
④p4,p6,p8中至少有一个像素是背景像素。
在一次迭代运算后,删除被标记的像素点,然后进行另一个迭代,其步骤和第一次迭代相同,只是把上述③、④条件替换成如下的形式:
③p2,p4,p8中至少有一个像素是背景像素。
④p4,p6,p8中至少有一个像素是背景像素。
第二个迭代后,同样删除所有被标记像素。
然后转入下一轮循环,直到两次迭代中均无像素被删除时,算法结束。
3.3.算法修正
由于图像边界的不规则和骨架对噪声的敏感,使抽取骨架存在大量的畸变.从而使数据拟合和矢量化跟踪的结果不能正确表示原始信息,严重地影响到今后对图像的识别质量。
对此,一般的修正策略是对给定骨架的两个连通成分,考查它们之间的距离与某一域值的关系,以决定这两个连通成分的连接性。
较为常用的法订:
3.3.1.固定视口法
为校正骨架化畸变,可设定固定的视口,根据固定视口各边线出口的情况来判别各连通成分可否连接。
如图所示,若选视口一,则因为有两条线出口,故可以认为连通成分A和C合并,若选取为视口:
二,那么三个连通成分A、B、C都合并。
综上分析,要找到一个满足各种可能情况的固定形视口是比较困难的,固定视口的大小直接影响到连通成分的连接合并和后期的模式识别。
3.3.2.内接圆法
该修正方法如图所示,以连通成分A的端点a和另一连通成分B的端点b分别为圆心,r为半径作圆,如果两圆相交,则端点a和b连接合并,连通成分A和B就合二为一,否则,认为是不同的连通成分,不作连接合并。
由此可见,圆半径的选择是该方法成功的关键,在圆半径选择不当时,会使连通成分错误地增加或减少,最终将导致整个识别错误而无法再现原始信息。
3.3.3.自适应校正算法
该算法分两步:
①基于知识的扩边过程,该过程是将视口从小到大逐渐扩大,直到能识别连通成分的可连性为止,在扩边的过程中可以得到视口边框大小、边线出口个数及位置、边框内连通成分的端点数及它的位置等信息。
②修正过程,由扩边过程所得到的有关信息计算出连通数和出口数,再据此分类合并。
该算法的关键在于知识的获取,而知识的获取则需要根据不同的处理对象。
在大量分析细化骨架数据的基础上,综合各种可能的情况,归结得出具有普遍适用意义的规则和方法,显然,这样的知识是基于归纳的,不可能适合于某些复杂的情况。
基于以上三种算法的优劣性比较,本文采用内接圆法对骨架图像进行修正。
这种算法的难点在于圆半径不易确定,如果半径选择过大,则可能将不应该合并的连通成分错误地合并,如果半径选择过小,则可能使本应合并的连通成分不能合并。