蔡佳凌1,徐建良1,候成飛2
(1. 中國海洋大學 信息科學與工程學院,山東 青島 266100;2. 國家海洋局第一海洋研究所,山東 青島 266061)
摘要:條形碼定位是條形碼識別任務中的難點與熱點,也是提高條形碼識別率的重要基礎和保障。現已有很多的算法用于條形碼定位,但是這些算法在大洋樣品照片中的應用效果并不理想。大洋樣品照片中的條形碼具有相對面積小、背景復雜、光照不均、扭曲現象嚴重等實際情況,對條形碼的準確定位產生了嚴重的干擾。針對該實際情況,提出了一種簡單實用且具有魯棒性的條形碼定位方法。該方法結合了基本形態學方法、傳統的條形碼邊緣梯度法以及條形碼的梯度能量特性進行定位。實驗結果顯示,該方法具有較好的定位效果,對于其他實際應用也具有借鑒意義。
關鍵詞:條形碼;定位;梯度能量;大洋樣品照片
中圖分類號:TP391.4文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.04.005
引用格式:蔡佳凌,徐建良,候成飛.大洋樣品照片中的條形碼定位技術研究[J].微型機與應用,2017,36(4):14-17.
0引言
大洋樣品照片是大洋樣品數據中非常重要的組成部分。隨著大洋考察的持續開展以及采樣設備的不斷更新,樣品的增長速度進一步提高,而對于直觀體現樣品信息的樣品照片的管理難度也進一步加大。為了更好地管理照片,在實際的樣品數據管理工作中以所拍攝樣品的樣品編碼重命名照片。樣品編碼有30位之長,人工命名照片顯然是一個耗費時間精力、枯燥乏味且容易出錯的工作。而樣品是與包含其樣品編碼的條形碼一起拍攝的。因此,為了提高工作效率,減少人力資源的消耗,可以考慮使用程序自動識別照片中的條形碼來獲取樣品編碼并重命名照片。在條形碼識別的過程中,其準確定位是提高條形碼識別率的重要保障,也是條形碼識別工作面臨的主要挑戰之一。本文重點介紹條形碼的定位,為后續識別工作的開展奠定基礎。
隨著條形碼在生活與生產中的廣泛使用,條形碼自動識別技術成為了熱門研究領域。在過去的幾十年中,數字照片中條形碼的快速與準確定位一直是研究的難點和熱點。現已有很多的算法用于條形碼定位,如基本形態學處理法[14]線條檢測法[5]、圖像梯度法[2,67]、Gabor濾波器[8]和諧波分析[9]等。樣品照片中的條形碼因其相對面積小,背景復雜,光照不均勻,因而存在旋轉、扭曲現象嚴重等實際問題,為其準確定位帶來了嚴重的挑戰。現有的算法在該應用中的效果并不理想,因為這些算法主要針對使用手機進行掃碼的情況。在該情況下,手機一般距離目標條形碼較近,條形碼區域在掃描框中所占的面積大。而大洋樣品照片拍攝的目的是為了記錄樣品信息,并不是為了讀取條形碼。工作人員需要將整個樣品拍攝下來,且往往將鏡頭聚焦在樣品身上,因而條形碼相對樣品的面積較小,并容易造成模糊。除此之外,現有的算法大部分針對UPC、EAN13等長寬比較小的商品碼[36],可以很容易找到一條穿過整個條碼區域的掃描線。而大洋樣品采用Code93碼,且樣品編碼有30位之長,長寬比較大(如圖1所示)。當條形碼彎曲變形時,很難找到一條掃描線與所有條碼線條相交。
除了上述的定位算法之外,還有一些現成的機器視覺算法包,如德國MVtec公司開發的Halcon提供了有效的條形碼定位算法,但是實驗發現效果并不是非常理想[10]。
本文對現有的算法進行整合與改進,提出了一種在實際應用中效果較好的定位方法。該方法利用基本的形態學操作、傳統的邊緣梯度特征、條形碼區域的能量特性以及照片實際特點進行定位,簡單實用且魯棒性好。
1條形碼定位
條形碼定位主要分為兩個步驟,首先確定條形碼候選區域,然后從候選區域中選擇目標條碼區域。本文通過條形碼的紋理特征找出照片中的條形碼候選區域,然后結合條形碼區域的能量特性最終確定目標條形碼區域。
為了減少計算量以及方便后續的照片處理,首先對照片進行灰度化和尺寸歸一化處理。
1.1條形碼方向判定
為了更好地反映樣品的尺寸,在拍攝照片時會將標尺與樣品一起拍攝,且標尺與條形碼基本保持平行,這是大洋樣品數據管理工作中的一個規范。標尺是由多個灰白矩形交替連接而成的,矩形的數量隨樣品尺寸稍有不同,具有明顯的邊緣,如圖1所示。本文利用上述規范以及標尺的邊緣特征確定條形碼的大致方向(后面的步驟將確定條形碼的精確方向),即水平或者垂直方向。
為了確定條形碼的大致方向,本文借鑒了文獻[3]中的方法,使用開運算來確定條形碼方向。但是與文獻[3]不同的是,由于大洋樣品照片中條形碼上方的站位號、文字以及復雜背景等都具有類似條形碼的紋理特征,因而無法簡單地根據開圖像的亮度準確判斷條形碼區域及其方向。而標尺中與條形碼平行的兩條邊長、直且明顯,在大洋樣品照片中是非常典型、突出的特征,如圖1所示。因此,本文利用標尺明顯的邊緣特征,并結合0°、45°、90°和135°四個方向的開運算操作來判斷條形碼方向,效果如圖2所示。經過大量實驗后,本文采用11×1的結構元素,得到四個方向的開圖像。然后設定線條長度閾值,超過該閾值的線條數量最多的開圖像對應方向的垂直方向即為條形碼方向。在本文中,線條長度閾值設為對應圖像尺寸的1/4時效果佳。由圖3可知,90°開圖像中符合條件的線條數最多,與其垂直的方向,即水平方向即為條形碼的大致方向。
1.2候選條形碼區域的選擇
在得到了條形碼大致方向后,對原圖進行相應的旋轉,使得條形碼處于基本水平狀態。由于條形碼具有典型的高水平梯度、低垂直梯度特點[7],因此將圖像的水平梯度絕對值減去垂直梯度絕對值就可以很好地消除大部分干擾區域,利于后續的處理,效果如圖3所示,條碼區域的亮度非常大。由于在1.1節中通過4個方向的開運算來判斷條形碼方向,因此圖像旋轉后條形碼的偏轉角度在22.5°之內,上述求圖像梯度差的方法對傾斜角度在該范圍內的條形碼都有較好的效果。對于1.1節和本節中的梯度圖,均采用Sobel[11]算子進行邊緣信息提取。
條形碼除了豐富的邊緣信息外,其周圍的空白區域也是條形碼的顯著特征。空白區域很好地將條形碼區域與樣品隔離開了,從圖3可以看到,條形碼周圍基本上是黑色區域。利用這個特點,本文采用連通區域法來獲取條形碼候選區域。條形碼的線條之間具有一定的間隔,并且由于光照不均、模糊、扭曲等因素的干擾,梯度圖中同一線條的邊緣也不一定連續,因此整個條形碼區域并不是一個連通區域。而平滑和膨脹操作可以很好地處理這個問題。
圖像平滑消除了圖像中的細節部分,將臨近的邊緣線條連接起來。由于條形碼左右兩邊的空白區域較寬,且平行邊緣之間的距離也相對較大,而條形碼上方與下方的空白區域較窄,垂直方向間斷的邊緣線之間的距離較近,因此本文采用的平滑卷積核為11×3,可以將大部分的邊緣線條連接起來。
但由于模糊因素的影響,部分邊緣信息丟失了,平滑操作并不能將間距較大的邊緣連通,因此采用膨脹操作來達到效果。膨脹需要在二值圖上進行操作,因此需要先用Otsu[12]算法對平滑圖進行二值化處理。根據實際情況,對該閾值進行了適當調整,盡可能還原圖像的邊緣信息。平滑和膨脹后的圖像如圖4所示。本文使用OpenCV中的cvFindContours()函數查找連通區域,并用cvMinAreaRect2函數畫出連通區域的最小外接矩形,得到候選條形碼區域。
大洋樣品條形碼采用的碼制是Code93,每個樣品條形碼表示34個字符。經過觀察發現,條形碼的長寬比為9∶1左右。條形碼相對整張照片的比例也在1/1 000~1/50之間。根據上述兩個條件可以排除大量的非條形碼區域,剩余的條形碼候選區域有待進一步篩選。
1.3目標條形碼確定
條形碼區域具有豐富的邊緣信息,貫穿整個條形碼的掃描線上的各邊緣點的梯度方向在同一直線上,且相鄰邊緣上的點的梯度極性相反。文獻[6]利用這個特性來定位條形碼。但是對于模糊圖像,條形碼區域相鄰邊緣上的點的梯度方向并不一定反向,部分邊緣信息可能會丟失。且對于變形嚴重的情況,可能無法找到一條掃描線穿越整個條形碼,或者即使找到這樣一條掃描線,但各邊緣點的方向由于變形而發生了改變。因此,本文選取候選區域的中間部分區域,計算梯度方向與條形碼方向基本在同一直線上的邊緣點占總邊緣點的比例。理論上比例最大的最有可能是條形碼區域。其中,精確的條形碼方向是根據連通區域的最小外接矩形的旋轉角度來確定的。
但是在實際的實驗中發現,當條形碼變形嚴重時,條形碼線條邊緣點的梯度方向與條形碼的整體方向有較大的偏差。并且條形碼上方的站位字符串、文字具有類似條形碼的紋理特征,標尺的矩形區域由于光照的影響呈現類似條形碼邊緣的邊緣特性,這些區域會干擾條形碼的準確定位。因此,本文結合水平邊緣點比例和區域梯度能量特征進行判斷。站位字符串、文字以及標尺矩形區域的梯度能量遠小于條形碼區域。而對于其他梯度能量較大的候選區域,其水平邊緣點比例較小。因此,可以將邊緣點比例與區域梯度總能量相乘作為判斷依據,乘積滿足一定的閾值,并且最大的即為目標條形碼區域。其中閾值是通過對大量樣本的實驗得到的一個經驗值,用于判斷定位的有效性,降低錯誤定位的可能性
2實驗
本文使用的實驗數據是中國大洋樣品館多個航次的1 195張大洋樣品照片。這些照片樣本基本涵蓋了所有主要的大洋樣品種類的出庫與入庫情況,對于背景復雜、光照不均勻、條形碼相對面積小、模糊、變形嚴重等情況都有很好的體現。對于這些情況,本文算法具有很好的魯棒性。
本文算法在Visual Studio環境下實現。圖5對比了本文、文獻[7]以及Haclon的條形碼定位算法。由圖5可知,對于條形碼質量良好的照片,三個算法的定位準確率相差并不是很大。文獻[7]中的定位算法成功定位了312張照片中的300張,Haclon定位算法成功定位了295張,而本文算法達到了100%的定位率。這種差距是由于條形碼背景較復雜,且存在文字、字符串等干擾區域,影響了條形碼的準確定位。而對于條形碼質量不佳的照片,三個算法有了明顯的性能差異。本文算法的定位率達到了98.41%,比文獻[7]中定位算法多定位了238張照片,比Halcon定位算法多定位了357張。其主要原因是光照不均、模糊失真等因素使得條形碼丟失了重要的細節信息,而干擾區域又呈現出與條形碼區域類似的特征,導致定位誤差增大。除此之外,Halcon定位算法無法很好地處理條形碼相對面積非常小的情況。由實驗結果可知,對于大洋樣品照片這一實際應用,本文算法具有較好的性能。
3結論
本文主要研究條形碼定位算法在大洋樣品照片識別中的應用,借鑒現有的定位算法,并結合照片實際特點,提出了一種簡單但有效的定位算法。首先用開運算判斷條形碼的大致方向。然后利用圖像梯度、平滑和膨脹,并根據Code93碼本身的尺寸特點找到條形碼候選區域。最后利用條形碼邊緣梯度方向一致性和能量集中的特點確定條形碼區域。實驗結果表明,本文的算法能夠很好地定位樣品照片中的條形碼,為之后的識別工作奠定了基礎。此外,本文的定位算法對其他方面的應用也具有借鑒意義。后續的工作將圍繞模糊條形碼的識別展開。
參考文獻
[1] CHAI D, HOCK F. Locating and decoding EAN13 barcodes from images captured by digital cameras[C]. Fifth International Conference on Information, Communications and Signal Processing, 2005:1595-1599.
[2] Zhang Chunhui, Wang Jian, Han Shi, et al. Automatic realtime barcode localization in complex scenes[J]. IEEE International Conference on Image Proceeding, 2006:497500.
[3] Juett J, Qi X. Barcode localization using a bottom hat filter[J].Nsf Research Experience for Undergraduates, 2015,19.
[4] KATONA M, NYU'L L G. Efficient 1D and 2D barcode detection using mathematical morphology[C]. Mathematical Morphology and ITS Applications to Signal and Image Processing, International Symposium, 2013:464-475.
[5] ADELMANN R. Mobile phone based interaction with everyday productson the go[C]. International Conference on Next Generation Mobile Applications, Services and Technologies. IEEE Computer Society, 2007:63-69.
[6] TEKIN E, COUGHLAN J M. An algorithm enabling blind users to find and read barcodes[C]. IEEE Workshop on Applications of Computer Vision, Snowbind, UT, 2009:1-8.
[7] 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.
[8] KUTIYANAWALA A, QI X, TIAN J. A simple and efficient approach to barcode localization[C]. Procepding of International Conference on Information,Communications and Signal Processing, 2009,ICICS'09, 2009:1-5.
[9] Wang Kongqiao, Zou Yanming, Wang Hao. 1D bar code reading on camera phones[J]. International Journal of Image & Graphics, 2011, 7(3):529-550.
[10] 公丕亮, 呂希勝. 基于Halcon的一維條碼識別技巧[J]. 計算機與現代化, 2013, 1(4):73-76.
[11] 李捷, 唐星科, 蔣延軍. 幾種邊緣檢測算法的比較研究[J]. 信息技術, 2007(9):106-108.
[12] OTSU N. A threshold selection method from grayscale histograms[J]. IEEE Transaction on Smc, 1979(9):62-66.