蔡佳凌1,徐建良1,候成飞2
(1. 中国海洋大学 信息科学与工程学院,山东 青岛 266100;2. 国家海洋局第一海洋研究所,山东 青岛 266061)
摘要:条形码定位是条形码识别任务中的难点与热点,也是提高条形码识别率的重要基础和保障。现已有很多的算法用于条形码定位,但是这些算法在大洋样品照片中的应用效果并不理想。大洋样品照片中的条形码具有相对面积小、背景复杂、光照不均、扭曲现象严重等实际情况,对条形码的准确定位产生了严重的干扰。针对该实际情况,提出了一种简单实用且具有鲁棒性的条形码定位方法。该方法结合了基本形态学方法、传统的条形码边缘梯度法以及条形码的梯度能量特性进行定位。实验结果显示,该方法具有较好的定位效果,对于其他实际应用也具有借鉴意义。
关键词:条形码;定位;梯度能量;大洋样品照片
中图分类号:TP391.4文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.04.005
引用格式:蔡佳凌,徐建良,候成飞.大洋样品照片中的条形码定位技术研究[J].微型机与应用,2017,36(4):14-17.
0引言
大洋样品照片是大洋样品数据中非常重要的组成部分。随着大洋考察的持续开展以及采样设备的不断更新,样品的增长速度进一步提高,而对于直观体现样品信息的样品照片的管理难度也进一步加大。为了更好地管理照片,在实际的样品数据管理工作中以所拍摄样品的样品编码重命名照片。样品编码有30位之长,人工命名照片显然是一个耗费时间精力、枯燥乏味且容易出错的工作。而样品是与包含其样品编码的条形码一起拍摄的。因此,为了提高工作效率,减少人力资源的消耗,可以考虑使用程序自动识别照片中的条形码来获取样品编码并重命名照片。在条形码识别的过程中,其准确定位是提高条形码识别率的重要保障,也是条形码识别工作面临的主要挑战之一。本文重点介绍条形码的定位,为后续识别工作的开展奠定基础。
随着条形码在生活与生产中的广泛使用,条形码自动识别技术成为了热门研究领域。在过去的几十年中,数字照片中条形码的快速与准确定位一直是研究的难点和热点。现已有很多的算法用于条形码定位,如基本形态学处理法[14]线条检测法[5]、图像梯度法[2,67]、Gabor滤波器[8]和谐波分析[9]等。样品照片中的条形码因其相对面积小,背景复杂,光照不均匀,因而存在旋转、扭曲现象严重等实际问题,为其准确定位带来了严重的挑战。现有的算法在该应用中的效果并不理想,因为这些算法主要针对使用手机进行扫码的情况。在该情况下,手机一般距离目标条形码较近,条形码区域在扫描框中所占的面积大。而大洋样品照片拍摄的目的是为了记录样品信息,并不是为了读取条形码。工作人员需要将整个样品拍摄下来,且往往将镜头聚焦在样品身上,因而条形码相对样品的面积较小,并容易造成模糊。除此之外,现有的算法大部分针对UPC、EAN13等长宽比较小的商品码[36],可以很容易找到一条穿过整个条码区域的扫描线。而大洋样品采用Code93码,且样品编码有30位之长,长宽比较大(如图1所示)。当条形码弯曲变形时,很难找到一条扫描线与所有条码线条相交。
除了上述的定位算法之外,还有一些现成的机器视觉算法包,如德国MVtec公司开发的Halcon提供了有效的条形码定位算法,但是实验发现效果并不是非常理想[10]。
本文对现有的算法进行整合与改进,提出了一种在实际应用中效果较好的定位方法。该方法利用基本的形态学操作、传统的边缘梯度特征、条形码区域的能量特性以及照片实际特点进行定位,简单实用且鲁棒性好。
1条形码定位
条形码定位主要分为两个步骤,首先确定条形码候选区域,然后从候选区域中选择目标条码区域。本文通过条形码的纹理特征找出照片中的条形码候选区域,然后结合条形码区域的能量特性最终确定目标条形码区域。
为了减少计算量以及方便后续的照片处理,首先对照片进行灰度化和尺寸归一化处理。
1.1条形码方向判定
为了更好地反映样品的尺寸,在拍摄照片时会将标尺与样品一起拍摄,且标尺与条形码基本保持平行,这是大洋样品数据管理工作中的一个规范。标尺是由多个灰白矩形交替连接而成的,矩形的数量随样品尺寸稍有不同,具有明显的边缘,如图1所示。本文利用上述规范以及标尺的边缘特征确定条形码的大致方向(后面的步骤将确定条形码的精确方向),即水平或者垂直方向。
为了确定条形码的大致方向,本文借鉴了文献[3]中的方法,使用开运算来确定条形码方向。但是与文献[3]不同的是,由于大洋样品照片中条形码上方的站位号、文字以及复杂背景等都具有类似条形码的纹理特征,因而无法简单地根据开图像的亮度准确判断条形码区域及其方向。而标尺中与条形码平行的两条边长、直且明显,在大洋样品照片中是非常典型、突出的特征,如图1所示。因此,本文利用标尺明显的边缘特征,并结合0°、45°、90°和135°四个方向的开运算操作来判断条形码方向,效果如图2所示。经过大量实验后,本文采用11×1的结构元素,得到四个方向的开图像。然后设定线条长度阈值,超过该阈值的线条数量最多的开图像对应方向的垂直方向即为条形码方向。在本文中,线条长度阈值设为对应图像尺寸的1/4时效果佳。由图3可知,90°开图像中符合条件的线条数最多,与其垂直的方向,即水平方向即为条形码的大致方向。
1.2候选条形码区域的选择
在得到了条形码大致方向后,对原图进行相应的旋转,使得条形码处于基本水平状态。由于条形码具有典型的高水平梯度、低垂直梯度特点[7],因此将图像的水平梯度绝对值减去垂直梯度绝对值就可以很好地消除大部分干扰区域,利于后续的处理,效果如图3所示,条码区域的亮度非常大。由于在1.1节中通过4个方向的开运算来判断条形码方向,因此图像旋转后条形码的偏转角度在22.5°之内,上述求图像梯度差的方法对倾斜角度在该范围内的条形码都有较好的效果。对于1.1节和本节中的梯度图,均采用Sobel[11]算子进行边缘信息提取。
条形码除了丰富的边缘信息外,其周围的空白区域也是条形码的显著特征。空白区域很好地将条形码区域与样品隔离开了,从图3可以看到,条形码周围基本上是黑色区域。利用这个特点,本文采用连通区域法来获取条形码候选区域。条形码的线条之间具有一定的间隔,并且由于光照不均、模糊、扭曲等因素的干扰,梯度图中同一线条的边缘也不一定连续,因此整个条形码区域并不是一个连通区域。而平滑和膨胀操作可以很好地处理这个问题。
图像平滑消除了图像中的细节部分,将临近的边缘线条连接起来。由于条形码左右两边的空白区域较宽,且平行边缘之间的距离也相对较大,而条形码上方与下方的空白区域较窄,垂直方向间断的边缘线之间的距离较近,因此本文采用的平滑卷积核为11×3,可以将大部分的边缘线条连接起来。
但由于模糊因素的影响,部分边缘信息丢失了,平滑操作并不能将间距较大的边缘连通,因此采用膨胀操作来达到效果。膨胀需要在二值图上进行操作,因此需要先用Otsu[12]算法对平滑图进行二值化处理。根据实际情况,对该阈值进行了适当调整,尽可能还原图像的边缘信息。平滑和膨胀后的图像如图4所示。本文使用OpenCV中的cvFindContours()函数查找连通区域,并用cvMinAreaRect2函数画出连通区域的最小外接矩形,得到候选条形码区域。
大洋样品条形码采用的码制是Code93,每个样品条形码表示34个字符。经过观察发现,条形码的长宽比为9∶1左右。条形码相对整张照片的比例也在1/1 000~1/50之间。根据上述两个条件可以排除大量的非条形码区域,剩余的条形码候选区域有待进一步筛选。
1.3目标条形码确定
条形码区域具有丰富的边缘信息,贯穿整个条形码的扫描线上的各边缘点的梯度方向在同一直线上,且相邻边缘上的点的梯度极性相反。文献[6]利用这个特性来定位条形码。但是对于模糊图像,条形码区域相邻边缘上的点的梯度方向并不一定反向,部分边缘信息可能会丢失。且对于变形严重的情况,可能无法找到一条扫描线穿越整个条形码,或者即使找到这样一条扫描线,但各边缘点的方向由于变形而发生了改变。因此,本文选取候选区域的中间部分区域,计算梯度方向与条形码方向基本在同一直线上的边缘点占总边缘点的比例。理论上比例最大的最有可能是条形码区域。其中,精确的条形码方向是根据连通区域的最小外接矩形的旋转角度来确定的。
但是在实际的实验中发现,当条形码变形严重时,条形码线条边缘点的梯度方向与条形码的整体方向有较大的偏差。并且条形码上方的站位字符串、文字具有类似条形码的纹理特征,标尺的矩形区域由于光照的影响呈现类似条形码边缘的边缘特性,这些区域会干扰条形码的准确定位。因此,本文结合水平边缘点比例和区域梯度能量特征进行判断。站位字符串、文字以及标尺矩形区域的梯度能量远小于条形码区域。而对于其他梯度能量较大的候选区域,其水平边缘点比例较小。因此,可以将边缘点比例与区域梯度总能量相乘作为判断依据,乘积满足一定的阈值,并且最大的即为目标条形码区域。其中阈值是通过对大量样本的实验得到的一个经验值,用于判断定位的有效性,降低错误定位的可能性
2实验
本文使用的实验数据是中国大洋样品馆多个航次的1 195张大洋样品照片。这些照片样本基本涵盖了所有主要的大洋样品种类的出库与入库情况,对于背景复杂、光照不均匀、条形码相对面积小、模糊、变形严重等情况都有很好的体现。对于这些情况,本文算法具有很好的鲁棒性。
本文算法在Visual Studio环境下实现。图5对比了本文、文献[7]以及Haclon的条形码定位算法。由图5可知,对于条形码质量良好的照片,三个算法的定位准确率相差并不是很大。文献[7]中的定位算法成功定位了312张照片中的300张,Haclon定位算法成功定位了295张,而本文算法达到了100%的定位率。这种差距是由于条形码背景较复杂,且存在文字、字符串等干扰区域,影响了条形码的准确定位。而对于条形码质量不佳的照片,三个算法有了明显的性能差异。本文算法的定位率达到了98.41%,比文献[7]中定位算法多定位了238张照片,比Halcon定位算法多定位了357张。其主要原因是光照不均、模糊失真等因素使得条形码丢失了重要的细节信息,而干扰区域又呈现出与条形码区域类似的特征,导致定位误差增大。除此之外,Halcon定位算法无法很好地处理条形码相对面积非常小的情况。由实验结果可知,对于大洋样品照片这一实际应用,本文算法具有较好的性能。
3结论
本文主要研究条形码定位算法在大洋样品照片识别中的应用,借鉴现有的定位算法,并结合照片实际特点,提出了一种简单但有效的定位算法。首先用开运算判断条形码的大致方向。然后利用图像梯度、平滑和膨胀,并根据Code93码本身的尺寸特点找到条形码候选区域。最后利用条形码边缘梯度方向一致性和能量集中的特点确定条形码区域。实验结果表明,本文的算法能够很好地定位样品照片中的条形码,为之后的识别工作奠定了基础。此外,本文的定位算法对其他方面的应用也具有借鉴意义。后续的工作将围绕模糊条形码的识别展开。
参考文献
[1] CHAI D, HOCK F. Locating and decoding EAN13 barcodes from images captured by digital cameras[C]. Fifth International Conference on Information, Communications and Signal Processing, 2005:1595-1599.
[2] Zhang Chunhui, Wang Jian, Han Shi, et al. Automatic realtime barcode localization in complex scenes[J]. IEEE International Conference on Image Proceeding, 2006:497500.
[3] Juett J, Qi X. Barcode localization using a bottom hat filter[J].Nsf Research Experience for Undergraduates, 2015,19.
[4] KATONA M, NYU'L L G. Efficient 1D and 2D barcode detection using mathematical morphology[C]. Mathematical Morphology and ITS Applications to Signal and Image Processing, International Symposium, 2013:464-475.
[5] ADELMANN R. Mobile phone based interaction with everyday productson the go[C]. International Conference on Next Generation Mobile Applications, Services and Technologies. IEEE Computer Society, 2007:63-69.
[6] TEKIN E, COUGHLAN J M. An algorithm enabling blind users to find and read barcodes[C]. IEEE Workshop on Applications of Computer Vision, Snowbind, UT, 2009:1-8.
[7] GALLO O, MANDUCHI R. Reading 1D barcodes with mobile phones using deformable templates[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2010, 33(9):1834-1843.
[8] KUTIYANAWALA A, QI X, TIAN J. A simple and efficient approach to barcode localization[C]. Procepding of International Conference on Information,Communications and Signal Processing, 2009,ICICS'09, 2009:1-5.
[9] Wang Kongqiao, Zou Yanming, Wang Hao. 1D bar code reading on camera phones[J]. International Journal of Image & Graphics, 2011, 7(3):529-550.
[10] 公丕亮, 吕希胜. 基于Halcon的一维条码识别技巧[J]. 计算机与现代化, 2013, 1(4):73-76.
[11] 李捷, 唐星科, 蒋延军. 几种边缘检测算法的比较研究[J]. 信息技术, 2007(9):106-108.
[12] OTSU N. A threshold selection method from grayscale histograms[J]. IEEE Transaction on Smc, 1979(9):62-66.