馮闊
摘要:隨著商品種類的不斷豐富和信息化管理手段的應(yīng)用普及,條形碼作為現(xiàn)代生產(chǎn)、物流和銷售各環(huán)節(jié)的重要信息化手段之一,它的應(yīng)用也日益廣泛,而且,隨著我國對食品和藥品安全問題的重視,條碼作為追溯碼也開始被用于食品藥品追溯領(lǐng)域。如何對條形碼中的信息進(jìn)行提取就變得非常重要了。本文在這樣的背景下針對乳品企業(yè)的產(chǎn)品可追溯問題,設(shè)計了一套可用于乳品追溯的包裝條碼計算機(jī)視覺識別系統(tǒng)。
關(guān)鍵詞:條碼;乳品包裝;條碼識別;計算機(jī)視覺
中圖分類號:TP391.44 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2017)02-0204-02
本系統(tǒng)硬件部分采用面陣攝像機(jī)、工控機(jī)構(gòu)成,軟件部分采用C#語言和OpenCV軟件進(jìn)行開發(fā),采用EF Model(實體框架)作為程序框架,通過搭建好的視頻采集系統(tǒng),利用外觸發(fā)啟動攝像機(jī)采集圖像,經(jīng)過圖像預(yù)處理、識別區(qū)域的檢測和定位后,提取出待識別圖像,對于待識別圖像中的條碼和數(shù)字,分別采用相似邊距離方法進(jìn)行一維碼識別、采用逐行掃描法進(jìn)行二維碼識別,并利用模型匹配進(jìn)行數(shù)字識別。
本系統(tǒng)可綜合識別條碼以及數(shù)字識別,實驗表明本系統(tǒng)具有較好的識別效率和識別精度,可以滿足一般條件下的包裝條碼計算機(jī)識別,并且已在乳品可追溯方面取得應(yīng)用。
1 概述
在數(shù)不勝數(shù)的新型計算機(jī)科學(xué)技術(shù)出現(xiàn)之后,條形碼技術(shù)儼然已經(jīng)成為了最為經(jīng)濟(jì)實用的一種自動識別技術(shù)。隨著時代的不斷發(fā)展和用戶需求的不斷擴(kuò)展,各種各樣的商品出現(xiàn)在我們生活中[1]。雖然條形碼的技術(shù)發(fā)展的爐火純青,但是隨著條形碼的不斷變化和創(chuàng)新,識別包裝條形碼技術(shù)已然成為我們現(xiàn)在需要不斷研究的課題。
條形碼的出現(xiàn)無疑給我們的生活帶來了方便,但對于這個快速發(fā)展的時代,對其識別的技術(shù)的效率還需要我們進(jìn)行大量的研究和開發(fā)。這也是開發(fā)本系統(tǒng)的初衷。對于本系統(tǒng)來說,它既要滿足對條形碼的檢測,圖像提取,校正等功能的實現(xiàn),又要實現(xiàn)所有程序自動化的功能。該系統(tǒng)主要應(yīng)用于對海河食品包裝的識別。該系統(tǒng)利用外觸發(fā)器,實現(xiàn)將視頻轉(zhuǎn)化到靜態(tài)圖片的功能,同時通過后臺處理快速地找到該靜態(tài)圖片中條形碼的位置并對提取的條形碼以圖片的形式存儲,然后對條形碼圖片進(jìn)行識別。
2 條形碼定位
2.1 圖像采集
采集方式是利用相機(jī)和觸發(fā)器采取圖像,DirectX以流的方式讀取播放視頻。
2.2 圖像預(yù)處理[2]
OpenCV現(xiàn)在利用Mat類來表示圖像,在此基礎(chǔ)上進(jìn)行圖像的灰度化處理[3],在灰度處理基礎(chǔ)上,進(jìn)行圖像梯度化[4]。就是把圖像作為二維離散函數(shù)。梯度化過程就是對該函數(shù)求導(dǎo)的過程。圖像邊緣的確定大多都是通過圖像梯度化處理來實現(xiàn)的。梯度化方向[5],分水平方向梯度計算和垂直方向梯度計算,或者是振幅計算。在進(jìn)行檢測前,還要使用Scharr算子先確定邊緣像素[6]的位置。接下來進(jìn)行圖像二值化,所有的像素點的像素值設(shè)置為0或者255。最后,采用開運算算法進(jìn)行形態(tài)化處理。
2.3 條碼檢測
本系統(tǒng)使用Vecor容器用于存放面積;findContours函數(shù)對二值圖像中的輪廓進(jìn)行檢測;Point用來表示坐標(biāo)為整數(shù)的二維點;Rect方法:用于提取旋轉(zhuǎn)的矩形圖案;angle檢查這個矩形的偏斜角度;將提取的矩形輪廓標(biāo)記在圖片上并剪截下來進(jìn)行保存。
2.4 二維碼提取
相對應(yīng)一維碼,二維碼在譯碼之前需要先對二維碼進(jìn)行分割,再進(jìn)行邊緣檢測。采用區(qū)域增長的方法修正邊界。二維碼是正方形形態(tài),我們也要對其進(jìn)行圖形區(qū)域的旋轉(zhuǎn)處理,利用Hough變換來進(jìn)行處理利用二維圖像的投影變換。然后對拍攝的圖像進(jìn)行Hough變換,根據(jù)4條邊界線進(jìn)行位置旋轉(zhuǎn)。也可以使用仿射變換。即先對一個向量空間進(jìn)行一次線性變換并根據(jù)該變化做出相對性的平移,使其變成另一個向量空間。該變化方法包括水平的平移、圖像的縮放、圖像的旋轉(zhuǎn)等功能。
2.5 數(shù)字定位方法
商品包裝上的條碼一般都是預(yù)印刷的,許多商品的生成日期和使用日期也需要入庫進(jìn)行保存,但是由于條碼印刷成本較高,所以廠家通常采用的方式是以數(shù)字形式將商品的生成日期和使用日期印刷在包裝袋上。因而,本系統(tǒng)添加了數(shù)字識別功能。數(shù)字技術(shù)識別的主要核心字符分割技術(shù):切割數(shù)字區(qū)域后,進(jìn)行字符的切割,由于該圖像還是灰度圖像,所以我們在切割前還要進(jìn)行一些圖像處理。具體過程:灰度拉伸、二值化、傾斜校正以及字符分割。圖像以海河牛奶的包裝袋為例。由于信息過多,一個條形碼無法將全部信息存儲,所以會在包裝正面的空白位置加些數(shù)字,以此來完善條形碼內(nèi)容不足的地方。
具體分割算法如圖1所示。將截取后的整個圖片進(jìn)行自上而下的逐行對比,提取黑色的字符部分,直到整幅圖像完畢。已列為高度基準(zhǔn)進(jìn)行掃描,進(jìn)行從左到右依次排查,直到全部圖片掃面完畢。由于印刷問題,數(shù)字區(qū)域可能有小圓點,采用的是比例方法運算將這些小點清除,把每個切割后的圖像的寬度均除以未切割前的圖像的寬度,設(shè)立一個最小的商值。如果小于該商值,將其以噪聲方式清除。最后對字符進(jìn)行了加框和歸一化處理。上述所切割的圖像大小是根據(jù)字符的最高和最低的值進(jìn)行的切割,所以我們得到的結(jié)果并不是很準(zhǔn)確,我們要將每個字符再進(jìn)行進(jìn)一步的確定,所以要多進(jìn)行幾次從第一個步驟到第三個步驟的運算。這樣我們得到的才是該字符的準(zhǔn)確范圍。
3 條形碼識別
3.1 一維碼識別
一維碼儲存的信息是由條和空的寬度以及所在的位置來傳遞的。以EAN-13碼為例。一維條形碼的條和空的數(shù)量越多,它就越寬,儲存的數(shù)據(jù)量就越多,由于一維碼是由條和空組成的,將信息變化成二進(jìn)制或者十進(jìn)制的數(shù)字。
本系統(tǒng)對于一維碼識別采用的方法是相似邊距離方法,利用相似法識別一維碼[6]:根據(jù)算法進(jìn)行字符的掃描和識別,定義:C1和C3表示相鄰條的寬度,C2和C4表示空的寬度,T表示整個字符的寬度,T1和T2為相似邊的距離。用算法取得值JTj(j=1,2)來進(jìn)行T1與T2的歸一化處理。
3.2 二維碼識別
二維碼是按照一定的規(guī)律在平面上分布的黑色與白色相間的圖形記錄符號。識別二位碼[7]需先定位圖案,再是功能性數(shù)據(jù),識別由數(shù)據(jù)碼和糾錯碼共同組成的數(shù)據(jù)信息。
定位圖案:我們通常定位二維碼是根據(jù)左上角、右上角以及左下角三個位置定位的。以其中一個圖形為例,我們可以將其看作分別為7*7、5*5和3*3三個模塊。三個之間比例為1:1:3:1:1。掃描:用一個直線逐行掃描二維碼,該線被截為1:1:3:1:1時截取。誤差在0.5之間在列方向,也用相同的方法進(jìn)行二維碼定位掃描。我們通常定位二維碼是根據(jù)圖上的三個位置定位的。
3.3 數(shù)字識別
數(shù)字識別[8]部分已經(jīng)超出了我們圖像處理的范圍依據(jù)了,屬于模式識別,由于我們已經(jīng)對圖片進(jìn)行了分割,所以我們只需通過其特征進(jìn)行分類與識別。采用的是逐像素取法方法[9],具體操作就是對圖片進(jìn)行每行每列的依次查找,遇到的黑點時,將其像素值設(shè)為“1”,其他為“0”,全部掃描結(jié)束后,將提取的個數(shù)相同的像素,放在特征矩陣?yán)?。將特征信息,輸入到分類器中,進(jìn)行分類處理,從而得出結(jié)果。再進(jìn)行采取模塊匹配,事先做好海河包裝上的圖像中字符的圖像采集,然后建立一個圖片模板識別庫。當(dāng)我們進(jìn)行字符識別時,就將模板取出來依次對比,把與字符特征對比的結(jié)果的矢量求出加權(quán)距離。則最小的結(jié)果就是識別的結(jié)果。如圖2所示。
參考文獻(xiàn)
[1]朱莉玲.數(shù)字圖像處理技術(shù)與應(yīng)用研究[J].信息系統(tǒng)工程,2016:04.
[2]衛(wèi)權(quán)崗,馬建紅,吳非洋,等.使用手機(jī)進(jìn)行ENA-13碼的識別及應(yīng)用[J].電腦編程技巧與維護(hù),2011:16.
[3]劉治群,楊萬挺,朱強.幾種圖像增強算法的研究比較[J].合肥師范學(xué)院學(xué)報,2010:06.
[4]蔣偉.基于分?jǐn)?shù)階偏微分方程的圖像去噪新模型[J].計算機(jī)應(yīng)用,2011:03.
[5]黃凱奇,任偉強,譚鐵牛.圖像物體分類與檢測算法綜述[J].計算機(jī)學(xué)報,2014:06.
[6]Xianghai Wang,Yu Wan, Rui Li. A Multi-object Image Segmentation C-V Model Based on Region Division and Gradient Guide[J]. Journal of Visual Communication and Image Representation, 2016:06.
[7]張蓓,張成昱,竇天芳.二維條碼在移動圖書館服務(wù)拓展中的應(yīng)用探索[J].圖書情報工作,2013:04.
[8]Christian Ronse. Ordering Partial Partitions for Image Segmentation and Filtering:Merging,Creating and Inflating Blocks [J]. Springer Journal,2014:01.
[9]張三友,姜代紅.基于OPENCV的智能車牌識別系統(tǒng)[J].軟件導(dǎo)刊,2016:05.