趙琪 高美歡
摘要:條碼技術(shù)是一種自動(dòng)識(shí)別技術(shù),其應(yīng)用范圍越來越廣。針對(duì)工業(yè)生產(chǎn)線上條形碼識(shí)別問題,首先介紹了幾種常見的條形碼,分析了工業(yè)中用于標(biāo)識(shí)與跟蹤的Code128條形碼的結(jié)構(gòu)、編碼原理和譯碼方法。基于工業(yè)生產(chǎn)檢測(cè)中常見噪聲條形碼和模糊條形碼的特點(diǎn),對(duì)條碼圖像進(jìn)行圖像裁剪、圖像灰度化和圖像形態(tài)學(xué)處理等預(yù)處理后,選用灰度形態(tài)學(xué)的腐蝕算法將條形碼條中的間隙腐蝕掉,使其變?yōu)檫B續(xù)的線狀,以便于后期條碼識(shí)別,并借助第三方庫Zbar完成條形碼識(shí)別。實(shí)驗(yàn)驗(yàn)證了該方法的有效性。
關(guān)鍵詞:
條形碼;圖像處理;zbar
DOIDOI:10.11907/rjdk.181903
中圖分類號(hào):TP312
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào)文章編號(hào):1672-7800(2018)008-0125-04
英文摘要Abstract:Bar code technology is an automatic identification technology. Its application scope is increasingly extensive. For the identification of bar codes on industrial production lines, several common bar codes were first introduced, and the structure, coding principle, and decoding method of Code 128 bar codes used for identification and tracking in the industry were analyzed. Based on the characteristics of noise bar codes and fuzzy bar codes commonly used in industrial production inspection, after preprocessing such as image cropping, image graying, and image morphology processing of bar code images, a gray morphology morphological erosion algorithm was used to remove gaps in bar code strips. It is eroded away, making it a continuous line for easy barcode identification and using the third-party library Zbar for barcode recognition. The effectiveness of the method was verified by experiments and good results were obtained.
英文關(guān)鍵詞Key Words:bar code;image processing;bar code recognition
0 引言
隨著科學(xué)技術(shù)發(fā)展和信息技術(shù)進(jìn)步,條碼識(shí)別技術(shù)得到了迅猛發(fā)展。條形碼技術(shù)作為一種全新的自動(dòng)識(shí)別技術(shù),已廣泛應(yīng)用于社會(huì)生活各個(gè)領(lǐng)域,如商場(chǎng)、大型超市、交通運(yùn)輸、定位導(dǎo)航[1]、物流管理[2]、圖書出版、醫(yī)療衛(wèi)生和郵政快遞等。由于準(zhǔn)確可靠、數(shù)據(jù)輸入速度快、信息量大、價(jià)格便宜、靈活實(shí)用及易于操作等[3],條形碼是迄今為止最經(jīng)濟(jì)實(shí)用的一種自動(dòng)識(shí)別技術(shù)。
最初,國外研究人員早期主要通過精準(zhǔn)定位條碼邊緣識(shí)別條碼,在這期間提出了一階差分方程[4]和傅里葉變換[5]等。在模糊條形碼圖像處理方面,奧拉齊奧和羅伯特[6]于2009年提出了基于可變條碼模型算法,該算法采用最大似然函數(shù)對(duì)模糊的條碼圖像進(jìn)行處理;賽義德[7]于2010年提出了另一種解決模糊條形碼的方法即雙峰特性法,但該方法僅能處理水平模糊問題;Kresic-Juric[8]于2006年提出了隱性馬爾科夫鏈模型,該方法需要探測(cè)條形碼的邊緣;奧拉齊奧和羅伯特在2010年又提出了新的條形碼識(shí)別算法,該算法基于灰度圖像和可變模型完成條形碼識(shí)別,不僅精度高,而且算法簡單,對(duì)條形碼識(shí)別作出很大貢獻(xiàn)。
國外研究人員早期主要通過精準(zhǔn)定位條碼邊緣識(shí)別條碼,提出了一階差分方程[4]和傅里葉變換[5]等。在模糊條形碼圖像處理方面,Gallo等[6]提出了基于可變條碼模型算法,采用最大似然函數(shù)對(duì)模糊的條碼圖像進(jìn)行處理;Yahyanejad等[7]提出了另一種解決模糊條形碼的方法即雙峰特性法,但該方法僅能處理水平模糊問題;Krei-JuriKreˇsi′c-jiri′c s等[8]提出了隱性馬爾科夫鏈模型,該方法需要探測(cè)條形碼的邊緣;Gallo[9]又提出了新的條形碼識(shí)別算法,該算法基于灰度圖像和可變模型完成條形碼識(shí)別,不僅精度高,而且算法簡單,對(duì)條形碼識(shí)別作出了很大貢獻(xiàn)。
我國對(duì)條形碼技術(shù)的研究始于20世紀(jì)80年代中期,20世紀(jì)90年代開始研究二維條碼技術(shù)。有些學(xué)者從條形碼解碼方面進(jìn)行研究,有效提高了條形碼的正確識(shí)讀。姚俊等[10]對(duì)具有復(fù)雜背景的條碼圖像提出來基于模板匹配的區(qū)域分割方法,將條碼圖像從復(fù)雜背景中分離出來;徐益峰等[11]提出用雙平方邊緣直線擬合算法對(duì)圖像進(jìn)行校準(zhǔn),該方法在進(jìn)行圖像校正的同時(shí)也使算法復(fù)雜度得到降低。
但是,目前工業(yè)生產(chǎn)檢測(cè)線由于存在光照不均、角度傾斜等限制因素,現(xiàn)有掃碼器很難完成對(duì)運(yùn)動(dòng)過程中條形碼的識(shí)別。條碼在印刷過程中存在的質(zhì)量問題,如條碼展寬、漏印等,更對(duì)條碼識(shí)別帶來困難,嚴(yán)重影響了條碼的正確識(shí)讀。本文結(jié)合機(jī)器視覺將圖像處理技術(shù)應(yīng)用于條碼識(shí)別,大大減少了圖像質(zhì)量對(duì)條碼識(shí)別的影響,從而能提高條碼識(shí)讀率,提高工作效率。
1 條形碼
條形碼是由一組寬度不等的條和空按照一定編碼規(guī)則排列,從而表達(dá)一組信息的圖形。條形碼主要分為一維條形碼和二維條形碼。一維條碼比較常用,如商品外包裝袋上印刷的條碼就是一維碼, 但其信息存儲(chǔ)量小。二維碼是近幾年發(fā)展起來的,它能在有限空間內(nèi)存儲(chǔ)更多信息,包括文字、圖像、指紋、簽名等,并可脫離計(jì)算機(jī)使用。二維條碼根據(jù)構(gòu)成原理和結(jié)構(gòu)形狀可分為行排式與矩陣式[12]。
1.1 條形碼分類
條碼種類很多,常見的碼制大概有20多種,其中包括:Code39碼(標(biāo)準(zhǔn)39碼)、Codabar碼(庫德巴碼)、Code25碼(標(biāo)準(zhǔn)25碼)、ITF25碼(交叉25碼)、Matrix25碼(矩陣25碼)、UPC-A碼、UPC-E碼、EAN-13碼(EAN-13國際商品條碼)、EAN-8碼(EAN-8國際商品條碼)、中國郵政碼(矩陣25碼的一種變體)、Code-B碼、MSI碼、Code11碼、Code93碼、ISBN碼、ISSN碼、Code128碼(包括EAN128碼)、Code39EMS(EMS專用的39碼)等一維條碼和PDF417等二維條碼。一維條碼分類及用途見圖1。
Code128碼可表示從 ASCII 0 到ASCII 127 共128個(gè)字符,故稱128碼。其由于優(yōu)良的特性,因而被廣泛應(yīng)用于企業(yè)內(nèi)部管理、生產(chǎn)流程、物流控制系統(tǒng)等方面。本文主要以工業(yè)生產(chǎn)線上的一維Code128碼為研究對(duì)象。
1.2 Code128碼編碼規(guī)則
Code128碼每個(gè)字符由3個(gè)條、3個(gè)空、11個(gè)單元構(gòu)成,符號(hào)內(nèi)含校驗(yàn)碼。Code128碼有3種不同版本:Code128A(數(shù)字、大寫字母、控制字符)、Code128B(數(shù)字、大小字母、字符)和Code128C(雙位數(shù)字)。其中,Code128A包括標(biāo)準(zhǔn)數(shù)字和大寫字母、控制符、特殊字符;Code128B包括標(biāo)準(zhǔn)數(shù)字和大寫字母、小寫字母、特殊字符;Code128C包括[00]-[99]的數(shù)字對(duì)集合,共100個(gè)。
Code128碼主要有以下特性:①Code128碼具有A、B、C 3種不同編碼類型,可提供標(biāo)準(zhǔn)ASCII中128個(gè)字元的編碼使用;②Code128碼允許雙向掃描,既可以從左到右,也可以從右到左,主要得益于其編碼規(guī)則;③Code128碼可自行決定是否加上檢驗(yàn)位;④Code128條碼長度可調(diào),但包含開始位和結(jié)束位在內(nèi),不可超過232個(gè)字元;⑤同一個(gè)128碼可由A、B、C 3種不同編碼規(guī)則互換,既可擴(kuò)大字元的選擇范圍,也可縮短編碼長度。
Code128編碼規(guī)則:開始位+[FNC1(為EAN128碼時(shí)加)]+數(shù)據(jù)位+檢驗(yàn)位+結(jié)束位。
Code128檢驗(yàn)位計(jì)算:(開始位對(duì)應(yīng)的ID值 + 每位數(shù)據(jù)在整個(gè)數(shù)據(jù)中的位置×每位數(shù)據(jù)對(duì)應(yīng)的ID值)%103。
以95270078為例,Code128編碼:Code128A開始位對(duì)應(yīng)的ID為103,第1位數(shù)據(jù)9對(duì)應(yīng)的ID為25,第2位數(shù)據(jù)5對(duì)應(yīng)的ID為21,依此類推,可以計(jì)算檢驗(yàn)位:(103 + 1×25 + 2×21 + 3×18 + 4×23 + 5×16 + 6×16 + 7×23+8×24)%103=21,即檢驗(yàn)位的ID為21。95270078編碼表示為:開始位StartA+數(shù)據(jù)位[9+5+2+7+0+0+7+8]+檢驗(yàn)位21+結(jié)束位Stop,對(duì)照Code128編碼表即可生成Code128A碼。128B與128A類似,128C只能對(duì)長度為偶數(shù)的數(shù)字串編碼,每兩個(gè)數(shù)字為一位,使輸出的信息壓縮了一半,打印的條形碼因此也較短。
1.3 條形碼識(shí)別常用方法
條形碼識(shí)別過程即對(duì)條形碼進(jìn)行譯碼的過程,得到條形碼包含的文本信息。識(shí)別技術(shù)是條形碼應(yīng)用的關(guān)鍵技術(shù)。要辨別一個(gè)條碼,必須知道條碼的條、空間隔和1個(gè)字符的寬度。常用的條形碼識(shí)別方法主要有兩類:一類是根據(jù)條形碼的編碼規(guī)則,利用編碼原理進(jìn)行條形碼識(shí)別,主要包括平均值譯碼法和相似邊距離譯碼法[13]。該類方法需要相應(yīng)的識(shí)別算法,且程序編程作業(yè)量大,受干擾影響強(qiáng)度大,對(duì)圖像質(zhì)量要求高。另一類是利用開源的條形碼識(shí)別工具包進(jìn)行條碼識(shí)別[14]。該類方法簡單方便,識(shí)別速度快。目前用于條形碼識(shí)別的工具包很多,但是開源的并不多。用于條碼識(shí)別的開源工具包主要有兩個(gè):Zbar工具包、ZXing工具包。兩者都適用于多種格式的一維二維條形碼識(shí)別,并支持多平臺(tái)開發(fā)使用。
針對(duì)工業(yè)流水線上條形碼識(shí)別的特殊性,算法在滿足正確識(shí)讀精度的前提下,還要滿足工業(yè)生產(chǎn)的實(shí)時(shí)性要求。依據(jù)簡單、便捷、快速的原則,針對(duì)工業(yè)流水線上條形碼的識(shí)別要求,本文選用后一種方法進(jìn)行條形碼識(shí)別算法研究。
2 條碼識(shí)別主要算法
識(shí)別技術(shù)是條形碼應(yīng)用的關(guān)鍵技術(shù),而圖像處理技術(shù)將直接影響條形碼識(shí)讀效果。本文以生產(chǎn)線上噴碼機(jī)噴制的Code128條形碼為研究對(duì)象,利用圖像處理技術(shù)提高條碼圖像質(zhì)量,最后運(yùn)用條碼識(shí)別工具實(shí)現(xiàn)條形碼識(shí)別。條碼圖像預(yù)處理是條碼識(shí)別前的關(guān)鍵步驟,主要包括圖像裁剪、圖像灰度化和圖像形態(tài)學(xué)處理等。工作流程見圖2。
2.1 圖像裁剪
在對(duì)生產(chǎn)線上的條形碼進(jìn)行識(shí)別時(shí),首先要獲取條形碼圖像。實(shí)驗(yàn)所用相機(jī)獲取的視野范圍是12 801 024,條形碼區(qū)域大小為934 125,占整個(gè)視野的8.9%。過多的背景不僅降低了條形碼識(shí)別速度,還增加了條形碼識(shí)別難度。所以需要將條形碼圖像從背景中裁剪出來,以去除不必要的背景信息,提高后期處理速度和識(shí)別準(zhǔn)確度。本文根據(jù)條形碼在圖像中的位置信息,手動(dòng)將條形碼從圖像中裁剪出來。
2.2 圖像灰度化
實(shí)驗(yàn)所用相機(jī)是大華A5131CG75型號(hào)的彩色相機(jī),拍攝圖像為真彩色圖像,包含很多與條形碼信息無關(guān)的顏色信息。彩色圖像中每個(gè)像素點(diǎn)顏色由R、G、B 3個(gè)分量決定,每個(gè)分量有255種選擇,一個(gè)像素點(diǎn)就有1 600多萬種選擇。而灰度圖像是R、G、B 3個(gè)分量相同時(shí)的一種特殊彩色圖像,一個(gè)像素點(diǎn)的顏色只有255種選擇。所以,為了降低數(shù)據(jù)計(jì)算量,本文采用圖像灰度化法將相機(jī)獲取的彩色圖像變換成灰度圖像,以過濾掉與條形碼無關(guān)信息。
灰度圖像的描述與彩色圖像一樣,仍反映了圖像整體或局部的色度和亮度等級(jí)分布及特征[15-17]。常用的灰度化處理方法主要有最大值法、平均值法和加權(quán)平均值法。
最大值法是將一個(gè)像素點(diǎn)的R、G、B 3個(gè)分量等同于該像素3個(gè)分量的最大值。平均值法是將一個(gè)像素點(diǎn)的R、G、B 3個(gè)分量等同于其平均值。加權(quán)平均值法就是在平均值基礎(chǔ)上根據(jù)人眼對(duì)每個(gè)分量顏色的最佳敏感度設(shè)計(jì)權(quán)重,再取平均值的方法。處理結(jié)果如圖3所示。
由圖3對(duì)比分析可知,最大值法結(jié)果圖較亮,加權(quán)平均值法次之,平均值法結(jié)果圖較暗。根據(jù)條形碼圖像 “條”、“空”排列組合的特點(diǎn),圖像灰度差異較大,所以本文選取適合人眼敏感度的加權(quán)平均值法對(duì)條形碼圖像進(jìn)行灰度化處理。灰度化結(jié)果如圖4所示。
2.3 數(shù)學(xué)形態(tài)學(xué)處理
數(shù)學(xué)形態(tài)學(xué)是一種非線性的圖像處理和分析理論,其基本思想是用具有一定形態(tài)的結(jié)構(gòu)元素,度量與提取圖像中的對(duì)應(yīng)形狀,以達(dá)到對(duì)圖像分析和識(shí)別的目的[18]。數(shù)學(xué)形態(tài)學(xué)的基本運(yùn)算有4個(gè):膨脹、腐蝕、形態(tài)開和形態(tài)閉[19-20]。本文以相機(jī)采集到噴碼機(jī)噴制的Code128條形碼為研究對(duì)象[21]。由于組成條形碼的條不是連續(xù)的線狀,而是中間有間隙,為了將顆粒不連續(xù)狀條形碼中的條變換成連續(xù)的線狀,定位出條形碼位置,選用數(shù)學(xué)形態(tài)學(xué)對(duì)條形碼圖像進(jìn)行腐蝕操作[22-23]。腐蝕處理將背景變?yōu)榘咨瑮l形碼變?yōu)楹谏?,腐蝕掉條形碼圖像中的白色間隙,從而定位出條形碼圖像的位置[24],得到利于后續(xù)識(shí)別的條形碼圖像。數(shù)學(xué)形態(tài)學(xué)方法主要有二值形態(tài)學(xué)和灰度形態(tài)學(xué)。因研究對(duì)象為灰度圖,所以本文選用灰度形態(tài)學(xué)方法對(duì)條形碼圖像進(jìn)行腐蝕操作。
3 實(shí)驗(yàn)及結(jié)果分析
實(shí)驗(yàn)平臺(tái):win7+vs2010+opencv2.4.10+Zbar
實(shí)驗(yàn)數(shù)據(jù)由相機(jī)在工業(yè)生產(chǎn)線上采集獲得,根據(jù)前文條形碼識(shí)別主要算法的研究成果,通過實(shí)驗(yàn)驗(yàn)證該算法的有效性。
圖像處理算法主要有圖像裁剪、圖像灰度化和形態(tài)學(xué)處理等。其中,根據(jù)人眼對(duì)顏色的敏感度特點(diǎn),選用加權(quán)平均值法對(duì)條形碼圖像進(jìn)行灰度化處理,R、G、B權(quán)值分別為λR=0.30、λG=0.59、λB=0.11。根據(jù)圖像特點(diǎn),形態(tài)學(xué)處理選用灰度形態(tài)學(xué)中的腐蝕算法處理圖像。圖像處理結(jié)果如圖6所示。
實(shí)驗(yàn)在Win7操作系統(tǒng)下,使用VC++開發(fā)工具,利用Zbar條形碼識(shí)別功能完成條形碼識(shí)別。識(shí)別結(jié)果如圖7、圖8所示。
圖7顯示了條形碼圖像包含的文本信息,其中包括加載的圖像位置、條形碼類型、條形碼對(duì)應(yīng)數(shù)字以及條形碼傾斜角度。圖8表示將識(shí)別結(jié)果顯示在條形碼圖像上,以便與條形碼圖像上帶有的數(shù)字進(jìn)行對(duì)比分析。由圖7與圖8可知,條形碼圖像識(shí)別結(jié)果為:92679-216907-177E-07131,與條形碼標(biāo)示的結(jié)果一致,識(shí)別正確。
4 結(jié)語
本文主要基于圖像處理技術(shù)對(duì)條形碼圖像進(jìn)行去噪去模糊處理。首先,介紹條碼的種類及編解碼原理;其次,對(duì)工業(yè)生產(chǎn)中常見問題條形碼的處理算法進(jìn)行介紹,如噪聲條形碼和模糊條形碼;第三,根據(jù)條形碼圖像特點(diǎn),通過算法比較,選擇合適的形態(tài)學(xué)處理方法對(duì)圖像進(jìn)行腐蝕;第四,利用Zbar提供的一維條形碼譯碼算法對(duì)條形碼進(jìn)行識(shí)別。通過實(shí)驗(yàn)對(duì)本文條形碼識(shí)別算法的有效性進(jìn)行了驗(yàn)證,結(jié)果表明,本文算法能夠有效提高條形碼識(shí)別算法的準(zhǔn)確性,滿足工業(yè)生產(chǎn)需求。
參考文獻(xiàn):
[1] 鄒冬旭,張維存,孟宇.編碼信標(biāo)識(shí)別方法在定位導(dǎo)航系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)仿真,2014,31(5):415-418.
[2] 陸祥瑞.物流動(dòng)態(tài)管理信息系統(tǒng)設(shè)計(jì)、開發(fā)及建立[J].計(jì)算機(jī)仿真,1994(4):17-23.
[3] 劉艷洋,曹玉東.EAN-13條形碼圖像的識(shí)別[J].計(jì)算機(jī)技術(shù)與發(fā)展,2015,25(6):202-205
[4] JOSEPH E,PAVLIDIS T.Waveform recognition with application to bar codes[C].Proceedings of 1991 IEEE System, 1991:129-134.
[5] LIU N Z,YANG J Y.Recognition of two-dimensional bar code based on fourier transform[J].Journal of Image and Graphics, 2003(8), 877-882 .
[6] GALLO O,MANDUCHI R.Reading challenging barcodes with cameras[C].IEEE Workshop on Applications of Comput Vision,2009:1-6.
[7] YAHYANEJAD S,STRM J. Removing motion blur from barcode images[C].IEEE Computer Society Conference on Computer Vision and Pattern Recognition Workshops,2010:41-46.
[8] KREˇSI′C-JURI′C S, MADEJ D, SANTOSA F. Applications of hidden markov models in bar code decoding[J].Pattern Recogn Letters,2006,27(14):1665-1672.
[9] 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.
[10] 姚俊,范永法,潘樹國.基于模板匹配的有復(fù)雜背景的條碼圖像區(qū)域分割[J].河海大學(xué)常州分校學(xué)報(bào),2003(4):24-27+67.
[11] 徐益峰,金晅宏,戴曙光.基于EAN-13條形碼識(shí)別的改進(jìn)算法[J].計(jì)算機(jī)與數(shù)字工程,2011,39(7):127-131.
[12] 陳丹暉,劉紅.條碼技術(shù)與應(yīng)用[M].北京: 化學(xué)工業(yè)出版社,2006.
[13] 黃以群,董湘陵.條形碼技術(shù)[M].北京:國防工業(yè)出版社,1991.
[14] 吳兆林.基于Zbar條形碼圖像識(shí)別的實(shí)現(xiàn)[J].數(shù)字技術(shù)與應(yīng)用,2016(08):128-129.
[15] 趙雪青.基于自適應(yīng)神經(jīng)網(wǎng)絡(luò)模糊推理系統(tǒng)的圖像去噪算法研究[D].西安:陜西師范大學(xué),2010.
[16] 咚成,王士同,滿麗紅.一種改進(jìn)的PD圖像去噪方法[J].計(jì)算機(jī)工程與應(yīng)用,2010,46(15):176-178.
[17] 武丹,汪國昭.基于差分?jǐn)U張和差分平移的無損信息隱藏算法[J].吉林大學(xué)學(xué)報(bào),2010,40(4):1071-1074.
[18] 崔屹.圖像處理與分析——形態(tài)學(xué)方法與應(yīng)用[M].北京: 科學(xué)出版社,2000.
[19] 章毓晉.圖像處理和分析[M].北京:清華大學(xué)出版社,2000.
[20] 章毓晉.圖像分割[M].北京:科學(xué)出版社,2001.
[21] 劉東,高西全.QR碼圖像處理及識(shí)別算法的研究[J].電子科技,2003(22):42-44.
[22] 稅午陽,周明全,耿國華,等.基于數(shù)字圖像處理的 EAN13碼識(shí)別[J].計(jì)算機(jī)工程與應(yīng)用,2008,44(26):177-179.
[23] 衛(wèi)權(quán)崗,馬建紅,吳非洋,等.使用手機(jī)進(jìn)行ENA-13碼的識(shí)別及應(yīng)用[J].電腦編程技巧與維護(hù),2011,1(16):107-111.
[24] 鄧澤峰,熊有倫,黃小鵬.圖像式一維條碼識(shí)別的三重編碼方法[J].光學(xué)工程,2010,37(3):133-137.
[25] 黃小英.基于圖象的條形碼識(shí)別的算法研究及設(shè)計(jì)[J].電子技術(shù),2011,38(5):21-22.
(責(zé)任編輯:何 麗)