APP下载

基于字符特征的数字字符识别∗

2019-10-08郝学智张爱梅姚鹏威吴国栋

计算机与数字工程 2019年9期
关键词:字符识别字符区分

郝学智 张爱梅 姚鹏威 黄 晓 吴国栋

(郑州大学机械工程学院 郑州 450001)

1 引言

数字字符识别是光学字符识别(OCR)的一个重要分支[1],在车牌号码、名片、身份证号码、银行卡号、快递号、支票号码、邮政编码以及其他编号识别方面具有重要的实用价值和广阔的市场潜力。因此吸引了大量的研究人员进行深入的研究,并提出了不少识别算法。在有关数字识别的大型系统中,数字识别大部分采用BP算法[2](神经网络算法)或者SVM算法(支持向量机算法),但这些方法计算量比较大,为实现高效率对硬件要求较高,实现起来还非常复杂,且在纯数字识别的系统中显得大材小用,而很多纯数字识别算法需要大量的预处理运算,包含二值化、去噪、均衡化、细化、规整、轮廓提取、字符切割、模板匹配、分类器训练[3]等,使得识别的运算量成倍增加。

数字字符的识别是光学字符识别中比较简单的一种[4],因为字符个数少,只有10个,可以利用字符间不同的特征对其进行分类,按类型逐级识别,直到识别出单个字符。因此只要找出一种能将10个字符分别区分开的特征组合,就可以将数字字符识别出来。作者提出了一种基于字符投影特征进行数字字符定位识别算法。该算法只需对图像进行简单的预处理,就可提取特征进行识别。识别过程的框图如图1。

2 预处理和识别算法

2.1 预处理

这里进行的预处理,主要便于后面特征提取中进行字符特征的提取和区分向量的分类[5]。分两步:

1)读取图像并对字符图像进行二值化处理,由于字符图像的前景与背景相差比较大,可以直接设定阈值进行二值化;

2)使用Hough变换对图像进行倾斜校正[6],使用高斯平滑滤波器进行滤波,去除噪声。

图1 数字识别原理框图

经过预处理后,数字字符图像显示结果如图2所示。

2.2 识别算法

2.2.1 图像投影

图像对应方向上的投影[7],就是在该方向取一条直线,垂直于该直线(轴)的图像上的表示字符像素在该轴该位置的射线积分。图像投影的数学关系如图3所示,令 f( )x,y表示图像函数,穿过的一条线称为射线。沿某一射线的积分称为射线积分,而射线积分的集合则组成投影。从坐标原点向射线做一垂线,以此垂线作为新坐标轴t,并构成新坐标系(t,s),(t,s)坐标系由(x,y)坐标系旋转Θ角得到,两坐标系关系如式(1):

图3 图像在角度为Θ方向的投影PΘ(t)

射线积分表达式如式(2):

图4 字符垂直投影

图5 字符水平投影

基于图像投影的数字字符定位就是将预处理后的图像映射成这种特征[8]后,基于这种特征判定图像中的字符位置(坐标)。这样就完成了字符的定位工作,便于下一步识别。

2.2.2 “区分向量”识别

区分向量定义为,特定向量与字符相交并将相交次数作为统计特征,对数字字符进行区分辨别的向量称之为区分向量。

关于区分向量基于字符投影特征对字符进行辨别,在数字图像处理中,左上角为坐标原点,水平向右记为X轴正方向,竖直向下记为Y轴正方向。在垂直方向Xmax位置,沿Y轴正方向,第i次颜色变换记为 yi,i=1,2,3,4……2n-1,2n;在水平方向Ymax位置,沿X轴正方向,第j次颜色变换记为xj,j=1,2,3,4……2n-1,2n。其中 y2i-1,y2i即第i行字符所在行的竖直方向的位置,x2j-1,x2j即第i行、第j个字符的水平方向的位置。假设第i行第j个字符是数字5,如图6所示为字符位置。字符位置确定即定位完成后便于进行后续字符的识别。

图6 第i行第j个字符位置示例

第i行、第j个字符的识别需要三个区分向量,则区分向量所在位置的表达式分别为

