基于模板匹配和支持向量机的点阵字符识别研究

2020-02-18 15:19罗晓曙蒋品群
计算机工程与应用 2020年4期
关键词:字符识别字符灰度

马 玲,罗晓曙,蒋品群

广西师范大学 电子工程学院,广西 桂林541004

1 引言

食品、药品的生产日期及有效期一般是使用点阵字符打印在包装袋上,当发生安全事故时,很容易溯源,并找出故障原因并追责,因此研究与开发自动点阵字符识别系统不仅可以有效保证食品、药品安全,而且可以减少质量控制过程中所需的劳动力成本。

目前针对基于点阵字符的识别研究,主要分为三种方法:基于人工神经网络的方法、基于统计学识别的方法和基于匹配识别的方法[1-3]。由于人工神经网络一般需要大量样本,很难在样本数据有限及识别环境复杂的情况下取得很好的识别效果。例如,文献[1]采用卷积神经网络对易拉罐点阵字符进行识别,文献[2]采用基于HALCON的乳制品箱体点阵字符进行识别,这两种方法都只针对原始采集到的图像,且只包含点阵字符,而不包含其他非点阵字符信息,但是实际生活中产品外包装上的信息一般包括点阵字符信息和非点阵字符信息,因此这两种方法有一定局限性。那么,基于统计学识别的方法和基于匹配识别的方法就成为目前点阵字符识别研究的热点。文献[3]提出了一种针对LED点阵文本检测与识别的方法,考虑了复杂背景下的点阵字符识别,对本文有一定的参考价值,但是该方法的总体识别率不高。与以上方法不同的是,本文提出了一种基于模板匹配和支持向量机(Support Vector Machine,SVM)的组合识别方法。本文方法与传统字符识别方法相比考虑了两点实际问题:第一,充分利用点阵字符的离散性质,在包含其他非点阵字符信息的图像中自动定位出点阵字符区域,这对于复杂背景下的点阵字符识别具有一定意义。第二,考虑到点阵字符识别不同于一般的连续字符识别,单一方法对点阵字符识别率的提高效果甚微,故提出组合方法。

传统的点阵字符识别方法,对于图像中包含连续字符等情况考虑得较少,一般采集到的图像只包含点阵字符信息,如文献[1]和文献[2],这不符合实际情况。本文考虑点阵字符的非连续性质,通过采用组合识别方法,不仅提高了字符定位的准确性,而且提高了复杂环境下的字符识别率,且识别结果的鲁棒性较好。实验结果表明:在保证实时性的前提下,该组合算法的识别率达到96.10%,基本满足工业场合的应用要求。

2 组合的点阵字符识别方法

本文提出的组合点阵字符识别方法主要流程如图1所示,以伊利盒装纯牛奶顶面的字符图像为例进行研究。首先读取伊利盒装纯牛奶顶面的字符图像,因为读取的图像会有噪声、非均匀光照、倾斜等问题,所以先要对其进行预处理。然后,对预处理后的图像进行点阵字符的定位和分割。最后,分割后得到的图像分别进行灰度模板匹配判定和特征模板匹配判定,继而得到两个判定结果。若判定结果相同,则输出字符识别结果;若判定结果相异,将这两个结果送给SVM进行判定,得到最终识别结果。下面介绍具体识别过程。

3 点阵字符识别的实现过程

3.1 图像预处理

对采集到的伊利盒装纯牛奶顶面的RGB图像转换为灰度图像,如图2(a)所示。由于采集的图像存在非均匀光照影响,则需要在灰度图像上进行底帽变换,以便获得的二值图像不丢失点阵字符信息。底帽变换定义为闭操作图像减去图像本身,即:

图1 识别流程图

其中,f为原始图像,b为结构元素,Bhat为经过底帽变换后的图像。

得到底帽变换后的图像,如图2(b)所示。然后,本文采用最大类间方差法(Otsu),得到二值图像如图2(c)所示。该算法是基于自适应阈值的二值化方法,利用灰度特征将图像划分为目标和背景。如果类间方差较大,则目标与背景之间的差异更大。因此,使用Otsu算法在图像二值化中获得显著效果[4]。图2(c)中待识别点阵字符的白色像素为目标像素。该二值图像较好地保留了点阵字符的完整性,为后续的字符分割工作做好了准备。

