周樂
(西安建筑科技大學 信息與控制工程學院,陜西 西安 710055)
自動化數(shù)據(jù)采集技術是信息采集和處理的關鍵技術[1],條碼技術在自動化數(shù)據(jù)采集中占重要地位。二維條碼是在傳統(tǒng)的一維條碼基礎上發(fā)展起來的。傳統(tǒng)的一維條碼由于受信息容量的限制必須依賴數(shù)據(jù)庫,而二維條碼的信息密度高、信息容量大,可以不依賴于數(shù)據(jù)庫。二維條碼不僅可以將數(shù)字、字符等信息存入編碼,而且可以將人臉、指紋和虹膜等圖像信息存入條碼,因此二維條碼在證件識讀、人事管理、運輸包裝、POS系統(tǒng)和電子數(shù)據(jù)交換等方面得到廣泛的應用[2]。此外,傳統(tǒng)的一維條碼只有校驗功能,沒有糾錯能力,而二維條碼具有很強的錯誤校驗和錯誤糾正功能,即使條碼符號有污點、殘缺,也能被正確識別出。二維條碼的識別技術是其應用的關鍵技術。由于二維條碼密度遠大于一維條碼,其識別技術不同于一維條碼,如何快速準確地識別條碼成為了一個值得研究的問題。
Data Matrix原名Data Code,由美國國際資料公司于1989年發(fā)明,它是一種矩陣式二維條碼[3]。Data Matrix的最小尺寸是目前所有條碼中最小的,尤其適合用于小零件的標識以及直接印刷在實體上。本文以Data Matrix條碼為例,研究了基于SUSAN檢測算子的二維條碼識別算法。
Data Matrix的圖形結構如圖1所示。Data Matrix是矩陣式二維條形碼的一種,它以一個矩形圖案表示數(shù)據(jù)信息,通常,黑色模塊表示“1”,白色模塊表示“0”,或者使用相反的表示方法。另外,在實際應用中,可以采用不同的印制方式(如圖1中的圓形打點)。Data Matrix圖形可分為定位圖形(尋邊圖形)和數(shù)據(jù)區(qū)兩部分。其中,定位圖形由兩條實線邊組成的“L”形和與其相對的兩條虛線邊組成;數(shù)據(jù)區(qū)是由1、0模塊組成的矩形?;贒ata Matrix定位圖形的特性,將其與背景圖形區(qū)別開來,并對“L”形的頂點進行精確定位。
在現(xiàn)實條件下拍攝到的二維條碼圖像往往受光線的明暗程度不同,粘貼、印刷的位置不當,或被遮蓋、污染、出現(xiàn)褶皺等各種外界因素的干擾時,均會直接影響條碼的識讀效果。因此首先需要從復雜的圖像背景中初步分離出條碼區(qū)域。圖2所示為基于SUSAN檢測算子對Data Matrix圖形區(qū)域初步定位流程。
圖2 二維條碼圖像的定位過程
現(xiàn)在考慮有一個圓形的模板,其中心稱為“核”,其大小由模板邊界所限定。如果將模板中各個像素的灰度都與模板中心的核像素的灰度進行比較,那么就會發(fā)現(xiàn)總有一部分模板區(qū)域的灰度與核像素的灰度相同或相似。這部分區(qū)域可稱為與核同值區(qū)域USAN(Univalue Segment Assimilating Nucleus),可簡稱為核同值區(qū)。USAN區(qū)域包含了很多與圖像結構有關的信息,利用這種區(qū)域的尺寸、重心和二階矩等,可以幫助檢測圖像中的邊緣和角點。
最小與核同值區(qū)域SUSAN (SmallestUnivalue Segment Assimilating Nucleus)算子采用圓形模板來得到各向同性的響應。在數(shù)字圖像中,圓可用一個含有37個像素的模板來近似。這37個像素排成7行,分別有3、5、7、7、7、5、3 個像素。 這相當于一個半徑為 3.4 個像素的圓。如考慮到計算量,也可用普通的3×3模板來粗略近似。
設模板為 N(x,y),將其依次放在圖像中每個點的位置,在每個位置,將模板內(nèi)每個像素的灰度值與核的灰度值進行比較:
其中,(x0,y0)是核在圖像中的位置坐標,(x,y)是模板N(x,y)中其他位置,f(x0,y0)和 f(x,y)分別是在(x0,y0)和(x,y)處像素的灰度,T是一個灰度值的閾值,函數(shù) C(.;.)代表輸出的比較結果。
要對模板中的每個像素進行上述比較,由此可得到一個輸出的游程和:
這個總和其實就是USAN區(qū)域中的像素個數(shù),或者說它給出了USAN區(qū)域的面積。如上所討論的,這個面積在角點處會達到最小。結合式(2)可知,閾值T既可用來幫助檢測USAN區(qū)域面積的最小值,也可以確定可消除的噪聲的最大值。
實際應用SUSAN算子時,需要將游程和S與一個固定的幾何閾值G進行比較以做出判斷。該閾值設為3Smax/4,其中 Smax是 S所能取得的最大值(對 37個像素的模板,最大值是 36)。 初始的邊緣響應 R(x0,y0)根據(jù)式(3)得到:
式(3)是根據(jù)USAN原理獲得的,即USAN的面積越小,邊緣的響應就越大。
圖像的灰度直方圖是圖像各像素灰度值的一種統(tǒng)計度量。最簡單的閾值選取方法就是根據(jù)直方圖來進行的。對于雙峰直方圖,選取兩峰之間的谷所對應的灰度值作為閾值就可將目標和背景分開。谷的選取有許多方法,下面介紹本文涉及的兩種方法。
2.2.1 極小點閾值
圖像的灰度直方圖是圖像各像素灰度值的統(tǒng)計度量。將直方圖看作一條曲線,則選取直方圖的谷可借助求曲線極小值的方法。設用h(z)代表直方圖, 那么極小值點應滿足:
與這些極小值點對應的灰度值就可用作分割閾值。
2.2.2 最優(yōu)閾值
有時目標和背景的灰度值有部分交錯,用一個全局閾值并不能將它們絕然分開。這時常希望能減小誤差分割的概率,而選取最優(yōu)閾值是一種常用的方法??偟恼`差概率為:
為求得該誤差最小的閾值,可將 E(T)對 T求導并令導數(shù)為零,則可以得到一個最優(yōu)閾值:
二維條形碼的獲取由光學照相或者掃描設備完成。本實驗使用一個普通的帶有攝像頭的手機(最大分辨率是300×300),在不配備特殊光源的情況下獲得二維條形碼。 最終獲得分辨率為 300×300、尺寸為 1 600×1 200、位深度為24的RGB彩色圖像。采用自然光照是考慮到降低成本以及適應惡劣的環(huán)境的需要。
原始圖像比較大,如果使用原始圖像直接來做實驗,處理速度極為緩慢且耗時。將原始圖像進行預處理,轉換為分辨率為 72×72、尺寸為 178×178、位深度為 8的256級灰度圖像。
經(jīng)過預處理得到的灰度圖像除了包含條形碼之外還包含其他的復雜背景。由于Data Matrix符號的特征是由一個個小方塊構成的四邊形,這一特征將它與其他圖形區(qū)別開來,可以清楚地看到條碼區(qū)域具有清晰的邊緣特征,因此首先采用SUSAN算子對整幅圖像進行邊緣檢測。
本文使用SUSAN算子的37個像素的模板,檢測時將模板依次放在圖像中每個點的位置,在每個位置,將模板內(nèi)每個像素的灰度值與核的灰度值進行比較,這時需要閾值來確定此處的游程值,試驗中選取的是灰度直方圖的極小點和最優(yōu)閾值兩種閾值。圖3(a)是選用灰度直方圖的極小點作為閾值時的SUSAN檢測后的圖像,可以看到,二維條碼區(qū)域粗略地被檢測出來,但是對于背景中略大的文字噪聲卻很難濾除掉;圖3(b)是選取最優(yōu)閾值時SUSAN檢測后的圖像,可以看到,條碼區(qū)域的邊緣被清晰地檢測出來,并且可以很好地濾除掉背景中的文字噪聲。
對預處理后的灰度圖像經(jīng)過選用最優(yōu)閾值的SUSAN算子檢測邊緣,可以觀察得出,Data Matrix符號的邊緣特征非常復雜和曲折,與其他僅具有簡單邊緣的圖形大不相同,因此其邊緣可以明確地分辨出來,同時對于背景中的噪聲有很好的濾除作用。
二維條形碼的色塊組合在水平和垂直兩個方向都含有信息。將得到的邊緣圖像分別在水平和垂直方向上投影,突出灰度變化頻繁的區(qū)域,獲得條形碼圖像的粗定位。
將得到的邊緣圖像在水平和垂直方向上投影,即分別統(tǒng)計第 m行(m<圖像高度)和第 n列(n<圖像寬度)上的灰度值,令統(tǒng)計值分別為Sm和Sn。由于Data Matrix圖像復雜的邊緣曲線在一定坐標范圍內(nèi) (m1 通過對圖像識別的研究,實現(xiàn)了實際應用中二維條形碼Data Matrix的初步提取。對實際圖片進行了實驗,利用本文提出的識別算法能有效地去除背景和噪聲的干擾,達到快速、準確識別的目的。 [1]SRIRAM T,RAO V K.Applications of barcode technology in automated storage&retrieval systems[C].IECON Proceedings,1996(1):5-10. [2]張鐸,王耀球.條碼技術與電子數(shù)據(jù)交換[M].北京:中國鐵道出版社,1998. [3]矯云起,張成海.二維條碼技術[M].北京:中國物價出版社,1996. [4]章毓晉.圖像工程(第二版)[M].北京:清華大學出版社,2007. [5]陳媛媛,施鵬飛.二維條形碼的識別及應用[J].測控技術,2006,25(12).