廖文婧,楊秀璋,呂詢,敖進,范郁鋒,于小民,趙小明
(1.貴州財經大學信息學院,貴陽 550025;2.貴州財經大學計劃財務處,貴陽 550025;3.貴州財經大學,貴州省經濟系統仿真重點實驗室,貴陽 550025)
隨著計算機和圖像處理技術迅速發展,圖像定位和圖像識別方法已廣泛應用于各行各業,如車牌識別、人臉識別、手寫文字識別、身份證識別等。目前物流業條形碼掃描主要依靠人工進行條形碼定位,掃描技術單一,工作人員的任務繁雜,并且掃描技術不能有效地實現對條形碼自動化定位和識別,效率較低,很大程度浪費了更多的人力資源。因此,實現條形碼的自動化定位識別將會節約更多的人力和物力,減輕工作人員的任務,提高復雜環境下條形碼識別的準確率。本文將結合圖像增強算法和圖像定位算法,實現復雜環境下的條形碼圖像定位與識別,改善物流行業對條形碼掃描的單一繁雜的工作,提高該行業效率,推動整個物流行業的發展。
常見的傳統條形碼定位算法是基于數字圖像處理技術的,涉及區域對比度、邊緣方向及條形碼形狀等特性的研究。它先利用影像設備捕獲原始圖像,通過圖像預處理技術去除原圖像中的雜質,再采用形態學方法確定條形碼的輪廓,最后利用條形碼特征檢驗算法定位出條形碼區域。當前國內外針對條形碼圖像定位和圖像增強的算法研究較多,在方法和實踐上都有不少的成果。在國外,Tekin 等人[1]采用基于方向直方圖的算法來定位條形碼,通過計算直方圖的熵,設置閾值來獲取窗口圖像的主方向,再對每個窗口圖像的主方向聚類,從而獲取條形碼的候選區域。Dubska[2]基于Hough 變換提出了一種快速定位條形碼的算法。Katona等人[3]提出了一種基于低通濾波和距離映射的定位算法。Hsieh 等人[4]利用人工神經網絡搜索定位條形碼,通過BP 神經網絡訓練條形碼的紋理并提取特征,利用模式識別的方式實現條形碼定位。Oktem 等人[5]提出一種基于無傾斜條件下的一維條形碼圖像定位算法。Shellhammer 等人[6]通過選擇性采樣的方法進行條形碼邊緣處理,根據邊緣強度去除由噪聲引起的偽邊界,再增強條形碼邊界并識別條形碼。在國內,呂佩卓等人[7]分析小波多分辨率,在高頻子圖中利用指紋相似性原理和區域增長法確定條形碼區域。劉文俊[8]提出對商品圖像條碼的搜索定位算法改進,通過圖像分割后的連通域判別是否符合條形碼的幾何特征,定位條形碼的候選域,該算法通過二次定位搜索降低了誤檢率。王顥[9]提出了基于條形碼圖像分辨率增強和對條形碼圖像高分辨率重構的定位算法,提高了條形碼搜索定位的準確率。陳俊名[10]提出了基于條碼邊緣統計的定位算法,該算法先采用圖像灰度化、Gauss 濾波、圖像增強和Sobel 邊緣檢測方法對條形碼圖像進行預處理,再進行連通域的過濾與合并處理,最后進行傾斜角校正,該算法在對條形碼定位的過程中進行表格線干擾及其斷裂等困難的優化,提高了條形碼識別的準確率。王霞玲等人[11]提出了一種非均勻光照環境下的條碼自動定位識別算法,用于定位和識別實際應用中的條碼圖像。
國內外研究條形碼圖像增強和定位算法在一定程度上能夠解決其問題,但傳統算法的魯棒性較差,當定位識別復雜環境下的一維條形碼時,不能準確地定位識別目標條形碼。同時,由于拍攝設備和拍攝環境的原因,條形碼圖像容易出現背景或前景偏亮偏暗的現象,導致圖像細節不夠明顯,降低條形碼的識別準確率。因此本文提出了一種改進的復雜環境下條形碼圖像增強和定位算法,該算法首先引入了Bidon 等人[12]提出的色彩自動均衡化算法,實現復雜環境下一維條形碼的圖像增強,并根據不同情況的復雜環境開展不同程度的圖像增強處理;接著使用Dalal[13]提出的HOG 和SVM 行人檢測算法,對復雜環境下一維條碼進行圖像定位,并有效解決了定位像素溢出的問題。該研究具有重要的理論研究意義和良好的實際應用價值,可以廣泛應用于圖像定位、圖像識別和物流業條形碼定位領域。
傳統的條形碼圖像定位算法先利用影像設備捕獲原始圖像,通過預處理去除噪聲,再采用條形碼特征檢驗算法定位條形碼區域。常用的圖像預處理技術包括灰度化處理、濾波處理、邊緣檢測、形態學處理等;常用的圖像定位算法包括Hough 變換檢測直線角度、膨脹腐蝕提取邊界線、投射變化校正圖像等;圖像增強算法包括去逆濾波模糊圖像復原、灰度投影曲線等[14]。圖1展示了傳統的條形碼圖像定位流程。