其中,式(4)、(5)中 γ1(i,j)、γ2(i,j)为第i行、第j个字符水平方向的区分向量,式(6)中γ3(i,j)为第i行、第j个字符竖直方向的区分向量。对每个数字字符同时使用水平、垂直区分向量与字符进行相交次数统计,相交次数统计结果分将数字字符为五类,如表1第二列所示:若水平相交次数分别为2、2,而竖直相交次数为2,则为数字为0,单独一类,直接可得出识别结果;若水平相交次数分别为1、1,而竖直相交次数为1,则数字为1或7,精确识别结果待后续辨识;若水平相交次数分别为1、1,而竖直相交次数为3,则数字为2、3、5其中之一;若水平相交次数为2、2,而竖直相交次数为3,则直接识别为数字8;若水平相交次数分别为2、1,而竖直相交次数为3,则直接辨别为数字9;通过这个结果可以直接辨别出数字字符0、8和9,对于剩余两类同时记录水平方向区分向量γ1(i,j)、γ2(i,j)与字符穿越颜色奇数次变换位置的分别记为X1(2i-1,k)、X2(2i-1,k)其中k=1、2(区分向量与字符相交颜色奇次变换最多两次),并用 X1(2i-1,k)、X2(2i-1,k)与 γ3(i,j)作比较,得出相交位置在γ3(i,j)左侧还是在γ3(i,j)右侧。即用如下表达式进行辨别:

在1,7这一类其中 X1(2i-1,k)、X2(2i-1,k)与 γ3(i,j)相减均小于0的确定为数字1,X1(2i-1,k)、X2(2i-1,k)与 γ3(i,j)相减均大于0的确定为数字7;同样2、3、5用此方法也可以轻易辨别。

至此,10个数字字符已经全部辨识出来。区分向量结合 X1(2i-1,k)、X2(2i-1,k)与γ3(i,j)大小比较进行 辨 识 ,过 程 见 表 1( 在 X1(2i-1,k)-γ3(i,j)、X2(2i-1,k)-γ3(i,j)中,0表示区分向量与字符的相交位置在左侧即满足式(7),1表示在右侧即满足式

(8),对已识别出的字符,不再标出)。

2.2.3 识别算法

根据表1可得字符识别的算法如下。

1)求水平和竖直区分向量分别与数字字符的相交次数

表1 区分向量进行字符识别过程

如果相交次数为 2、2、2,则为数字 0,直接退出;

如果相交次数为1、1、1,,为数字1或7之一,到第2)步;

如果相交次数为1、1、3,则为数字2、3、5之一,到第2)步;

如果相交次数为 2、2、3,则为数字 8,直接退出;

如果相交次数为 1、2、3,则为数字 9,直接退出;

2)相交位置位于竖直区分向量γ3(i,j)左右测判断

区分向量与字符相交次数为1、1、1,若相交位置均位于 γ3(i,j)左侧,即为0、0,则为数字1,退出;

区分向量与字符相交次数为1、1、1,若相交位置均位于 γ3(i,j)右侧,即为1、1,则为数字7,退出;

区分向量与字符相交次数为1、1、3,若相交位置均位于 γ3(i,j)右侧,即为1、1,则为数字3,退出;

区分向量与字符相交次数为1、1、3,若 X1(2i,k)小于 γ3(i,j),而 X2(2i,k)大于 γ3(i,j),即为0、1,则为数字5,退出;

区分向量与字符相交次数为1、1、3,若 X1(2i,k)大于 γ3(i,j),而 X2(2i,k)小于 γ3(i,j),即为1、0,则为数字2,退出。

3 算法实现

3.1 字符投影

数字图像,是以二维数组形式表示的图像,其数字单元为像元[9]。又称数码图像或数位图像,是二维图像用有限数字数值像素的表示。由数组或矩阵表示,其光照位置和强度都是离散的。数字图像是由模拟图像数字化得到的、以像素为基本元素的、可以用数字计算机或数字电路存储和处理的图像。对图像的处理的根本就是对二维数组的换算过程。

