基于数字图像处理的条形码识别预处理算法研究

2015-12-23 08:20陈超,杨柳
关键词:边缘检测

基于数字图像处理的条形码识别预处理算法研究

陈超1, 杨柳2

(1.安徽大学 电子信息工程学院,安徽 合肥 230601; 2.武汉理工大学 信息工程学院,湖北 武汉 430070)

摘要:针对以摄像头为图像采集设备获取的条形码图像,研究了几种常见的条形码预处理算法,包括二值化算法、条形码区域的定位算法及条形码的校正算法.对条形码图像中的灰度背景用大津阈值法进行分割;利用形态学腐蚀的方法将条形码区域划分为几个连通域,提取最大连通域即可定位条形码区域,完全滤除其他与条形码识别无关的背景信息;对于有一定倾斜角度的条形码,首先利用Canny边缘检测算子提取条形码的边缘,再结合Hough变换找到条形码水平与竖直的直线及其倾斜角度,将条形码旋转该角度即可得到校正后的边缘识别的条形码图像.实验证明,该预处理算法有较好的处理效果.

关键词:条形码识别;大津阈值法;形态学腐蚀;连通域;边缘检测;霍夫变换

中图分类号:TP391文献标志码:A

收稿日期:2015-06-20

基金项目:安徽大学2014大学生科研训练计划项目(KYXL2014070)

作者简介:陈超(1994-),男,湖北孝感人,本科生,研究方向为数字图像处理与多媒体计算技术.

条形码技术是一种利用图像信息对字符或数字进行编码的技术,利用排列规则的条空将信息以一幅图像的形式表达出来,用专用的图像采集与识别设备即可将条形码图像转化为相应的字符或数字信息.条形码分为一维条形码和二维条形码.常见的一维条形码技术有EAN-8,EAN-13及UPC-E等[1],由于一维条形码所能包含的信息量较少,纠错及加密性能较差,在很多领域已无法满足信息安全及准确度方面的要求,所以目前用得较多的是二维条形码.常见的二维条形码有PDF417,QR Code,Code 49,Code one等[2-4],二维条形码的构造较一维条形码复杂,能编码更多的信息并且保密及纠错能力也更好.目前,市场上对二维条形码的识别多采用激光扫描器,其研究已经相对成熟,而对以摄像头为图像采集设备的条形码识别算法研究较少[5-7].针对这一情况,采用基于数字图像处理的条形码识别算法,对用摄像头采集到的条形码图像进行处理和识别,比利用激光扫描器降低了成本.受文章篇幅限制,未探讨条形码的解码算法,而主要研究了条形码常用的预处理算法,包括二值化算法、条形码区域的定位算法与条形码图像的校正算法.

1条形码的二值化处理

由于图片采集时可能会受到光线的影响,或者图片本身存在一定的污染,使条形码携带有效信息的同时还存在一定的灰度背景,见图1.又如图2条形码的灰度直方图所示,采集到条形码背景的灰度值并不是一个常数.为了便于识别,需要提取条形码中的有效信息,去掉灰度背景,常常利用二值化算法将灰度图像转化为二值化图像来处理.对于输入图像中像素坐标为(x,y)的点,其灰度为f(x,y),二值化处理后其灰度为g(x,y),设定阈值T,将图像分为特征和背景两部分,如式(1)所示:

(1)

二值化技术的关键是阈值的选取,根据待处理图像的特性,阈值选取的方法有很多种[8-11],一般分为全局阈值法和局部阈值法.分析图2可知,条形码的灰度直方图具有双峰特性,分别采用两种常用的全局阈值法进行二值化.第一种如图3所示,在双峰之间靠中间的位置找一个阈值T=150对条形码进行二值化,另一种方法是采用大津阈值法[12].图4为利用大津阈值法进行二值化的结果,其算法原理为将待分割的图像分为前景图像(条形码中的黑点)和背景图像(条形码中的白点).u1和u2分别表示前景和背景像素点的平均灰度,w1和w2分别表示前景和背景像素点的比例,用u0表示原始灰度图像的平均灰度,大津阈值法的目标是找到阈值T,将所有像素点分为前景和背景像素点使得其类间方差g最小,其中:

g=w1(u1-u0)2+w2(u2-u0)2.

(2)

利用式(2)遍历阈值T即可找到使类间方差g最小的阈值.比较图3和图4可知,用大津阈值法能取得较好的二值化效果,在实际中应用较多.

图1 条形码灰度图像         图2 条形码灰度直方图      图3 阈值为150的分割图像  Fig.1 Gray level image     Fig.2 Bar code gray histogram  Fig.3 The image split by a threshold T=150

图4 Otsu阈值分割法分割后图像 Fig.4 The image split by Otsu method

2条形码区域的定位