圖1 傳統的條形碼圖像定位算法流程圖
(1)圖像灰度化。將輸入的一維條形碼圖像進行灰度化處理,按照公式(1)將彩色圖像的RGB 三分量進行不同權值的加權平均處理,從而將彩色圖像轉換為灰度圖像。

(2)圖像濾波處理。灰度化處理后的圖像需要進行高斯濾波模糊,去除噪聲并降低復雜環境下的干擾。高斯濾波是應用鄰域平均思想對圖像進行平滑的一種線性平滑濾波,對于抑制服從正態分布的噪聲非常有效,適用于消除高斯噪聲,被廣泛應用于圖像處理的減噪過程。一個二維高斯濾波函數如公式(2)所示,其中σ為標準差,代表數據離散程度,如果σ較小,則高斯分布中心區域將更加聚集,平滑效果更差;反之,如果σ較大,則高斯分布中心區域將更離散,平滑效果更明顯。

常用的3×3 和5×5 內核的高斯濾波模板如下所示。高斯濾波的核心思想是對高斯函數進行離散化,以離散點上的高斯函數值為權值,對圖像中的每個像素點做一定范圍鄰域內的加權平均,從而有效地消除高斯噪聲。高斯濾波讓臨近中心的像素點具有更高的重要度,對周圍像素計算加權平均值,3×3 內核的高斯濾波模板中心位置權重最高為0.25。

(3)邊緣檢測。接著通過Sobel 算子對圖像進行邊緣檢測,找出條形碼的邊緣特征并檢測出條形碼的大致邊緣框架。Sobel 算子結合了高斯平滑和微分求導,利用圖像明暗程度的近似值進行圖像銳化,根據像素點上下、左右鄰點灰度加權差,在邊緣處達到極值這一現象檢測邊緣。常用的Sobel 算子如下公式(5)所示,水平方向上的卷積參數為Gx,垂直方向上的卷積參數為 Gy,公式如(6)所示[15]。

(4)閾值分割。復雜環境下的一維條形碼圖像包含需要提取的條形碼、背景圖像和圖片噪聲。若要提取目標條形碼,則需要利用圖像閾值化處理再次降噪,去除無關信息。通常會設定一個全局的閾值T,通過T對處理后的圖像進行分類。大于T 和小于T 的像素群分為不同類別。如將大于T 的像素值設定為白色(用1 表示),小于T 的像素值設定為黑色(用0 表示)。圖像經過閾值化處理后能避免不必要的信息干擾,處理后的圖像更直觀地描述了條形碼的特征及其條形碼所在區域輪廓。
(5)腐蝕和膨脹處理提取條形碼輪廓。對閾值化后的圖像進行腐蝕和膨脹處理。腐蝕的作用在于對不重要的信息進行篩選過濾,膨脹會將腐蝕后的主要信息再次擴展,達到原條形碼的區域框架。

圖2 傳統的條形碼圖像定位
(6)條形碼圖像定位。最后通過OpenCV 中的findContour()函數尋找定位出來的條形碼位置,并輸出最終的圖像。圖2 展示了傳統圖像處理的一維條形碼定位過程。圖2(a)為原始圖像,圖2(b)為灰度圖像,圖2(c)是灰度圖進行高斯濾波去噪處理,使邊緣檢測的細節更加明顯,圖2(d)為Sobel 邊緣檢測圖像,圖2(e)是閾值化處理,圖 2(f)和圖 2(g)是圖像腐蝕和膨脹處理,最終在圖2(h)中有效定位條形碼。
針對傳統的條形碼圖像會受復雜環境的噪聲影響,圖像間像素的間距會產生錯誤定位和像素溢出,同時由于圖像的采集設備和設備參數不可控因素,導致在進行條形碼圖像預處理時不能夠對圖像有固定范圍的確定,從而降低定位算法的準確性。本文提出了一種改進的條形碼圖像增強與定位算法,該算法對復雜環境中的條形碼圖像的亮度均值進行判斷,采用不同算法進行圖像增強處理,使整個定位算法具有更強的普遍性和魯棒性。同時,基于HOG 和SVM 的條形碼圖像特征學習與定位算法有效避免了復雜環境下對條形碼帶來的一系列噪聲影響。
本文的算法先判斷是否進行圖像增強,根據復雜環境下不同情況開展不同程度的圖像增強處理,結合HOG 和SVM 算法改進條形碼圖像定位的準確性和保真性。同時,在原有定位算法基礎上增加了定位溢出值的范圍判斷,更加有效地鎖定條形碼的具體像素位置,為進一步的條形碼識別提供更好的環境,提高識別條形碼的準確率。其算法基本流程如圖3 所示。

