趙群禮, 周秋平
(合肥師范學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系,安徽合肥230061)
基于圖像的二維條形碼識(shí)別技術(shù)研究
趙群禮, 周秋平
(合肥師范學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系,安徽合肥230061)
簡要闡述了條形碼技術(shù)國內(nèi)外發(fā)展?fàn)顩r和二維條形碼的編碼方法,并對(duì)圖像式條形碼識(shí)別過程進(jìn)行了概述,提出了其中存在的技術(shù)難點(diǎn)并給出了解決方案,最后文章指出了條形碼識(shí)別技術(shù)的發(fā)展趨勢。
條形碼;二維條形碼;圖像式條形碼識(shí)別技術(shù)
條形碼技術(shù)起源于20世紀(jì)40年代的美國,隨著信息技術(shù)的飛速發(fā)展,條形碼技術(shù)發(fā)展迅速,在國際上已得到了廣泛的應(yīng)用。目前應(yīng)用較多的是一維條形碼技術(shù),如:UPC-E、EAN-8、EAN-13等[1]。但一維條形碼存在包含信息量小、沒有糾錯(cuò)能力、保密性不高、需要數(shù)據(jù)庫支持等缺點(diǎn),隨著社會(huì)的發(fā)展,物品的豐富,一維條形碼技術(shù)越來越滿足不了實(shí)際的需求,因此促使人們開始對(duì)二維條形碼技術(shù)進(jìn)行研究。
目前二維條形碼技術(shù)已有較深入的發(fā)展,出現(xiàn)了多種編碼標(biāo)準(zhǔn),應(yīng)用比較廣泛的有 QR Code (Quick Response Code)碼、PDF417(Portable Data File 417)碼、Code49碼、Code 16K碼、Data Matrix碼、MaxiCode碼等[2,3]。二維條形碼的出現(xiàn),促使條形碼識(shí)別技術(shù)也得到了進(jìn)一步發(fā)展,由于二維條碼要比一維條碼復(fù)雜的多,廣泛應(yīng)用于一維條形碼識(shí)別中的光電技術(shù),已不適合二維條形碼的識(shí)別,這促使新的條碼識(shí)別技術(shù)——圖像式識(shí)別技術(shù)的出現(xiàn)。在國外,二維條碼技術(shù)已經(jīng)處于應(yīng)用階段,并已制造出性能較好的圖像式條碼識(shí)別設(shè)備。例如:美國HHP公司生產(chǎn)的IT4600系列、IT5800的二維圖像式條碼識(shí)別器。國內(nèi)圖像式識(shí)別技術(shù)的研究起步比較晚,還處在研究階段,與國外水平還有很大差距。雖然條碼的標(biāo)準(zhǔn)和壓縮算法早已公開,然而由于技術(shù)保密原因,核心技術(shù)不公開,并受到嚴(yán)格的專利保護(hù)。所以國內(nèi)的圖像模式的二維條碼大多依賴于進(jìn)口,但價(jià)格非常昂貴,影響了二維條碼的普及。目前國內(nèi)的產(chǎn)品大都是滿足客戶的某種需要而設(shè)計(jì),有很大的局限性。本文將結(jié)合二維條形碼的編碼原理,對(duì)圖像式二維條形碼的識(shí)別技術(shù)進(jìn)行探討。
二維條形碼的編碼過程就是將可讀信息轉(zhuǎn)換成用于繪制條碼的碼字,然后加上必要的附加信息。其流程為:運(yùn)用編碼算法將有用信息轉(zhuǎn)換成二維條形碼碼字,再通過數(shù)據(jù)庫查詢把碼字轉(zhuǎn)換成對(duì)應(yīng)的條空相間的符號(hào)字符,最后在計(jì)算機(jī)上將那些層層相疊的條空繪出,即二維條形碼圖像。二維條形碼按照其編碼原理和結(jié)構(gòu)形狀的差異主要分為堆積或?qū)优攀胶推灞P或矩陣式兩大類,本文以層排式二維條形碼為例簡要介紹二維條形碼的編碼方法。
層排式二維條形碼是一種多層、可變長度、具有高容量和糾錯(cuò)能力的連續(xù)型二維條碼。如圖1所示每一個(gè)二維條形碼可以包括3~90層,每一層由起始符/終止符、左/右層指示符及1~30個(gè)符號(hào)字符組成。每一個(gè)符號(hào)字符由17個(gè)模塊構(gòu)成,其中包括4個(gè)條和4個(gè)空,每一個(gè)條、空由1~6個(gè)模塊組成。由于層數(shù)及每一層的符號(hào)字符數(shù)是可變的,故二維條形碼符號(hào)的高寬比可以變化以適應(yīng)不同的需要。
圖1 層排式二維條形碼結(jié)構(gòu)示意圖
對(duì)于層排式二維條碼,編碼方法從根本上與一維條碼有相似之處,但也存在很大不同。二維條碼編碼最重要的還是將數(shù)據(jù)(漢字或ASCII碼)轉(zhuǎn)換成符號(hào)的過程,這一過程主要采用文本組合模式??梢詫?shù)據(jù)與文本模式下的值的對(duì)應(yīng)關(guān)系保存在一個(gè)數(shù)據(jù)庫的一張數(shù)據(jù)表中,通過數(shù)據(jù)庫查詢得到的是各個(gè)字符對(duì)應(yīng)的文本碼,將這些文本碼兩兩組合在一起就可以生成二維條形碼字。組合公式為:碼字=30×H+L,式中H、L分別表示字符對(duì)中的高位和低位字符值。
根據(jù)這些數(shù)據(jù)碼字以及選擇的錯(cuò)誤糾正等級(jí)計(jì)算糾錯(cuò)碼字。錯(cuò)誤糾正碼字根據(jù)里德——索洛蒙(Reed-Solomn)錯(cuò)誤控制碼算法計(jì)算,包括如下幾個(gè)步驟:
(1)建立符號(hào)數(shù)據(jù)多項(xiàng)式,該多項(xiàng)式的表達(dá)式是:
式中多項(xiàng)式的系數(shù)由數(shù)據(jù)碼字區(qū)的碼字組成。其中包括符號(hào)長度碼字、數(shù)據(jù)碼字和填充碼字,排列位置如圖2所示,其中Li,Ri為左、右行指示符,di為數(shù)據(jù)碼字,Ci為糾錯(cuò)碼字[3]。
圖2 行指示符、數(shù)據(jù)和糾錯(cuò)碼字
(2)建立糾錯(cuò)碼字的生成多項(xiàng)式,具有k個(gè)錯(cuò)誤糾正碼字的生成多項(xiàng)式為:
(3)計(jì)算錯(cuò)誤糾正碼字,對(duì)于一組給定的數(shù)據(jù)碼字和一個(gè)選定的錯(cuò)誤糾正等級(jí),錯(cuò)誤糾正碼字為符號(hào)數(shù)據(jù)多項(xiàng)式 d(x)乘以 xk,然后除以生成多項(xiàng)式 g (x),所得余式的各項(xiàng)系數(shù)的補(bǔ)數(shù)。得到糾錯(cuò)碼字之后,根據(jù)碼字?jǐn)?shù)量選擇條碼的行數(shù)和列數(shù)。然后可以根據(jù)數(shù)據(jù)碼字、左/右行指示符、糾錯(cuò)碼字以及各行的族號(hào)查詢各個(gè)碼字對(duì)應(yīng)的符號(hào)字符,并根據(jù)這些符號(hào)字符繪制條形碼,這一過程可以仿照一維條碼的繪制方法。
采用數(shù)字圖像處理技術(shù)對(duì)二維條碼進(jìn)行識(shí)別,是二維條形碼識(shí)別中較常用的方法,它在處理污損的條形碼方面有光電識(shí)別方法無法比擬的優(yōu)勢。另外圖像式識(shí)別方法對(duì)識(shí)別角度的要求沒有光電識(shí)別方法那么嚴(yán)格,對(duì)有些二維條形碼(如QR Code碼)可以以任意的角度識(shí)別。
3.1 圖像式條形碼識(shí)別過程
在圖像式條形碼識(shí)別過程中,首先使用圖像采集設(shè)備采集二維條形碼圖像,然后利用圖像處理技術(shù)對(duì)條形碼圖像進(jìn)行去噪和分割處理,最后調(diào)用條碼特征讀取算法,讀出條碼值并顯示識(shí)別結(jié)果,圖3是圖像式條形碼識(shí)別過程,其中各模塊的功能如下:
(1)圖像采集。通過數(shù)碼相機(jī)、掃描儀或?qū)S玫膱D像傳感器,如CCD圖像傳感器或CMOS圖像傳感器等設(shè)備采集條形碼圖像。
(2)圖像預(yù)處理。圖像預(yù)處理過程主要包括圖像降噪、背景分離、圖像校正等環(huán)節(jié)。由于采集系統(tǒng)或其他原因產(chǎn)生的噪聲,采集的圖像有些比較模糊或存在黑白孤立點(diǎn),這對(duì)條碼圖像的進(jìn)一步處理極為不利,因此要根據(jù)條碼圖像噪聲是否嚴(yán)重,選擇一種或多種濾波器進(jìn)行濾波,去除噪聲。目前采用較多的是中值濾波法。背景分離是將條碼區(qū)與背景分離,從而避免在沒有有效信息的區(qū)域進(jìn)行特征提取,提高后續(xù)處理的速度。背景分離一般采用標(biāo)準(zhǔn)差閾值跟蹤法,圖像條碼部分由黑白相間的條塊組成,灰度變化大,因而標(biāo)準(zhǔn)差較大;而背景部分灰度分布較為平坦,標(biāo)準(zhǔn)差較小。將條碼圖像分塊,每個(gè)小塊的標(biāo)準(zhǔn)差若大于某一閾值,則該小塊中的所有像素點(diǎn)為有效;否則為背景。由于采集進(jìn)來的圖像總會(huì)出現(xiàn)一定的傾斜和偏移產(chǎn)生幾何畸變,給快速、正確地識(shí)別條碼帶來困難,因此必須進(jìn)行圖像校正,一般方法是:利用行差運(yùn)算與Hough變換相結(jié)合,快速、準(zhǔn)確找到條碼圖像邊界線,計(jì)算出傾斜角度,通過雙線性插值對(duì)條碼圖像進(jìn)行校正。
圖3 圖像式條形碼識(shí)別過程
(3)二值化處理。條碼識(shí)別是以二值圖像為基礎(chǔ)的,圖像二值化算法很多,條碼圖像直方圖具有很好的雙峰特性,一般采用大津閾值法[4]就能夠?qū)τ跅l碼圖像進(jìn)行很好地分割。圖像二值化之后,二值圖像中“1”像素代表黑條部分,“0”像素代表白條部分。
(4)邊緣檢測。條碼識(shí)別問題的實(shí)質(zhì)是邊緣檢測的問題,傳統(tǒng)的條碼識(shí)別算法是根據(jù)二階導(dǎo)數(shù)零交叉來檢測條碼邊緣[2,6]。
(5)條碼讀取。根據(jù)確定的條碼邊緣確定條碼黑白模塊寬度,利用不同的條碼編碼規(guī)則編制相應(yīng)的譯碼程序,確定條碼字符值,這一算法是非常成熟的。
(6)結(jié)果顯示和處理。一般由計(jì)算機(jī)顯示條碼識(shí)別的結(jié)果,并可根據(jù)結(jié)果進(jìn)行實(shí)際應(yīng)用中的處理。
3.2 圖像式條碼識(shí)別技術(shù)難點(diǎn)
在圖像式的條形碼識(shí)別過程中,若能知道條碼條空寬度值,對(duì)于不同的條碼都有很成熟的算法來確定條碼符號(hào)值。因此在圖像式條碼識(shí)別過程中,圖像處理部分的算法是十分重要的,不同的圖像處理方法將影響后續(xù)的條碼識(shí)別結(jié)果。圖像處理過程中的技術(shù)難點(diǎn)如下:
(1)圖像模糊問題。因條碼印刷質(zhì)量差、光照較弱、攝像設(shè)備質(zhì)量等原因,采集的條形碼圖像比較模糊,黑白條塊之間的邊緣不清晰,甚至黑白條的邊緣幾乎融合在一起。針對(duì)這一問題,目前國內(nèi)的一些處理方法都采用各種經(jīng)典濾波技術(shù)對(duì)條碼圖像進(jìn)行去噪,如廣泛采用的中值濾波技術(shù)。當(dāng)采集圖像非常模糊時(shí),這種處理方法具有一定局限性,有時(shí)甚至導(dǎo)致條碼無法識(shí)別。
(2)邊緣檢測問題。在傳統(tǒng)算法中一般是根據(jù)二階導(dǎo)數(shù)零交叉來檢測條碼邊緣。由于圖像采集、圖像濾波過程中在條碼圖像邊緣處會(huì)有一定程度的模糊。又由于在條碼圖像去噪時(shí),大都選用經(jīng)典的中值濾波算法,該算法對(duì)椒鹽噪聲去噪聲效果很明顯,但對(duì)高斯噪聲去噪效果卻較差。而在實(shí)際應(yīng)用中,圖像采集產(chǎn)生的模糊基本上都是高斯噪聲,而中值濾波法對(duì)該噪聲不能有效地去除。在邊緣模糊情況下采用二階導(dǎo)數(shù)零交叉來檢測條碼邊緣會(huì)有1~2個(gè)像素的偏差,這對(duì)條碼的條空寬度的確定會(huì)產(chǎn)生影響,從而影響識(shí)別。因此邊緣模糊是影響條碼識(shí)別的重要因素。
3.3 解決技術(shù)難點(diǎn)的方法
要解決邊緣模糊問題,必須對(duì)噪聲進(jìn)行分析。我們知道平滑的圖像主要集中于中低頻部分,噪聲信息或邊緣信息主要集中在高頻段。通常的濾波方法都是不加區(qū)分的濾掉高頻信息,不可避免地也會(huì)濾掉邊緣信息,從而造成圖像邊緣模糊。文獻(xiàn)[6]提出了一種基于邊緣檢測的小波去噪方法,該方法利用小波變換良好的時(shí)頻特性,只要沿著梯度方向檢測小波變換系數(shù)模值的局部極大值點(diǎn),即可得到圖像的邊緣點(diǎn),但小波系數(shù)的模值極大值點(diǎn)也可能對(duì)應(yīng)著噪聲點(diǎn)。因此在檢測出小波系數(shù)的極大值后,還要去除與噪聲點(diǎn)對(duì)應(yīng)的小波系數(shù)。噪聲的Lipschitz指數(shù)為負(fù),信號(hào)的Lipschitz指數(shù)為正,它們隨著尺度的增大信號(hào)系數(shù)逐漸變大,而噪聲系數(shù)逐漸變小。根據(jù)這一特點(diǎn)可除去噪聲造成的虛假邊緣,將非噪聲點(diǎn)的模值極大點(diǎn)連接起來得到圖像的邊緣。這種方法既可達(dá)到去噪目的又可保持圖像的邊緣,這種把去噪和邊緣檢測結(jié)合起來的新思路在一定程度上解決了去噪引起圖像邊緣模糊的難題。
隨著二維條形碼的應(yīng)用普及,圖像處理技術(shù)在識(shí)別二維條形碼中的應(yīng)用將會(huì)越來越廣泛。和傳統(tǒng)的光電識(shí)別技術(shù)相比,采用圖像處理技術(shù)對(duì)有污染、殘缺、產(chǎn)生幾何畸變的條形碼的識(shí)別率更高,也更具有優(yōu)勢,因此研究高效的圖像式條碼識(shí)別方法是今后條碼識(shí)別技術(shù)發(fā)展的方向。由于我國對(duì)圖像式條碼識(shí)別方法研究起步較晚,還處于研究階段,目前的很多識(shí)別算法都具有局限性,因此開發(fā)出更具有通用性的圖像式條碼識(shí)別算法,將具有十分重要的意義。
[1] 李金哲.條形碼自動(dòng)識(shí)別系統(tǒng)[M].北京:國防工業(yè)出版社,1991.
[2] Normand N,Viard-Guadin C.Two Dimensional Bar Code Reader[J].Proceedings of SPIE,1994:125-132.
[3] 中華人民共和國國家標(biāo)準(zhǔn) GB/T17172-1997四一七條碼[S].國家技術(shù)監(jiān)督局1997.12.25批準(zhǔn),1998.8.1實(shí)施.
[4] 李了了,鄧善熙,丁興號(hào).基于大津法的圖像分塊二值化算法[J].微計(jì)算機(jī)信息,2005,21(8-3):76-77.
[5] Joseph E,Pavlidis T.Bar Code Waveform Recognition Using Peak Locations[J].IEEE Trans.PAMI,1994,16(6): 630-640.
[6] 王雅靜,竇震海.一種新的條碼圖像去噪方法[J].包裝工程, 2007,28(11):75-77.
A Research on Two-Dimension Barcode Recognition Technology Based on Image Processing
ZHAO Qun-li, ZHOU Qiu-ping
(Department of Com puter Science and Technology,Hef ei Normal University,Hef ei230061,China)
The paper introduces the actuality of barcode technologies development and the coding method of two-dimension barcode by describing the procedure of barcode recognition based on image processing.In the meanwhile,the paper puts forward the difficulties of barcode recognition technology,and solutions to solve those difficulties are also offered.In the last place,it gives the development trend of the barcode recognition technologies.
Barcode;Two-dimension barcode;Barcode recognition technology based on image processing
TP391.4
A
1674-2273(2010)06-0057-03
2010-07-10
合肥師范學(xué)院科研項(xiàng)目(2010kj06)
趙群禮(1974-),男,合肥師范學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系教師,研究領(lǐng)域?yàn)槟J阶R(shí)別、數(shù)據(jù)挖掘等。