艾 达,马宇豪,刘 颖+,郭建林,周光军
1.西安邮电大学电子信息现场勘验应用技术公安部重点实验室,西安 710121
2.深圳市有方科技股份有限公司,广东深圳 518109
条形码是把不同宽度的黑白条纹按照一定规则进行排列组成的标识符,用来表达一定的信息[1],通过光电扫描设备,实现机器自动读取信息的功能,广泛应用于工业生产与日常生活当中。近年来,随着智能终端设备和无线通信技术的快速发展,影像式条形码识别技术利用智能终端内置摄像头与应用程序相结合,通过对拍摄的条码图像进行处理,实现条形码的定位、识别和译码,具有成本低、易维护、扩展性强的优点,得到广泛应用。其中,在解码前通过一系列图像预处理[2-4]运算对条形码自动定位,减少条形码的解析运算,能够有效提高条形码识别速度,对于优化条形码识别有重要的意义。
通过对近年来条形码定位识别技术的研究成果总结,现有的条形码定位方法主要分为三类:基于频域和形态学滤波的方法、基于机器学习的方法、基于边缘特征的方法。
频域和形态学滤波方法:通过使用离散余弦变换[5]、小波变换[6-7]等运算将图像从空间域转化为频域,提取条形码纹理的高频信息并滤除干扰信息完成条形码定位。优点在于能准确地将条形码从图案背景中分离出来,但当条形码图像周围背景存在大量其他纹理图案时,很难精确定位到每条条纹,影响最终识别的结果;利用条形码的形状特性[8-10],使用形态学滤波将条形码区域从背景中分离出来,同样也容易受到复杂背景的影响,一旦遇到较复杂的背景,就会增大条形码区域的定位难度。
基于机器学习的方法:通过提取局部二值模式(local binary pattern,LBP)特征[11],送入支持向量机分类器判断所属类别[12-13],将连通子块合并得到条码区域;使用语义分割方法构造一种基于双金字塔结构的分割网络BarcodeNet[14],对复杂环境中条形码区域分割和定位;采用深度学习网络,如YOLO(you only look once)[15-16],可以对条形码区域快速检测,取得了较好的检测效果。机器学习方法识别效率高,性能还可以进一步提高,但从应用角度来看,需要大量数据集训练,对设备运算性能要求高。
基于边缘特征的方法:主要有应用Hough 变换查找条形码的直线算法[17]、对条形码区域所有黑白条纹进行检测[18]、基于投影曲线的定位方法[19]等。利用条形码区域垂直投影的特性确定条形码位置,当图像背景出现过多平行线或平行图案时识别效果会受到影响,抗干扰能力弱;结合条形码的边缘特征与形状特征[20-21],定位条形码运算量小,识别率较高,是一类较为经典的定位方法,但是结果仍然易受背景的文字与图案轮廓的干扰,导致定位不准确;在此基础上利用条形码区域的边缘密集、边缘长度相似、边缘斜率相同等特点[22],按照边缘线的长度值与倾角将条形码区域与背景文字进行区分,在保证实时性的前提下,提高了识别准确率。
上述方法通常会组合使用,能够解决部分复杂环境中条码的识别问题。但从实际应用效果看,条形码区域的定位常受到光照、对焦、背景复杂等因素的影响,如图1 所示:(a)光照不均;(b)光照弱,使条形码区域昏暗与背景难以区分;(c)镜头对焦不准,导致条形码条纹边界不清晰;(d)图像背景复杂,如大量文字、复杂图案等影响条形码位置识别。
Fig.1 Barcode image under complicated environment图1 复杂环境下条形码图像
除上述问题外,在实际应用过程中还要综合考虑定位方法的复杂度,对CPU 和内存等系统资源占用,在各类嵌入式平台上的通用性等问题。
针对现有影像式条码扫描设备存在的上述问题,提出了一种基于边缘扩张(edge-based expansion,EBE)条形码定位方法,可以有效适应复杂光照环境、背景区纹理复杂、镜头焦模糊等复杂应用场景,通过应用实验证明,该方法能优化原条形码识别系统的识别耗时,且识别率高,具有良好的鲁棒性。
提出方法总体流程如图2 所示:(a)首先拍摄采集含有条形码的图像并进行灰度化处理;(b)边缘检测生成边缘图像并二值化;(c)利用条形码区域边缘线密集的特性,对图像中的边缘进行区域扩张处理;(d)形态学滤波使密集的边缘线成为连通区域,并将扩展区域作为一个整体;(e)判别条形码区域并矫正倾斜度,最终在图像中定位条形码区域(f)。
Fig.2 Barcode locating process图2 条形码定位过程
光照不均匀使图像中同性质区域被错误分割,一些边缘信息无法被正确提取。通过二值化与边缘检测可以有效去除由于光照不均对条形码位置识别过程的影响。
常见的边缘检测算子有Roberts 算子、Sobel 算子、Laplacian 算子等。其中Sobel 边缘检测算子具有运算简单,抗噪能力良好的优点。Sobel 边缘检测采用垂直与水平两个方向的模板,能检测出这两方向上的边缘,但是如果遇到倾斜的图像边缘,可能会出现偏差。使用改进的Sobel 算子[23],在水平方向与垂直方向的基础上添加倾斜45°与135°两个方向的边缘检测。
设原始含条形码的图像经过灰度化处理后,其灰度图像为I(x,y)。边缘检测方法如下:
式中,Dx、Dy、D45°、D135°分别为水平、垂直、45°、135°方向上的梯度算子与灰度图I(x,y)卷积的结果;Isobel(x,y)为灰度图像的边缘图像。
使用大津法[24]对边缘图像Isobel(x,y)进行二值分割:
其中,T为图像自适应二值化的阈值;S(x,y)为经过大律法二值化处理后的边缘图像,效果如图2(b)所示。
现实生活中的条形码图像普遍会受到图像背景、周边文字的干扰,边缘轮廓无法正确标识条码区域。提出的基于边缘扩张方法能对边缘密集区域进行填充,形成连通区域,同时对孤立的边缘线条进行滤除,计算步骤如下:
(1)遍历二值化后的边缘图像,若存在Isobel(p,q)≠0 时,按下式求得图像中像素点邻域内的像素均值:
式中,p、q为有限正整数;C(p,q)表示以像素点(p,q)为中心的3×3 邻域内像素点的像素均值,(i,j)表示该邻域内的像素点坐标。
(2)对边缘区域周围按下式进行扩展:
式中,A″表示经过边缘扩张后的图像像素矩阵。效果如图2(c)所示。
(3)对A″采用中值滤波,得到A′见式(9):
其中,q,p∈W,W为中值滤波的滤波窗口;对A′形态学滤波,完成像素连通的区域二次扩张,得到扩张后的图像像素矩阵A:
其中,•为开启算子;Θ 为腐蚀运算符;⊕为膨胀运算符;X为结构元素,即为具有特定形状特征的滤波窗口。应用区域扩张算法后,边缘密集的条形码区域会形成更大的连通区域,其他孤立轮廓线条将会被滤除,效果如图2(d)所示。
由于条形码区域边缘密集度比图案背景、周边文字区域高,经过区域扩张后条形码区域所占的像素点个数比文字或图案轮廓所形成的连通区域大很多。据此特性可将条形码区域与其他区域区分出来,步骤如下:
(1)对区域扩张后图像矩阵A中各个连通区域的所占像素点个数进行计数,分别记为S1′,S2′,…,Sc′,其中c为有限的正整数,表示连通区域的个数。
(2)Sc′表示该连通区域内的像素点个数;在区间内按等间隔分为n份,按下式确定间隔δ以及每个间隔中心Dk:
其中,Smin′为连通区域最小值;Smax′为连通区域最大值,k=1,2,…,n。
(3)根据实验效果,取经验值n=5,只保留连通区域像素个数大于D1的区域,记为S1,S2,…,Sm,其中m为有限正整数,且m (4)分别计算步骤(3)得到条形码区域的位置信息。根据非零像素点区域起始坐标确定条形码所在位置,完成定位,效果如图2(e)所示。 以带有复杂背景的图2(a)为例,经过边缘扩张和判别后,背景干扰被有效滤除。 一维灰度投影图[19]可以清楚地反映滤波效果,如图3 所示,x轴为该图像水平或垂直方向的像素列/行,y轴坐标为该列/行所有像素灰度值之和。 文献[22]方法是一种新型条形码实时定位方法,图3(a)为应用其方法得到的水平投影图,图3(b)为其垂直投影图,可以看出投影曲线波动频繁,并且在非条形码区域存在背景干扰,这将影响条形码定位的准确率。图3(c)、图3(d)分别为本文EBE方法水平投影图和垂直投影图。可以看出,本文方法投影曲线集中在一个区域,并且波动比较平缓,无骤增或骤减,可有效滤除背景干扰,明显区分出条形码区域。 Fig.3 Comparison of projection graph results图3 投影图结果对比 条形码需要按照一定方向进行解析才能被识别,因此需要对倾斜的条形码进行水平校正。利用条形码区域中存在大量平行的直线的特点,采用抗噪性较好的Radon 变换对直线进行检测,确定条形码的倾斜角度以便校正。 采用Radon 变换时,若图像中含有直线,则沿着此直线所有灰度值累加值最大,而其他非直线方向累加值较小,以此检测直线位置,将原图像转为Radon 平面计算式如下: 其中,θ表示直线倾斜的角度,I(x,y)表示灰度图像。 对于倾斜的图像,Radon 变换可以检测图像中的直线的倾角已达到校正的目的。选择Radon 变换空间亮度最高的点即为图像的峰值点(s,θ),其中θ表示原倾斜图像的倾斜直线的倾斜角,按照此角度对图像进行校正。 图4 为条形码经Radon 变换后的三维视图,选择积分最大值点对应的θ角度值对倾斜条形码进行校正。实验结果显示,0°到180°的倾斜均可以水平校正,校正效果如图5 所示。 Fig.4 Barcode Radon transform 3D view图4 条形码Radon 变换三维视图 Fig.5 Barcode horizontal corrections with Radon transform图5 Radon 变换对条形码水平校正 从定位准确率和解码平均耗时两方面开展对比实验,验证提出方法的性能。 实验使用了条形码公开数据集ArTe-Lab[22]与WWU Menster[25]以及自建条形码数据集验证定位方法的准确性。三个数据集均包含背景复杂、光照环境恶劣、对焦不准的场景采样。其中ArTe-Lab 数据库分为自动对焦(记作ArTe-Lab-AF)与未自动对焦(记作ArTe-Lab-NF)的两类条形码图像各215 张。WWU Menster 数据库是由N95 手机拍摄的EAN、UPC-A 制式的条形码图像,共计1 055 张,本文选用其中的675 张进行实验。此外,自建数据库是采集自日常生活中不同拍摄环境564 张条形码图像,用于验证本文方法在实际生活场景中的条形码区域定位能力。 文献[22]是通过条形码图像的边缘快速定位条形码区域,文献[25]是基于有监督机器学习的条形码区域检测方法。以上两种方法均使用ArTe-Lab 与WWU Menster 数据集验证其方法准确性,因此本文通过计算机仿真实现上述两种方法并与本文EBE 方法进行对比,结果如表1 所示。 Table 1 Comparison of results among different barcode localization algorithms表1 不同条形码区域定位方法对比 在ArTe-Lab-AF组对比中,EBE准确率为95.35%,比边缘快速定位法提高6.05 个百分点,较机器学习方法提高13.96 个百分点;在ArTe-Lab-NF 组对比中,由于图像拍摄时没有自动对焦,导致部分条码图像模糊不清,EBE 准确率为91.63%,比文献[22]高34.89 个百分点,较文献[25]方法提高21.87 个百分点,表明EBE方法识别对焦不清晰的条码效果更好;在使用WWU Menster 数据对比中,EBE 方法识别率为97.77%,优于机器学习法的89.62%,略好于边缘快速定位法的96.29%;在自建数据库对比实验中,EBE 方法识别率比文献[22]高3.55 个百分点,比文献[25]高5.86 个百分点。综上所述,三种方法对日常生活场景中条码识别率都较高,而EBE 方法更好。针对未自动对焦条形码图像,EBE 方法具有良好的识别效果。 针对各种复杂应用场景的干扰,应用EBE 方法获取条形码定位坐标,在原图画出虚框线,效果如图6所示。 Fig.6 Locating results of barcode under complex conditions图6 复杂条件下条形码定位效果 文献[22]利用条形码线条密集、倾斜角度相近的特点定位条形码,在处理过程中难免有边缘线缺失的情况,从而导致定位不准确。文献[25]通过结合有监督机器学习与二维Hough 变换检测条形码直线区域,但在机器学习处理过程中需要手动设置特征与规则,抗干扰能力较差容易导致定位不准确,且通过Hough 检测条形码计算量较大,耗时较长。本文EBE方法将图像中条形码区域看作一个整体进行提取,利用条形码的黑白条纹边缘线密集特点,将该区域扩张成为一个整体连通区域,保证了条形码区域的完整性,不易丢失数据,因而有更好的定位准确率,尤其在对焦不清的场景中效果更为明显。 分析本文EBE 定位失效的实验结果,发现以下两类情况导致识别错误或识别不全的问题:(1)拍摄距离太近,条形码占据全部画面,导致条纹间隔过大;(2)拍摄图像过于模糊,人眼也无法区别。此两种问题都比较极端,只能通过重新拍照解决。 在智能手机系统上开展条形码图像从拍摄到完成信息解读的解码时间测试,以评估提出EBE 方法的实际应用效果。 系统测试环境为高通MSM8909 CPU(四核ARM Cortex A7),最高主频1.1 GHz,运行内存为2 GB,Android5.1 系统,500 万像素摄像头。设置条码图像拍摄分辨率为640×480 像素。 在原系统条码识别程序中加入EBE 方法选项开关,对比采用EBE 方法前后的条形码图像解码时间。采集10 组条形码图像数据,每组数据为一张条形码解析50 次后用时的均值,在原系统条码识别程序中加入EBE 方法选项开关,对比采用EBE 方法前后的条形码图像解码时间。具体情况如图7 所示。 Fig.7 Average parsing time of barcode图7 条形码解析平均时间 原条形码10 组数据的平均解码时间为149 ms;使用EBE 方法后,解码器可以快速定位图像中的条形码区域,平均解码时间降为110 ms,总体解码时间平均减少26.1%,解码速度显著提升。 本文提出的基于边缘区域扩张的条形码处理和判别的定位方法,适用于基于影像的嵌入式条码识别系统。实验和应用结果表明,该方法较好地解决了存在光照、对焦、背景等干扰的复杂环境下条形码定位问题,具有良好定位准确率、识别速度和使用成本优势。可应用于复杂的拍照场景,能满足日常生活与工作生产的需求,为条形码识别设备的设计、优化和研发提供了参考依据。1.4 条形码区域校正
2 实验与应用效果
2.1 定位准确率实验
2.2 实验结果分析
2.3 应用测试
3 结束语