圖3 改進的條形碼圖像增強與定位算法流程圖
(1)圖像輸入由于像素大小會導致輸出窗口過大而不能有效地顯示,通過基于局部像素的重采樣線性算法縮放圖像,能夠保證原圖像的清晰度,并進行圖像的大小縮放。
(2)通過函數ImageStat()獲取圖像像素亮度均值,再由亮度均值判斷復雜環境下的條形碼是否進行圖像增強。
(3)當亮度均值大于等于180 時,圖像處于曝光狀態,明暗程度不均衡,此種情況采用伽馬變換降低對比度,均衡提高圖像的明暗程度,實現圖像增強處理。
(4)當亮度均值在100 至180 之間時,圖像是足夠清晰的,不需要進行圖像增強,直接輸入原圖像進行后續的圖像定位。
(5)當亮度均值在40 至100 之間時,圖像明暗程度會出現暗部區域較為廣泛的現象,此種情況采用色彩自適應均衡算法處理,提高對比度并增強色彩均衡。
(6)當亮度均值小于40 時,圖像明暗程度趨于暗部,此時采用彩色直方圖均衡算法進行圖像增強,能夠在提高圖像對比度的同時,保留原圖像的細節。
(7)經過復雜環境下不同程度的圖像增強處理后,接著采用基于HOG 和SVM 的條形碼圖像特征學習與定位算法進行條形碼定位。
(8)最后對成功定位的條形碼進行裁剪,并使用pyzbar 函數進行條形碼識別,輸出包含定位區域、條形碼類型和條形碼數據的結果。
直方圖是一種將圖像像素的強度分布用圖形表達的方式。直方圖均衡化是通過某種灰度映射將圖像的像素強度值均勻地分布在每一個灰度級上,其結果將產生一幅灰度級分布概率均衡的圖像。它能夠提高圖像對比度,從而實現圖像增強。
在復雜環境下的一維條形碼可通過直方圖均衡化進行對比度的增強,進一步提高圖像細節的提取,為圖像特征提取提供了有利支撐。本文采用彩色圖像直方圖均衡算法進行處理,保證了圖像原有的顏色,符合對條形碼圖像的細節處理。圖4 展示了彩色均衡處理后的效果圖及其直方圖,直方圖統計得出經過彩色直方圖均衡后的圖像其灰度值分布更加均勻,圖像更加明亮清晰。

圖4 彩色均衡處理后的效果圖及其直方圖
伽瑪變換又稱為指數變換或冪次變換,主要用于圖像校正,其原理是將灰度過高的圖像進行灰度降低,灰度過低的圖像進行灰度增強,其本質是增強圖像對比度。伽馬變換是對原灰度圖像的每一個灰度像素值做乘積運算,如公式(7)所示。

其中,當γ>1 時,會壓縮圖像灰度級系數低的區域,拉伸灰度級系數高的區域;當γ<1 時,會壓縮圖像灰度級系數高的區域,拉伸灰度級系數低的區域;當γ=1 時,圖像進行線性灰度變換。圖5 是光照弱圖像在伽馬變換圖像增強后的效果圖,對比圖5(a)與圖5(b),經過伽馬變換后的圖像亮度更明顯,但圖像會存在細微的失真。

圖5 光照弱圖像伽馬變換增強后效果圖
圖6 是圖像對比度過高在伽馬變換圖像增強后的效果圖,經過伽馬變換拉伸后圖像趨于色彩均衡,細節更為清,且保真程度極高。

