摘 要: 针对目前脱机手写字符识别计算量大,对字体字形都有一定的要求,提出了主要以字符矩阵中01变换频率为基础,从字符的整体和局部特征出发进行分析识别的算法。此算法缩减了计算量并对所需局部信息进行放大,在一定程度上避免了传统采用分类器方法的错误传导,提高了字符的识别率,易于实现移植和扩展。
关键词: 字符识别;脱机识别;手写字符
0 引言
目前计算机对手写字符识别主要分联机和脱机两种方式。联机方式目前主要采用的是联机笔画顺序识别[1]。脱机方式目前研究以计算机常用字体为主的识别主要采用方式模板匹配法[2]、基于结构特征算法[3]、基于神经网络算法[4]和基于支持向量机[3]等。前两种算法算法本身对字符比较敏感,对手写体特征笔画定义的差距造成识别率下降;后两者提高识别率则需要大量计算。
1 LVc算法
字符主要由竖线、横线、半封闭弧线、封闭线笔画构成,笔画简单特征少,而手写半封闭弧线经常和横线竖线进行相互替换,加上封闭完整性的缺失增加了识别难度。因此本文提出LVc算法,提取文本中定义字符和数字的频率特征和细节特征,并与已知标准字符提取的特征相比较、识别。
1.1 预处理
图像矩阵经过降噪、二值化后得到,并把矩阵利用式(1)转换成矩阵Am×n,其中m=p+2,n=q+2。
1.2 基本计算
1.2.1 频率的相关计算
当对Am×n第x行扫描时,若ax,y≠ax,y+1,则称存在一次变化,x行总变化次数称为x行水平变化频率,记做lv(x),如式(2)所示。同理可得第y列的垂直变化频率hv(y)。
其中,x=1,2,3,…,m。
若相邻的,则称它们属于同一个水平频率组Lgt(t=1,2,…),其水平变化频率为Lgtlv,该组所拥有行数为Lgnt,如式(4)所示。
其中,
同理可得垂直频率组Hgt(t=1,2,…),相关数据设其所得垂直变化频率为Hgthv,所拥有列数为Hgnt。
1.2.2 行(列)累计度
字符中各行(列)中非0像素点的多少称为该行(列)累计值,如式(5)所示。
同理可得第y列的累计值。
为了对笔画的长短有所区分,这里用Pilel(x)来表示:
横向长笔画数用Spsl表示:
同理可以得到相应区域的列累计度和纵向长笔画数。
1.2.3 笔迹粗细
当用累计值除对应频率时,可得字符的笔迹粗细Handw:
同理可得列笔迹的粗细Handwv。
1.2.4 频率的修正
字符边缘的“毛刺”现象对频率影响非常严重。若在x行中存在n个符合条件的区域,其中,则令lv′(x)=lv(x)-n。同理可以对垂直频率进行修正。
手写中经常出现笔画的起笔或末端的弯钩现象如6、C,给下一步有效频率组判断带了一定的干扰。若某个水平频率组中满足,
1.3 英文字符的基本特征提取
1.3.1 有效变化频率组
若某水平频率组,则称其为有效水平频率组efLgt,其水平频率,拥有的行数设为efLgtn;一个字符所拥有的efLgt数设为numLg。
计算有效垂直频率efLgt,首先确定其测试区域:若numLg=1,则需根据垂直有效频率判别式求得efLgt;若numLg≥2,存在efLg1其x∈[a,b]和efLg2其x∈[c,d],则取Did=下部和Diu=上部,如图1所示进行垂直有效频率判别式分析计算。
垂直有效频率判别式为:若字符中Hgt的Hgnt≥,则认为其所在Hgt组为有效垂直频率组;若字符中Hgnt<,则选max(Hg1hv×Hgn1,Hg2hv×Hgn2,…)(t=1,2,…),其中Hgnt≥2Handw最大值所在组为有效垂直频率组。
1.3.2 焦点集中区域
一个字符中往往存在某个有效区域其像素点较为集中,称之为焦点集中区域。确定集点集中区域需先以水平有效频率为划分基础再进行计算。
若numLg=1,设su为字符垂直有效频率的上部像素点的合计数:
同理知下部非0点的合计数sd。
满足时,则认为字符垂直方向上部区域焦点集中,反之亦然。
若numLg≥2,则需按垂直频率的区间划分并根据式(10)计算判断。
计算水平方向的焦点集中区域时,选定其垂直方向的焦点集中区域,并以其区域内的有效垂直频率组的中线为分界线依据式(10)计算。
1.4 字符的细节检测
1.4.1 有效空频组检测
把字符中存在间断情况作为其字符的细节特点加以考察。
若存在Lgt-1、Lgt、Lgt+1(1<t<m)连续3个相邻的水平频率组,若满足Lgt-1lv≠0∩Lgt+1lv≠0∩Lgtlv=0,且Handw≥Lgnt≥min(Lgnt-1,Lgnt+1),则认定Lgt组为有效空频组Lgo。
1.4.2 直线、曲线、波浪曲线检测
字符6和b、8和B等单从频率上无法区分,需对边缘部分求其平均曲率加以区分,如式(11)所示。
其中,为对应切线的转角,为对应弧线的长度。
若字符存在垂直焦点集中区域,则只需求此区域外侧平均曲率即可;否则计算两侧。上下两侧的有效水平频率组的中线外侧区域为计算区域,利用式(11)~(12)计算。
字符3和B的右侧曲线称为波浪曲线。若在计算字符时,其侧面存在垂直频率组t符合Hgnt≥2Handw∩Hgthv≥6,则认为其侧存在波浪曲线。
1.4.3 封闭性检测
如果字符numLg=1,则以字符整体为测试区域进行检测:
,成立,则此区间为上部封闭,否则此区间非上部封闭。同理判断其他区间的封闭性。
如果numLg≥2,则根据求有效垂直频率的区域划分进行封闭性计算。
1.4.4 相交检测
书写往往会造成两条线段平行和相交的近似,如A和H。因此当字符存在efLgtlv=2且两侧Sstl=straight,其待测区间的两线段的斜率为k1、k2,设相交检测结果为Sa:
当Sa=intersect,则认为其两条线段相交,同时其相交方向可以认为近似封闭。
1.5 相似度比较
1.5.1 编码
通过计算,得到了一系列数字构成测试值编码Rand,如图2所示。
1.5.2 相似度计算
计算采用左对齐不够补0的策略,计算方法如式(15)所示。其中,Rand为测试值编码,Stan为已有标准字符编码。
1.5.3 LVc算法实现
该算法主要根据字符的频率进行分类,在确定字符的水平有效分组的基础上,再计算其有效垂直频率、封闭性、视觉焦点集中区域等。根据计算得出的数值排列成一组数字代码表示字符特征,并把此数字特征代码与已知标准库中代码串相比较,求出的最大相近字符即识别输出。算法流程图如图3所示。
2 实验及其结果
由于字母o和数字0以及印刷体的字母l和数字1特征不明显,这里不做具体讨论。
实验1 字符的频率和累计度
对原始图像进行滤波和二值化等预处理,如图4所示。图5所示为图像的频率特征,其中图5(a)是原始状态下得到的频率,图5(b)是经过修正后得到的频率,可以明显看出修正后的字符的频率特征更加明显。图6是进一步对焦点集中区域进行的频率特征检测。
实验2 字符的识别率
实验以计算机黑体字库为基础字库并根据实际情况对其字体库进行了适当扩充。实验从UCI字符库和MNIST数字库选取了其中7 200个字符。分别采用SUV算法[5]、非线性PCA神经网络算法[6]与本文LVc算法对2 240个字符进行测试,结果如表1所示。
从表1可以看出,本文算法的正确率达到96.83%,在3种算法中最优。
3 结论
本文提出的算法计算方法简单,计算速度快,易于实现。由于算法采用了比值法,避免了传统分类结构存在的错误传导缺陷,提高了识别率,避免了模板匹配中对标准字符的依赖,可用于多种计算机字体并对手写字体倾斜度有一定的适应性,且易于移植和扩展。
参考文献
[1] 姚正斌,丁晓青,刘长松.基于笔划合并和动态规划的联机汉字切分算法[J].清华大学学报(自然科学版),2004,44(10):31-36.
[2] KHOTNAZAD A, HONG Y H. Invariant image recognition by Zernike moments[C]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1990,12(5):489-497.
[3] SCH?魻LKOPF B, BURGES C J C, VAPNIK V. Extracting support data for a given task[C]. Proceedings of 1st International Conference on Knowledge Discovery & Data Mining, Menlo Park, CA:AAAI Press,1995:252-257.
[4] 武强,童学锋,季隽.基于人工神经网络的数字字符识别[J].计算机工程与应用,2003,19(14):112-114.
[5] 支持向量机入门[EB/OL].[2014-10-31].http://www.docin.com/p-46942684.html.
[6] 孙光民,张程,王鹏,等.基于非线性PCA神经网络的手写体字符识别[J].北京工业大学学报,2007,33(9):915-919.