基于數(shù)字圖像處理的條形碼識別預(yù)處理算法研究
陳超1, 楊柳2
(1.安徽大學(xué) 電子信息工程學(xué)院,安徽 合肥 230601; 2.武漢理工大學(xué) 信息工程學(xué)院,湖北 武漢 430070)
摘要:針對以攝像頭為圖像采集設(shè)備獲取的條形碼圖像,研究了幾種常見的條形碼預(yù)處理算法,包括二值化算法、條形碼區(qū)域的定位算法及條形碼的校正算法.對條形碼圖像中的灰度背景用大津閾值法進(jìn)行分割;利用形態(tài)學(xué)腐蝕的方法將條形碼區(qū)域劃分為幾個連通域,提取最大連通域即可定位條形碼區(qū)域,完全濾除其他與條形碼識別無關(guān)的背景信息;對于有一定傾斜角度的條形碼,首先利用Canny邊緣檢測算子提取條形碼的邊緣,再結(jié)合Hough變換找到條形碼水平與豎直的直線及其傾斜角度,將條形碼旋轉(zhuǎn)該角度即可得到校正后的邊緣識別的條形碼圖像.實(shí)驗(yàn)證明,該預(yù)處理算法有較好的處理效果.
關(guān)鍵詞:條形碼識別;大津閾值法;形態(tài)學(xué)腐蝕;連通域;邊緣檢測;霍夫變換
中圖分類號:TP391文獻(xiàn)標(biāo)志碼:A
收稿日期:2015-06-20
基金項(xiàng)目:安徽大學(xué)2014大學(xué)生科研訓(xùn)練計(jì)劃項(xiàng)目(KYXL2014070)
作者簡介:陳超(1994-),男,湖北孝感人,本科生,研究方向?yàn)閿?shù)字圖像處理與多媒體計(jì)算技術(shù).
條形碼技術(shù)是一種利用圖像信息對字符或數(shù)字進(jìn)行編碼的技術(shù),利用排列規(guī)則的條空將信息以一幅圖像的形式表達(dá)出來,用專用的圖像采集與識別設(shè)備即可將條形碼圖像轉(zhuǎn)化為相應(yīng)的字符或數(shù)字信息.條形碼分為一維條形碼和二維條形碼.常見的一維條形碼技術(shù)有EAN-8,EAN-13及UPC-E等[1],由于一維條形碼所能包含的信息量較少,糾錯及加密性能較差,在很多領(lǐng)域已無法滿足信息安全及準(zhǔn)確度方面的要求,所以目前用得較多的是二維條形碼.常見的二維條形碼有PDF417,QR Code,Code 49,Code one等[2-4],二維條形碼的構(gòu)造較一維條形碼復(fù)雜,能編碼更多的信息并且保密及糾錯能力也更好.目前,市場上對二維條形碼的識別多采用激光掃描器,其研究已經(jīng)相對成熟,而對以攝像頭為圖像采集設(shè)備的條形碼識別算法研究較少[5-7].針對這一情況,采用基于數(shù)字圖像處理的條形碼識別算法,對用攝像頭采集到的條形碼圖像進(jìn)行處理和識別,比利用激光掃描器降低了成本.受文章篇幅限制,未探討條形碼的解碼算法,而主要研究了條形碼常用的預(yù)處理算法,包括二值化算法、條形碼區(qū)域的定位算法與條形碼圖像的校正算法.
1條形碼的二值化處理
由于圖片采集時可能會受到光線的影響,或者圖片本身存在一定的污染,使條形碼攜帶有效信息的同時還存在一定的灰度背景,見圖1.又如圖2條形碼的灰度直方圖所示,采集到條形碼背景的灰度值并不是一個常數(shù).為了便于識別,需要提取條形碼中的有效信息,去掉灰度背景,常常利用二值化算法將灰度圖像轉(zhuǎn)化為二值化圖像來處理.對于輸入圖像中像素坐標(biāo)為(x,y)的點(diǎn),其灰度為f(x,y),二值化處理后其灰度為g(x,y),設(shè)定閾值T,將圖像分為特征和背景兩部分,如式(1)所示:
(1)
二值化技術(shù)的關(guān)鍵是閾值的選取,根據(jù)待處理圖像的特性,閾值選取的方法有很多種[8-11],一般分為全局閾值法和局部閾值法.分析圖2可知,條形碼的灰度直方圖具有雙峰特性,分別采用兩種常用的全局閾值法進(jìn)行二值化.第一種如圖3所示,在雙峰之間靠中間的位置找一個閾值T=150對條形碼進(jìn)行二值化,另一種方法是采用大津閾值法[12].圖4為利用大津閾值法進(jìn)行二值化的結(jié)果,其算法原理為將待分割的圖像分為前景圖像(條形碼中的黑點(diǎn))和背景圖像(條形碼中的白點(diǎn)).u1和u2分別表示前景和背景像素點(diǎn)的平均灰度,w1和w2分別表示前景和背景像素點(diǎn)的比例,用u0表示原始灰度圖像的平均灰度,大津閾值法的目標(biāo)是找到閾值T,將所有像素點(diǎn)分為前景和背景像素點(diǎn)使得其類間方差g最小,其中:
g=w1(u1-u0)2+w2(u2-u0)2.
(2)
利用式(2)遍歷閾值T即可找到使類間方差g最小的閾值.比較圖3和圖4可知,用大津閾值法能取得較好的二值化效果,在實(shí)際中應(yīng)用較多.
圖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條形碼區(qū)域的定位
由于采集到的條形碼圖像周圍帶有大量背景信息,這些額外的信息給條形碼的識別帶來了一定的困難.為降低條形碼識別的計(jì)算量、降低背景信息對識別精度的影響,需要先將條形碼周圍的背景信息去除,僅提取待識別的條形碼圖像.以火車票為例,對條形碼圖像進(jìn)行腐蝕后提取連通域?qū)崿F(xiàn)背景分離,見圖5.如圖5(a)車票中的QR條形碼所示,一般的條形碼都為一個矩形的黑白條空組成,與條形碼以外的區(qū)域相比,條形碼區(qū)域含有更加豐富的邊緣信息,黑色像素塊的分布更加密集.正是由于條形碼區(qū)域的這些特點(diǎn),往往可以采用標(biāo)準(zhǔn)差閾值跟蹤法或數(shù)學(xué)形態(tài)學(xué)處理的方法來定位條形碼區(qū)域.利用數(shù)學(xué)形態(tài)的方法結(jié)合連通域的提取算法將條形碼圖像與背景的信息分離出來,定位出條形碼區(qū)域,具體步驟如下:
(1)對原始的RGB圖像進(jìn)行灰度化,并對灰度化的圖像進(jìn)行形態(tài)學(xué)腐蝕操作.由于條形碼圖像中白色像素點(diǎn)相對較少,孤立的亮色像素較多,經(jīng)過形態(tài)學(xué)腐蝕操作后會出現(xiàn)如圖5(b)所示的圖像,條形碼區(qū)域被腐蝕成了整個區(qū)域中最大的黑色像素塊.其中,腐蝕的次數(shù)要使最后提取的最大連通域的方差小于一個閾值,即VarCd (2)對腐蝕后的圖像二值化并取反.為便于提取條形碼區(qū)域即最大的黑色像素塊區(qū)域,需要將腐蝕后的圖像二值化,同時進(jìn)行取反操作,使條形碼區(qū)域變?yōu)檎麄€圖像中最大的連通域,如圖5(c)所示.由于直接對圖5(b)中腐蝕后的圖像進(jìn)行二值化后條形碼區(qū)域的灰度值為0,為了將條形碼區(qū)域變?yōu)樽畲蟮倪B通域需要進(jìn)行如下操作將像素點(diǎn)的邏輯值互換,使條形碼區(qū)域的像素低邏輯值為1: BW=-BW+1. (3) (3)提取圖像最大連通區(qū)域即定位出條形碼區(qū)域.分析圖5(c)二值化并取反操作后的圖像的連通情況,找到最大的連通域即為條形碼所在的區(qū)域,其定位結(jié)果如圖5(d)所示.連通域的求取步驟如下:①將整個圖像劃分為多個連通域,求解每個連通域內(nèi)像素點(diǎn)的個數(shù);②找到最大連通域內(nèi)像素點(diǎn)的總個數(shù)N;③遍歷各個連通域?qū)⑾袼攸c(diǎn)小于N的連通域內(nèi)所有像素點(diǎn)的邏輯值置0.經(jīng)過上述3個步驟后即可得到分割出的條形碼區(qū)域,如圖5(d)所示. 圖5 對條形碼圖像進(jìn)行腐蝕后提取連通域?qū)崿F(xiàn)背景分離 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)相與操作或按像素相乘操作即可得到只含有條形碼區(qū)域而不含其他任何背景的分割后的條形碼圖像,如圖6(b)所示. 3條形碼圖像的校正 在利用攝像頭等設(shè)備采集條形碼圖像時,可能會由于攝像頭等的傾斜造成采集到的條形碼圖片產(chǎn)生一定角度的傾斜,不便于識別.為解決條形碼圖像的傾斜問題,首先用canny邊緣檢測算子提取了條形碼圖像的邊緣,再用Hough變換檢測條形碼圖像水平和豎直的直線并求出條形碼的傾斜角度,最后以圖像中點(diǎn)為原點(diǎn)旋轉(zhuǎn)圖像即可得到校正后的條形碼圖像. 3.1條形碼邊緣檢測 為便于利用Hough變換找到條形碼的水平和豎直直線,首先利用邊緣檢測算子提取條形碼的邊緣,常見的邊緣檢測算子有Roberts算子、Sobel算子、Prewitt算子、LOG算子和Canny算子等[13-15].考慮到Canny算子檢測邊緣時抗噪聲性能和邊緣檢測效果都優(yōu)于其他幾種常見的算子,故采用Canny算子提取條形碼圖像邊緣,步驟如下: (1)利用高斯濾波器對原始圖像f(x,y)進(jìn)行平滑處理,得到平滑后的圖像g(x,y): g(x,y)=f(x,y)*H(x,y), (3) (2)用一階偏導(dǎo)有限差分計(jì)算梯度幅值和方向: (4) (5) 式中,|G(x,y)|為梯度大小,θ為梯度的方向,Gx和Gy分別為x方向和y方向的梯度算子,一般可用Sobel算子. (3)對梯度幅值進(jìn)行非極大抑制 得到梯度幅值后無法提取邊緣,還需要找出鄰域內(nèi)梯度最大的像素點(diǎn)抑制非最大的像素點(diǎn).對于任意一個像素點(diǎn),比較其梯度值與鄰域的梯度值,若不是鄰域內(nèi)的最大梯度,則將該像素點(diǎn)的灰度值置0. (4)用雙閾值算法檢測和連接條形碼邊緣 設(shè)定兩個閾值T1和T2(T2≈2T1)對非極大抑制圖像進(jìn)行分割,由于T2較大,其分割的圖像含有較少的偽邊緣,但是邊緣會有較多的中斷,利用T1閾值分割的結(jié)果不斷填補(bǔ)T2分割圖像中的不連續(xù)點(diǎn),即可得到含有較少偽邊緣的連續(xù)邊緣. 利用不同的邊緣檢測算子檢測條形碼邊緣的效果如圖7所示.由圖7可以看出,利用Canny算子做邊緣檢測可以得到更多的連續(xù)邊緣,減少邊緣的中斷.同時,由于Canny邊緣檢測利用到了高斯濾波器,對于存在一定噪聲的條形碼圖像也能取得較為理想的邊緣檢測效果. 圖7 不同算子邊緣檢測效果的對比 Fig.7 The processing effect comparison between different edge detection operator 3.2條形碼傾角計(jì)算及旋轉(zhuǎn)校正 檢測到條形碼的邊緣后即可利用Hough變換[16]提取條形碼圖像中水平和豎直的直線并計(jì)算直線的傾斜角度.直線提取及傾角傾角計(jì)算步驟如下: (1)利用Canny算子對原始灰度圖像(圖8(a))作邊緣檢測,結(jié)果如圖8(b)所示. (2)根據(jù)邊緣檢測圖像創(chuàng)建Hough變換累加器存儲空間. (3)在參數(shù)平面對每一點(diǎn)做Hough變換,計(jì)算其(ρ,θ)值,將相應(yīng)的累加器加1. (4)統(tǒng)計(jì)累加值的局部最大點(diǎn),參數(shù)域中累加值的分布情況如圖8(c)所示.其中,較大的累加值對應(yīng)圖像空間中的一條直線,已用方框標(biāo)記出來. (5)根據(jù)檢測到的點(diǎn)在圖像空間中繪制出直線,如圖8(d)所示. (6)根據(jù)圖8(c)Hough變換圖中H(ρ,θ)的分布可知,原始圖像中主要存在兩種傾斜角度的直線,分別為θ=45°和θ=-45°,分別對應(yīng)條形碼中水平和豎直的線段. 圖8 利用Hough變換提取條形碼直線計(jì)算傾角 Fig.8 Extract the lines in the bar code and compute its angle by Hough transformation 利用Canny邊緣檢測和Hough變換得到條形碼圖像的傾斜角度后,即可將圖像旋轉(zhuǎn)校正至垂直方向以便于識別.這里以條形碼圖像的中點(diǎn)為原點(diǎn)進(jìn)行旋轉(zhuǎn)校正,步驟如下: (1)坐標(biāo)平移變換.將條形碼圖像的中心像素點(diǎn)移到參考坐標(biāo)原點(diǎn)(x0,y0),即中心像素的坐標(biāo)變?yōu)?0,0),其他像素點(diǎn)的坐標(biāo)依次變?yōu)?/p> (6) 其中,(x,y)為平移變換前的像素坐標(biāo),(x′, y′)為平移變換后的像素坐標(biāo)空間. (2)坐標(biāo)旋轉(zhuǎn)變換.將所有像素點(diǎn)以中心像素為原點(diǎn)旋轉(zhuǎn)角度θ,即 (7) 圖9 傾斜圖像旋轉(zhuǎn)校正 Fig.9 The correction of the inclined image 4結(jié)束語 研究了利用攝像頭采集的條形碼圖像識別的預(yù)處理算法,給出并實(shí)現(xiàn)了條形碼預(yù)處理算法,實(shí)驗(yàn)證明該算法有較高的準(zhǔn)確度和較好的處理效果. 參考文獻(xiàn): [1]李金哲.條形碼自動識別系統(tǒng)[M].北京:國防工業(yè)出版社,1991. [2]鄭文超.條形碼技術(shù)指南[M].北京:中國標(biāo)準(zhǔn)出版社,2003:4-6. [3]張成海,郭衛(wèi)華.QR Code二維碼[M].北京:中國標(biāo)準(zhǔn)出版社,2000. [4]矯云起,張成海.二維條形碼技術(shù)[M].北京:中國物價出版社,1996. [5]趙群禮,周秋平.基于圖像的二維條形碼識別技術(shù)研究[J].合肥師范學(xué)院學(xué)報(bào),2010(6):57-59. [6]范哲意,江帆,劉志文.基于拍攝圖像的PDF417條形碼識別[J].北京理工大學(xué)學(xué)報(bào),2008(12):1088-1092. [7]趙德,聶文濱.一種基于圖像方式的二維條形碼快速識別的方法[J].南昌航空工業(yè)學(xué)院學(xué)報(bào),2006(4):48-51. [8]王佳,李波,徐其志.邊緣檢測中局部區(qū)域的動態(tài)閾值選取的方法[J].計(jì)算機(jī)應(yīng)用研究,2010,27(2):88-90. [9]曾磊.基于Otsu法自適應(yīng)閾值的圖像分割研究[J].信息技術(shù),2008,10(3):88-90. [12]李了了,鄧善熙,丁興號.基于大津法的圖像分塊二值化算法[J].微計(jì)算機(jī)信息,2005,21(14):76-77. [13]崔屹.圖像處理與分析——數(shù)學(xué)形態(tài)學(xué)方法與應(yīng)用[M].北京:科學(xué)出版社,2000. [14]岡薩雷斯.數(shù)字圖像處理[M].北京:北京電子工業(yè)出版社,2011. [15]段瑞玲,李慶祥,李玉和.圖像邊緣檢測方法研究綜述[J].光學(xué)技術(shù),2005,31(3):415-419. [16]徐欣風(fēng),董貴華,姚志軍.仿真模板的Hough變換直線檢測[J].儀器儀表學(xué)報(bào),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