图2 预处理图像

3.2 图像分割

对于得到的二值图像,需要提取包含点阵字符信息的图像区域,以便提取单个字符。分割的准确性越高,字符识别效率就越高。本文图像的分割按以下两步进行。

3.2.1 带有噪声的图像行分割

一个点阵字符是由一个个离散小点组成的,具有离散性质,与一般的连续字符相比,相邻的点阵之间有一定的空隙,如图3红色方框中的感兴趣区域所示。一般采用的连通分量分析、滑动窗口、基于水平或垂直投影等方法都不能直接用于分割点阵字符图像,因为这些方法都是假定字符是具有整体性的。

文中提出使用点阵字符的离散性质来解决其定位及分割问题。如图3所示,图像中有点阵字符、连续字符和噪声,这里将非点阵字符部分视为噪声。考虑点阵字符是由一个个离散小点按照一定规律排列而成的字符,可以看到,组成点阵字符的离散小点的连通面积在小噪声连通面积S1和连续字符连通面积S2之间。故将连通面积在(S1,S2)之外的像素进行删除,得到的图像如图4所示。这一步操作可以减少提取目标像素点时的噪声影响。

图3 点阵字符区域

图4 进行连通域处理后的图像

如图4所示,非目标像素中也有一些具有与点阵字符类似的区域。因此,需要进一步处理,以分割出最终点阵字符区域。因为任何字符通常都是在水平方向上展开,所以先使用3×24的水平结构元素对二值图像进行膨胀。这样,白色像素区域就会连接起来,形成多个连通域,如图5所示。较小的矩形区域属于非点阵字符信息,是需要删除的噪声。然后,对图5中的矩形区域进行连通域面积计算,连通域面积较高的两个区域作为字符点阵区域,其他区域可视为噪声删除,如图6所示。

图5 膨胀连通域图像

图6 两个较大连通域

考虑牛奶盒上的点阵字符在打印过程中会发生随机角度倾斜的现象,如图7红色方框中的点阵字符所示。对于此类图像,在找到两个连通域面积最高的区域后,采用Hough变换[5]进行直线倾斜角度计算,然后采用双线性插值算法将倾斜的点阵字符区域矫正为水平方向。接着,采用两个连通区域的最小矩形的方法,找到这两个连通域的边界框。最后,使用计算出的边界框从图2(c)中裁剪包含完整点阵字符的原始二值点阵字符,得到行分割点阵字符图像,如图8所示。

图7 点阵字符倾斜

图8 点阵字符行分割图像

3.2.2 字符分割

经过以上处理步骤以后,可以得到两行待识别的点阵字符图像。由于点阵字符的离散性,及在打印过程中点阵字符会出现少量点缺失、少量墨水渗出等现象,这些会对字符正确识别产生影响,因此需要将得到的图像进行形态学处理。形态学的基本思想就是用具有一定形态的结构元素,去度量和提取图像中的对应形状,以达到对图像分析和识别的目的[6]。本文实验中使用3×1的垂直元素来膨胀图8点阵字符行分割后的图像,以增加字符质量。

然后,使用垂直投影法对膨胀后的行分割图像进行单个字符分割。垂直投影可以简单地定义为一个列向量,包含每行中存在的白色像素的数量,即:

图9展示了图2(a)中点阵字符行分割后膨胀的垂直投影。

图9 行字符垂直投影

可以发现字符之间用空格分隔,因此该区域中的垂直投影为0。从图9中可以看到有11个谷,利用这种特性进行逐个字符分割,得到10个单个字符。分割后得到的字符大小不一,将其统一大小为42×24,如图10所示。

图10 分割后单个字符图像

3.3 模板匹配判定

3.3.1 字符库的建立

模板匹配是基于测试图像和模板图像之间的某些相似性来识别字符的方法。首先为每个类别建立标准模板库,模板的数量可以是一个或多个,这样可以增加模板特征的差异性。然后将测试字符与每个类别的标准模板进行比较,以获得基于相似距离或相关系数的最佳匹配模板[7]。本文的模板库是提取实验中分割后得到的单个字符图像,其大小也为42×24,如图10所示部分字符模板库。共收集约500个字符,分为14类:数字“0~9”,特殊字符“:”,字母“A~C”。