圖6 對比度過高伽馬變換增強后效果圖
Retinex 算法是代表性的圖像增強算法,它根據人的視網膜和大腦皮層模擬對物體顏色的波長光線反射能力而形成,對復雜環境下的一維條碼具有一定范圍內的動態壓縮,對圖像邊緣有著一定自適應的增強。自動色彩均衡(Automatic Color Enhancement,ACE)算法是在Retinex 算法的理論上提出的,它通過計算圖像目標像素點和周圍像素點的明暗程度及其關系來對最終的像素值進行校正,實現圖像的對比度調整,產生類似人體視網膜的色彩恒常性和亮度恒常性的均衡,具有很好的圖像增強效果。ACE 算法包括兩個步驟,一是對圖像進行色彩和空域調整,完成圖像的色差校正,得到空域重構圖像;二是對校正后的圖像進行動態擴展。ACE 算法計算公式如下:

其中,W 是權重參數,離中心點像素越遠的W 值越小;g 是相對對比度調節參數,其計算方法如公式(9)所示,a 表示控制參數,該值越大細節增強越明顯。


圖7 ACE圖像增強效果圖
圖7 是條形碼圖像進行ACE 圖像增強后的效果圖,通過圖像增強后的圖7(b)對比度更強,改善了原圖像的明暗程度,增強的同時保持了圖像的真實性。
本文提出了基于HOG 和SVM 的條形碼圖像特征學習與定位算法,實現了復雜環境下的一維條碼定位。該算法的基本流程如下:
(1)通過HOG 算法對條形碼圖像進行特征提取。首先對復雜環境下的一維條形碼進行預處理,計算條形碼圖像各方向及大小的梯度,得到條形碼的輪廓信息。
(2)接著將一維條形碼圖像劃分為8×8 像素的細胞單位(Cell),計算統計每個單元中的梯度直方圖,通過直方圖構造特征描述器,集成細胞單元組成的塊(Block)并提取特征。
(3)采用支持向量機(SVM)分類器訓練HOG 特征向量,構建SVM 條形碼圖像分類器,同時對可能溢出的條形碼進行校正處理,最后計算條形碼的區域坐標,繪制最終定位的條形碼。圖8 展示了HOG 算法提取圖像特征及最終定位的條形碼。
該算法避免了傳統圖像處理中參數的過度調整,算法魯棒性較強。在定位過程中避免了復雜環境下對條形碼的干擾,有較好的圖像分類效果,很大程度減輕了傳統圖像處理的不可控性和復雜環境對條形碼的干擾。

圖8 HOG算法提取圖像特征及條形碼定位
本文通過Python 和OpenCV 編程環境對復雜環境下的條形碼圖像進行詳細的仿真實驗分析,并對比了傳統方法和本文提出的改進算法的實驗結果。
HOG 和SVM 實驗共包括正樣本圖片581 張,負樣本圖片1791 張。測試數據為146 張快遞單圖片,其中部分圖片存在污損、損壞、噪聲等現象,部分圖片是在低亮度下拍攝,其余圖片均在光照強度良好環境下拍攝。拍攝過程模擬物流業攝像頭對圖片采集時所用高度范圍13cm-20cm,具體數據如表1 所示。

表1 實驗數據表
圖9 對比了正常環境下三種條形碼圖像定位算法的效果,圖9(a)是一張存在油污的條形碼原圖;圖9(b)是使用傳統的基于縱橫差分和圖像空間分割的條形碼搜索定位算法的效果圖,其定位范圍近似條形碼真實區域,但邊界處存在細微條形碼未被定位,不能保證條形碼圖像的完整性,從而無法識別;圖9(c)是使用傳統的邊緣統計定位算法的效果圖,其定位范圍出現斷裂和像素值范圍溢出情況,無法有效地識別條形碼;圖9(d)是本文算法實驗的效果圖,它使得條碼區域的細節更為明顯,準確定位了條形碼的范圍,其效果優于傳統的定位算法。
圖10 是高曝光度條形碼圖像的三種定位算法的實驗效果圖,圖10(b)反映出該算法定位的條形碼出現了斷裂,同時由于光照對比度過高,對目標區域的細節過度腐蝕會導致定位失敗;圖10(c)有效定位出條形碼所在區域,但其定位范圍存在像素搖擺現象,使用直方圖均衡化算法對原圖像進行增強時,會導致圖像失真和條形碼細節不明顯,并不能有效識別;圖10(d)是本文算法根據圖像的亮度均值判斷,對原圖像進行伽馬變換處理后,條形碼圖像更清晰,線條更分明,最終定位有效避免了像素搖擺所帶來的干擾,準確識別出條形碼區域及數字。