原图像经过预处理后变为一个仅有0、1两个元素的二维数组,对图像的所有操作转变为对一个数组或者矩阵的操作[14],从根本上简化了图像的后续处理过程。

水平投影,对于预处理后的图像,进行从上到下地扫描[10],如果像素点的像素值为零(经过二值化后,代表字符的像素点的像素值为零,如若为一,则反之),则相对应列的投影位置零像素加一,本质就是旋转角Θ=π时图像的射线积分。转化为数字问题,就是对一个矩阵的操作,遍历矩阵每一列,寻找所对应列数值为0的个数,然后在对应位置重新绘制投影的过程,即Θ=π时图像的射线积分外在表现形式。

3.2 字符定位

1)单行统一大小的字符

对预处理后的图像,对整行数字字符直接进行垂直方向和水平方向的投影[11],水平投影直接可以判定每个字符的水平位置,垂直投影确定该行字符的竖直位置,即该行每个字符所在的竖直位置,水平和垂直投影相互配合即可判别出字符的位置。

2)单行非统一大小的字符

对预处理后的图像,数字字符首先进行水平方向的投影,根据水平方向投影,确定每个字符的所的水平位置,进而对每个字符再进行单独垂直投影,每个字符水平投影和垂直投影相互配合即可判别出该字符的精确位置,即转变为1)所述的情况。

3)多行统一大小的字符

对预处理后的图像,数字字符首先进行垂直方向的投影,确定字符所在行的位置,对每行字符再进行水平方向投影,然后就转变为1)所述情况进行后续处理。

4)多行非统一大小的字符

对预处理后的图像,数字字符首先进行垂直方向的投影,确定字符所在行的位置,对每行字符再进行水平方向投影,然后就转变为2)所述情况进行后续处理。

5)杂乱无章的字符

此算法对于杂乱无章的数字字符,还不能有效的精确定位字符的位置,所以此算法还具有一定的局限性,并不适用于此种情况的数字字符识别。

3.3 字符的识别

区分向量为本文定义的一个量,定义为特定向量与字符相交的次数作为特征[12],对数字字符进行区分辨别的特殊向量称为区分向量。目的是为了用更加简单明了的方式识别数字字符,提高程序的鲁棒性[13]。

1)区分向量的位置计算

经过大量的统计分析,排除不同字体的干扰,竖直区分向量位置确定在字符所在水平位置的二分之一处;水平区分向量位置分别确定在字符所在竖直位置的四分之一和四分之三处。

2)区分向量与字符相交次数及位置

在字符定位完成,区分向量的位置确定后,在每个字符相应位置、确定的方向分别做区分向量,区分向量与相应字符相交,每相交一次便计数一次。区分向量与字符相交的本质,即遍历区分向量所在位置的字符相应行或列只有0、1两个元素的一维数组,形似向量一样与相应字符相交,并且记录水平区分向量中像素值由1转变为0的奇数次坐标位置和垂直区分向量的坐标位置。

水平区分向量与字符相交的奇数次坐标位置的横坐标,与垂直区分向量的横坐标作比较,如果水平区分向量与字符相交的奇数次坐标位置的横坐标小于垂直区分向量的横坐标,即水平区分向量与字符相交位置位于垂直区分向量左侧,否则位于右侧,这就实现了对字符的区分和辨别。

4 结语

作者使用Visual Studio调用Intel的开源视觉库Open Source Computer Vision Library(OpenCV)对该算法进行了模拟[14],通过对大量字符的识别,证明了本算法的可行性和正确性[15]。区分向量的提出和使用提高了程序的鲁棒性,降低了数字字符识别的难度,此算法不仅适用于单行数字、多行数字、统一大小或非统一大小的数字,而且仪表盘数码管中数字字符识别依然适用。因此,本算法也可用于其他的计算机识别中[16]。

猜你喜欢

字符识别字符区分
灵活区分 正确化简
论高级用字阶段汉字系统选择字符的几个原则
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
怎样区分天空中的“彩虹”
——日晕
怎么区分天空中的“彩虹”
区分“我”和“找”
融合字符及字符排列特征的铭牌识别方法
一种基于OpenCV的车牌识别方法