3.3.2 基于灰度的模板匹配判定方法

基于灰度的模板匹配方法是采用统计相关的方法来求待识别字符和模板库字符的匹配相关程度,通过相关函数R确定[8],将待识别字符和存储在模板库中的字符进行如式(3)的计算。选择具有最相关值的字符作为该字符的最佳匹配字符,得到识别结果Out1。

3.3.3 基于特征的模板匹配判定方法

基于特征的模板匹配方法,一般提取的特征有点特征、线特征等,将这些特征与模板库中的字符进行特征匹配,得出识别结果。文中的实验是将字符分割成由40个网格组成的形式,横向上分为8份,纵向上分为5份,取每个网格中字符像素的个数即白色像素的个数,将所有值排成一列形成40维[9]特征向量,如图11所示。根据网格特征判定待识别字符,得到识别结果Out2。

图11 网格特征

3.4 支持向量机

支持向量机是一种监督机器学习算法,能找到全局最优解,很好地避免了过拟合的发生[10],主要用于模式分类和非线性回归。本文采用支持向量分类模型(CSVM for Classification,C-SVC),它是一种比较常见的二分类支持向量机模型。具体形式如下:

(1)设已知训练集:

其中,xi∈Rn,yi∈{1,-1},i=1,2,…,l;l为训练样本总数;n为样本空间维数。

(2)选取适当的核函数K(x,x′)和适当的参数C,构造并求解最优化问题:

使得:

得到最优解:α∗=(α。本文核函数采用径向基函数:K(x,x′)=exp(-γ‖ x-x′‖2),γ>0。

(3)选取α∗的一个正分量0<α∗i<C,并据此计算阈值:

(4)构造决策函数:

SVM的二分类模型是先制作训练集,并将每个样本对应的类别号做成类别集,输入训练样本和类别号,进行SVM训练,得到每种组合的SVM的二分类模型。在基于灰度模板匹配和特征模板匹配判定结果相异情况下,即Out1≠Out2,将相异识别结果送给SVM进行识别。SVM将待识别字符分类为最接近的匹配类,并返回类标签,为最终识别结果Out。

3.5 本文方法的识别过程及识别结果

输入:原始采集图像In。

输出:原始图像中每一个待识别点阵字符的识别结果Out。

(1)将原始采集图像In进行灰度化、底帽变换、Otsu二值化处理,得到预处理后的图像I1,其中目标像素为白色像素点。

(2)将I1图像中联通面积小于S1且大于S2的噪声去除,得到图像I2。

(3)用3×24结构元素对图像I2进行膨胀处理,取出两个连通域面积较大部分的图像I3。

(4)采用Hough变换进行倾斜角度α计算,并给定阈值α,若|α|>θ,则进行倾斜校正,得到图像I4。

(5)计算I4图像中两个联通面积的矩形边界坐标,按照坐标位置从I1图像中分割出两行点阵字符I5、I6。

(6)采用垂直投影法,将行字符I5、I6进行单个字符切割,得到一个个的单个字符。

(7)将单个字符采用基于灰度的模板匹配算法进行识别,得到识别结果Out1。

(8)将单个字符采用基于特征的模板匹配算法进行识别,得到识别结果Out2。

(9)若Out1≠Out2,则将Out1和Out2送给SVM进行判定,得到最终识别结果Out。若Out1=Out2,则识别出单个字符。

如图12所示的识别结果,蓝色方框内的字符是识别结果Out1,绿色方框内的字符是识别结果Out2,红色方框内的为最终识别结果Out。通过观察可以看到,一般正常点阵字符可以得到正确识别,例如数字“2、1、8”等。但数字0,由于在喷码过程中出现点阵字符少量的点缺失,采用本文方法,先使用基于灰度的模板匹配识别结果为“C”,再使用基于特征的模板匹配识别结果为“0”,最后使用SVM识别结果为“0”,做出正确识别。这表明本文方法对点阵字符图像识别的鲁棒性较强。

3.6 基于模板匹配和支持向量机的算法时间复杂度分析

对于模板匹配算法而言,假设图像尺寸为n×n,那么循环的次数由图像的大小决定,对整幅图像的所有像素完成一次遍历,故需要执行n×n次循环操作,总体的算法复杂度为O(n2)。标准支持向量机的时间复杂度为O(n3)[11]。故本文提出的算法时间复杂度是:

图12 识别结果

由上式可以看出,本文提出的组合算法相比于目前常用的单一模板匹配算法复杂度略高,相比于SVM算法并没有增加其时间复杂度,且本文提出的算法识别准确率均高于这两种单一算法。

4 实验和分析

4.1 实验平台及数据库

本文所有算法都是使用Matlab R2016a进行仿真实验的。不同牛奶外包装盒点阵字符设计规则不同,但是一般的规律为第一行字符为产品的生产日期和生产流水号,第二行字符为生产时间及序号。生产日期和生产时间为“0~9”和特殊字符“:”,共11类字符。由于生产厂商不同,生产流水号则不同,一般为“A~C”中任意字母。

实验中采集150幅牛奶外包装盒顶面图像,每个图像点阵字符共20个字符左右,共计3 000个字符。这150幅图像,包含外包装盒点阵字符在不同背景、不同角度倾斜及拍摄到的原始图像具有不同尺寸等情况下收集,如图13所示。

图13 测试图像部分示例

4.2 实验结果及分析

4.2.1 点阵字符定位结果对比

点阵字符的定位是实现点阵字符正确识别的关键步骤。目前,字符定位的主要方法有:基于投影的方法、基于边缘检测的定位方法、基于数学形态学与连通域的定位方法等[11]。本文利用Matlab R2016a软件按照图14所示的流程图进行点阵字符定位。

图14 点阵字符定位方法流程图

图15是本文方法与其他两种定位方法的定位结果对比图。从图15中可以观察出,第二列是文献[12]的定位结果,定位图像中带有噪声,且定位位置错误。第三列是文献[13]的定位结果,结果中带入了其他不需要的连续字符和噪声。以上两种方法均给下一步进行点阵字符的准确识别带来困难。第四列是本文方法的定位结果,定位准确且未带有噪声。

图15 点阵字符定位结果对比

对于本文实验中所有点阵字符的定位效果,使用定位准确性来进行评价。

由图16的对比结果可以看出,采用本文提出的定位方法,定位准确性均高于其他两种方法。因此,本文提出的利用点阵字符离散性质的定位方法能够在复杂背景下很好地自动定位到点阵字符位置,定位准确性高。

图16 不同方法字符定位准确性比较图

4.2.2 点阵字符识别准确率对比

为了验证本文组合识别方法的有效性,采用文献[14]和文献[15]的字符识别方法,与本文方法进行对比,字符识别准确率如图17所示。

图17 不同方法的字符识别准确率比较图

前两种算法都仅考虑了连续字符的特征,而本文采用的三种识别方法的组合方法,综合考虑了点阵字符的离散性质及经过形态学处理以后的字符的连续性质,从而有效地提高了整体识别率。

4.2.3 运算耗时比较

运算耗时通常也是评价算法优劣性的一个重要指标。现将本文方法与文献[6]提出的方法进行对比,其对比结果如表1所示。实验表明,本文方法相比文献[6]的方法在识别22个字符时,识别时间节省了约40 ms。文献[6]采用4次不同结构元素闭运算填写细小空洞,而本文采用了一个垂直元素1次填写细小空洞,故而节约了一定时间。

表1 两种识别方法识别耗时比较

5 结束语

本文提出了一种基于模板匹配和SVM组合的点阵字符识别方法,研究了复杂背景下点阵字符的识别问题。相比于传统的字符定位和识别方法,本文通过考虑点阵字符的离散性质提高了点阵字符的定位准确性,通过组合识别的方法不仅提高了点阵字符的识别准确率,并且具有较高的字符识别鲁棒性,研究结果对保证食品与药品安全具有较好的应用价值。

猜你喜欢
字符识别字符灰度
采用改进导重法的拓扑结构灰度单元过滤技术
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
HBM电子称与西门子S7-200系列PLC自由口通讯
基于最大加权投影求解的彩色图像灰度化对比度保留算法
融合字符及字符排列特征的铭牌识别方法
一种基于OpenCV的车牌识别方法
基于MATLAB的图片中字符的分割与识别