圖9 正常圖片的三種定位算法效果圖對比

圖10 高曝光條形碼的三種定位算法效果圖對比

圖11低亮度條形碼的三種定位算法效果圖對比
圖11 是低亮度或環境偏暗條形碼圖像的三種定位算法的效果圖。圖11(b)沒有將條形碼定位出來,系統會輸出“不存在連通域”,該算法在對環境偏暗的圖像進行閾值化處理時,由于圖像亮度偏低,導致圖像像素值大部分小于所設定的閾值,過多的黑色像素群會影響連通域的判別,最終無法定位條形碼;圖11(c)是傳統邊緣統計定位算法的效果圖,但經過直方圖增強處理后的條形碼區域會圖像過度定位,無法準確地識別條形碼;圖11(d)是本文算法的效果圖,它通過對圖像亮度的判別,采用不同類型的圖像增強算法,有效保護條形碼的細節,防止圖像失真,并最終成功定位出條形碼圖像。
圖12 是條形碼圖像在污損環境下三種算法的定位效果圖。圖12(b)顯示了基于空間分割的定位算法對該條碼區域有著良好的范圍定位,但像素在各個方向有輕微的搖擺,在后續的識別中會導致圖像輕微缺失而無法識別成功;圖12(c)出現了錯誤的定位,由于對條形碼的破壞,圖像增強和閾值化處理后,會將條形碼區域大部分歸一為黑色像素群,無法判斷條形碼的連通域導致錯誤識別;圖12(d)展現了本算法成功定位污損環境下的條形碼圖像。
條形碼圖像的定位與識別實驗結果如表2 所示,測試數據146 張條形碼圖像,本文算法成功定位144張,定位成功率為98.6%;成功識別122 張,識別成功率達到83.6%。由表可知,本文提出的算法比傳統基于空間分割的定位算法的定位成功率提升15.7%,識別成功率提升16.6%;比傳統邊緣統計定位算法的定位成功率提升28.1%,識別成功率提升21.3%。

圖12 污損環境條形碼三種定位算法效果圖對比

表2 實驗結果對比
圖13 和圖14 顯示了本文算法提取條形碼的結果,包括原始圖像、條形碼定位效果圖和識別出的條形碼數字,最后識別出條形碼的數字為“3891030459427”和“9894847869874”。
綜上所述,本文提出的一種改進的復雜環境下條形碼圖像增強和定位算法能有效保證圖像的真實性,解決圖像定位的像素搖擺問題,避免條形碼定位時出現斷裂,最終實現復雜環境下條形碼圖像的精準定位和識別,提高了定位成功率和識別成功率,具有較強的魯棒性。

圖13 條形碼定位與識別結果

圖14 條形碼定位與識別結果
隨著物流業的快速發展,條形碼圖像自動化定位和識別變得越來越重要,研究條形碼圖像的增強和定位算法在提高自動化識別效率具有重要作用。針對傳統的條形碼圖像定位算法識別不精準,存在圖像斷裂和像素搖擺等現象,本文提出了一種改進的復雜環境下條形碼的圖像增強和定位算法,對復雜環境中的條形碼圖像的亮度均值進行判斷,采用不同算法進行圖像增強處理,再基于HOG 和SVM 的特征學習與定位算法識別條形碼圖像,該算法有效降低圖像的噪聲,使整個定位和識別具有更強的普遍性和魯棒性。
本文在Python 和OpenCV 編程環境下,通過模擬物流行業對條形碼圖像采集的環境,實現了對條形碼圖像的自動化定位和識別的仿真實驗。實驗結果表明,本文提出的算法能在復雜環境中有效定位和識別出條形碼,包括污損、損壞、噪聲、低亮度、高曝光等條形碼圖像,通過不同情況的圖像增強算法,結合HOG和SVM 特征學習,實現精準定位和識別。同時該算法能降低圖像噪聲,使條形碼區域的細節更為明顯,從而提高條形碼數字的識別精確度。該算法的定位成功率和識別成功率均優于傳統的定位算法,在一定程度上減輕了物流行業工作者的工作量,可以廣泛應用于條形碼定位、區域識別、物流行業和金融行業等領域,具有一定的應用前景和實用價值。下一步作者將結合深度學習和神經網絡技術實現更廣范圍的條形碼圖像識別,進一步將圖像定位和圖像識別技術應用于物流行業和日常生活中。