由于采集到的条形码图像周围带有大量背景信息,这些额外的信息给条形码的识别带来了一定的困难.为降低条形码识别的计算量、降低背景信息对识别精度的影响,需要先将条形码周围的背景信息去除,仅提取待识别的条形码图像.以火车票为例,对条形码图像进行腐蚀后提取连通域实现背景分离,见图5.如图5(a)车票中的QR条形码所示,一般的条形码都为一个矩形的黑白条空组成,与条形码以外的区域相比,条形码区域含有更加丰富的边缘信息,黑色像素块的分布更加密集.正是由于条形码区域的这些特点,往往可以采用标准差阈值跟踪法或数学形态学处理的方法来定位条形码区域.利用数学形态的方法结合连通域的提取算法将条形码图像与背景的信息分离出来,定位出条形码区域,具体步骤如下:

(1)对原始的RGB图像进行灰度化,并对灰度化的图像进行形态学腐蚀操作.由于条形码图像中白色像素点相对较少,孤立的亮色像素较多,经过形态学腐蚀操作后会出现如图5(b)所示的图像,条形码区域被腐蚀成了整个区域中最大的黑色像素块.其中,腐蚀的次数要使最后提取的最大连通域的方差小于一个阈值,即VarCd

(2)对腐蚀后的图像二值化并取反.为便于提取条形码区域即最大的黑色像素块区域,需要将腐蚀后的图像二值化,同时进行取反操作,使条形码区域变为整个图像中最大的连通域,如图5(c)所示.由于直接对图5(b)中腐蚀后的图像进行二值化后条形码区域的灰度值为0,为了将条形码区域变为最大的连通域需要进行如下操作将像素点的逻辑值互换,使条形码区域的像素低逻辑值为1:

BW=-BW+1.

(3)

(3)提取图像最大连通区域即定位出条形码区域.分析图5(c)二值化并取反操作后的图像的连通情况,找到最大的连通域即为条形码所在的区域,其定位结果如图5(d)所示.连通域的求取步骤如下:①将整个图像划分为多个连通域,求解每个连通域内像素点的个数;②找到最大连通域内像素点的总个数N;③遍历各个连通域将像素点小于N的连通域内所有像素点的逻辑值置0.经过上述3个步骤后即可得到分割出的条形码区域,如图5(d)所示.

图5 对条形码图像进行腐蚀后提取连通域实现背景分离 Fig.5 Extracting the connect domain and divide the background after the corrosion of the bar code image

图6 原始灰度图像与背景分割后的图像对比 Fig.6 The comparison between the original gray level image and the segmented image

将图5(d)所示的图像与原始的灰度图像6(a)相与操作或按像素相乘操作即可得到只含有条形码区域而不含其他任何背景的分割后的条形码图像,如图6(b)所示.

3条形码图像的校正

在利用摄像头等设备采集条形码图像时,可能会由于摄像头等的倾斜造成采集到的条形码图片产生一定角度的倾斜,不便于识别.为解决条形码图像的倾斜问题,首先用canny边缘检测算子提取了条形码图像的边缘,再用Hough变换检测条形码图像水平和竖直的直线并求出条形码的倾斜角度,最后以图像中点为原点旋转图像即可得到校正后的条形码图像.

3.1条形码边缘检测

为便于利用Hough变换找到条形码的水平和竖直直线,首先利用边缘检测算子提取条形码的边缘,常见的边缘检测算子有Roberts算子、Sobel算子、Prewitt算子、LOG算子和Canny算子等[13-15].考虑到Canny算子检测边缘时抗噪声性能和边缘检测效果都优于其他几种常见的算子,故采用Canny算子提取条形码图像边缘,步骤如下:

(1)利用高斯滤波器对原始图像f(x,y)进行平滑处理,得到平滑后的图像g(x,y):

g(x,y)=f(x,y)*H(x,y),

(3)

(2)用一阶偏导有限差分计算梯度幅值和方向:

(4)

(5)

式中,|G(x,y)|为梯度大小,θ为梯度的方向,Gx和Gy分别为x方向和y方向的梯度算子,一般可用Sobel算子.

(3)对梯度幅值进行非极大抑制

得到梯度幅值后无法提取边缘,还需要找出邻域内梯度最大的像素点抑制非最大的像素点.对于任意一个像素点,比较其梯度值与邻域的梯度值,若不是邻域内的最大梯度,则将该像素点的灰度值置0.

(4)用双阈值算法检测和连接条形码边缘

设定两个阈值T1和T2(T2≈2T1)对非极大抑制图像进行分割,由于T2较大,其分割的图像含有较少的伪边缘,但是边缘会有较多的中断,利用T1阈值分割的结果不断填补T2分割图像中的不连续点,即可得到含有较少伪边缘的连续边缘.

利用不同的边缘检测算子检测条形码边缘的效果如图7所示.由图7可以看出,利用Canny算子做边缘检测可以得到更多的连续边缘,减少边缘的中断.同时,由于Canny边缘检测利用到了高斯滤波器,对于存在一定噪声的条形码图像也能取得较为理想的边缘检测效果.

图7 不同算子边缘检测效果的对比 Fig.7 The processing effect comparison between different edge detection operator

3.2条形码倾角计算及旋转校正

检测到条形码的边缘后即可利用Hough变换[16]提取条形码图像中水平和竖直的直线并计算直线的倾斜角度.直线提取及倾角倾角计算步骤如下:

(1)利用Canny算子对原始灰度图像(图8(a))作边缘检测,结果如图8(b)所示.

(2)根据边缘检测图像创建Hough变换累加器存储空间.

(3)在参数平面对每一点做Hough变换,计算其(ρ,θ)值,将相应的累加器加1.

(4)统计累加值的局部最大点,参数域中累加值的分布情况如图8(c)所示.其中,较大的累加值对应图像空间中的一条直线,已用方框标记出来.

(5)根据检测到的点在图像空间中绘制出直线,如图8(d)所示.

(6)根据图8(c)Hough变换图中H(ρ,θ)的分布可知,原始图像中主要存在两种倾斜角度的直线,分别为θ=45°和θ=-45°,分别对应条形码中水平和竖直的线段.

图8 利用Hough变换提取条形码直线计算倾角 Fig.8 Extract the lines in the bar code and compute its angle by Hough transformation

利用Canny边缘检测和Hough变换得到条形码图像的倾斜角度后,即可将图像旋转校正至垂直方向以便于识别.这里以条形码图像的中点为原点进行旋转校正,步骤如下:

(1)坐标平移变换.将条形码图像的中心像素点移到参考坐标原点(x0,y0),即中心像素的坐标变为(0,0),其他像素点的坐标依次变为

(6)

其中,(x,y)为平移变换前的像素坐标,(x′, y′)为平移变换后的像素坐标空间.

(2)坐标旋转变换.将所有像素点以中心像素为原点旋转角度θ,即

(7)

图9 倾斜图像旋转校正 Fig.9 The correction of the inclined image

4结束语

研究了利用摄像头采集的条形码图像识别的预处理算法,给出并实现了条形码预处理算法,实验证明该算法有较高的准确度和较好的处理效果.

参考文献:

[1]李金哲.条形码自动识别系统[M].北京:国防工业出版社,1991.

[2]郑文超.条形码技术指南[M].北京:中国标准出版社,2003:4-6.

[3]张成海,郭卫华.QR Code二维码[M].北京:中国标准出版社,2000.

[4]矫云起,张成海.二维条形码技术[M].北京:中国物价出版社,1996.

[5]赵群礼,周秋平.基于图像的二维条形码识别技术研究[J].合肥师范学院学报,2010(6):57-59.

[6]范哲意,江帆,刘志文.基于拍摄图像的PDF417条形码识别[J].北京理工大学学报,2008(12):1088-1092.

[7]赵德,聂文滨.一种基于图像方式的二维条形码快速识别的方法[J].南昌航空工业学院学报,2006(4):48-51.

[8]王佳,李波,徐其志.边缘检测中局部区域的动态阈值选取的方法[J].计算机应用研究,2010,27(2):88-90.

[9]曾磊.基于Otsu法自适应阈值的图像分割研究[J].信息技术,2008,10(3):88-90.

[12]李了了,邓善熙,丁兴号.基于大津法的图像分块二值化算法[J].微计算机信息,2005,21(14):76-77.

[13]崔屹.图像处理与分析——数学形态学方法与应用[M].北京:科学出版社,2000.

[14]冈萨雷斯.数字图像处理[M].北京:北京电子工业出版社,2011.

[15]段瑞玲,李庆祥,李玉和.图像边缘检测方法研究综述[J].光学技术,2005,31(3):415-419.

[16]徐欣风,董贵华,姚志军.仿真模板的Hough变换直线检测[J].仪器仪表学报,2004,25(4):13-15.

The research on pretreatment algorithmic of the bar code image based

on the digital image processing

CHEN Chao1, YANG Liu2

(1.CollegeofElectronicsandInformationEngineering,AnhuiUniversity,Hefei230601,China;

2.CollegeofTechnologyInformationEngineering,WuhanUniversityofTechnology,Wuhan430070,China)

Abstract:For the bar code image captured by camera, a series of pretreatment algorithmic is presented, including binaryzation method, bar code region location method, and bar code image revise method. For the grey scale background, it could be divided by the Ostu threshold method; With the morphological erode method, we can divided the whole image into several connected domain, and located the region of the bar code by extracting the biggest connected domain, after which the background had nothing to do with the identification of bar code can be eliminated completely. For the bar code with a angle of inclination, extracting the bar code edge by canny operate firstly, then get the horizontal line and vertical curve as well as the inclination angle by Hough transformation. By rotating the bar code image by that angle can we attain the image convenient to being identify. It showed that the pretreatment method have a pretty good effect on processing of the bar code image.

Key words:bar code identification; median filtering; Otsu; morphological erode;connected domain;edge detection;Hough transformation

猜你喜欢
边缘检测
基于数学形态学的一种改进CO2焊熔池图像边缘检测算法
离散过程神经网络和CGA相融合的边缘检测
基于图像的物体尺寸测量算法研究
唐卡图像边缘提取
水下大坝裂缝图像分割方法研究 
基于多算法融合的多车牌定位方法研究
基于高精度星敏感器的星图降噪研究
基于灰度的图像边缘检测与匹配算法的研究
基于TMS320的跑道异物监测系统
基于边缘检测和色彩空间的混合车牌定位算法