










摘" 要: 為了解決復雜背景下條形碼不易定位識別的難題,提出一種基于Hough變換和深度學習相結合的方法對條形碼進行校正定位。首先對待檢測圖像進行灰度化、高斯模糊以及邊緣檢測等預處理;然后利用Hough變換檢測條形碼圖像中的線段,進行旋轉校正,校正后的圖像經Yolov5對條形碼進行識別和提取,完成條形碼的識別分割。文中方法對不同樣式條形碼均有較好的識別效果,旋轉校正的精確度達到99.31%,識別平均精確度達到99.40%,召回率達到99.79%,推理時間為10.5 ms。提出的方法可對任意角度傾斜進行校正,識別條碼具有較高的準確率,對條形碼定位識別具有一定的應用價值。
關鍵詞: Hough變換; Yolov5; 傾斜校正; 條碼識別; 圖像處理; 機器視覺
中圖分類號: TN911.73?34; TP391.41" " " " " " " " "文獻標識碼: A" " " " " " " " "文章編號: 1004?373X(2025)01?0157?06
Barcode recognition based on Hough transform and deep learning
QU Yuanhao, ZHANG Fengshou, CHANG Jibao, FENG Ruibo
(School of Mechanical Engineering, Henan University of Science and Technology, Luoyang 471003, China)
Abstract: In order to cope with the difficulties in the recognition of barcodes in complex background, a recognition method is proposed to carry out the barcode correction and positioning based on the combination of Hough transform and deep learning. The images to be detected are subjected to preprocessing, including gray processing, Gaussian blurring and edge detecting. And then, Hough transform is used to detect the line segments in the barcode image for rotation correction. The barcode image is recognized and extracted by Yolov5 to fulfill the barcode recognition and segmentation. The proposed method has a good recognition effect on different types of barcodes. The accuracy rate of rotation correction of the method is 99.31%, its average accuracy of recognition is 99.40%, its recall rate is 99.79%, and its reasoning time is 10.5 ms. The proposed method can correct any angle inclination, and has high accuracy rate for barcode recognition, so it has a certain application value for barcode location recognition.
Keywords: Hough transform; Yolov5; inclination correction; barcode recognition; image processing; machine vision
0" 引" 言
隨著現代商業的發展,條形碼技術[1]已成為商品追蹤和管理的重要工具。然而傳統的條形碼識別方法在面對復雜背景、旋轉變形等挑戰時表現不佳,因此研究復雜場景中條形碼的識別具有很強的現實意義。本文旨在結合Hough變換和深度學習技術,提出一種條形碼識別方法,以提高識別準確率和效率。
目前常見的條形碼識別方法是用圖像處理的方法進行條形碼的定位,然后再對其進行解碼。文獻[2]提出了一種基于顏色和形狀特征的條形碼快速檢測方法,以適應復雜場景下的多目標、多角度條形碼快速識別,但當包含條形碼的快遞面單與背景顏色相近時,無法取得良好的識別效果。文獻[3]提出結合模糊邏輯多種方法的新算法,提高了一維碼定位精度,但是實現方法成本較高,受外部影響較大。文獻[4]提出一種漸進式條碼壓縮識別算法,計算效率和識別模糊圖像效果均有所提高,但未涵蓋所有條形碼識別。文獻[5]提出了一種在深度神經網絡的基礎上結合全局優化方法的條形碼識別算法,利用卷積循環網絡提取出條碼中各字元的特征并進行分類,但存在大約5%的拒收率,整體樣本識別精確率較低。文獻[6]提出基于機器視覺同時對一維碼和三段碼定位識別的方法,對存在缺陷的條形碼識別效果有所提升,但在識別正常條形碼時效果較差。文獻[7]提出一種新的PDF417分割歸一化方法,克服了輸入圖像的位置應位于預定義矩形區域的限制問題,但在旋轉角度超過40°時識別率較低。
本文提出一種結合Hough變換和深度學習的條形碼識別技術,利用Hough變換善于檢測直線的能力,對條形碼進行傾斜校正,利用深度學習在目標檢測方面的優越性,對校正后的條形碼進行識別切割。本文方法具有推理時間短、準確率高、實用性強等優點。
1" 基于Hough變換的條形碼旋轉校正
1.1" Hough變換原理
Hough變換是一種特征提取方法,其基本原理是將直角坐標系上的點轉換到極坐標系中,通過觀察極坐標系中曲線的交點情況判斷直角坐標系中圖像的特征[8],通常用于直線、圓形等的檢測。直角坐標系映射到極坐標系過程如圖1所示,經過直角坐標系上的任意一點[(x,y)]的所有直線,都能轉換為對應的極坐標曲線[(ρ,θ)],對應表達式為:
[ρ=xcosθ+ysinθ] (1)
從圖1可以看出,經過同一條直線的點通過坐標系轉換后,會在極坐標系上交于一個點,統計處于這個點所有曲線的數量,為此數量設置一個閾值,只有大于這個閾值才被認為是一條直線,從而實現直線檢測。
1.2" 圖像預處理
圖像預處理可以抑制圖像中的無用信息、增強所需信息的可檢測性和最大限度地簡化數據。在圖像處理中,通常會進行灰度化處理,灰度圖像中每個像素僅需一個字節存放灰度值,可以減少圖像處理過程中的計算量,提高計算效率。灰度圖像中存在的噪聲會讓灰度值變化不再連續均勻,使圖像中的部分特征被掩蓋。所以在灰度化處理后,通常會進行圖像去噪處理,以便盡可能多地保留圖像原始信息,最大限度地降低噪聲對圖像的影響[9]。
圖像灰度化的實現通常有分量法、最大值法、平均值法和加權平均值法。加權平均值法就是給三分量亮度值不同的權重得到的加權平均值。相較于其余幾種方法,加權平均值法是根據人眼對色彩的感知能力的不同進行的權重分配,更符合人眼的視覺感受,因此選用加權平均值法進行圖像灰度化處理,加權計算公式如下所示:
[Gray=0.299*R+0.587*G+0.114*B] (2)
常用的去噪方法有均值濾波去噪、中值濾波去噪、高斯濾波去噪和雙邊濾波去噪。均值濾波去噪是分別以圖像中每一個像素點為中心,對周圍[N×M]大小區域內像素值進行平均,得到的平均像素值作為該點的像素值,[N]和[M]取奇數。中值濾波去噪是對像素點周圍[N×M]大小區域內像素值排序找到中值,將找到的中值作為該點的像素值。雙邊濾波是在高斯濾波的基礎上增加了像素值權重項,像素值越相近,權重越大。高斯濾波去噪就是對像素點周圍[N×M]大小區域內每個像素分配不同的權重,越靠近該像素點權重越大,最終區域內每個像素值和對應權重相乘再求和作為該點像素值,二維高斯分布公式如下:
[G(x,y)=12πσ2e-x2+y22σ2] (3)
由于高斯濾波可以保留邊緣信息,保持主要特征,運算簡單,本文采用高斯濾波去噪,高斯卷積核大小為11×11,經灰度化和去噪處理的效果如圖2所示。
1.3" 邊緣檢測與傾斜校正
邊緣檢測可以標識圖像中亮度極速變化的點,達到特征提取和檢測的作用。常見的邊緣檢測算子有Sobel算子、Robets算子和Canny算子等。Sobel算子采用3×3的卷積核,分別在[x]、[y]兩個方向計算梯度變化值,將這兩個梯度值經過變換得到最終梯度值。Robets算子是基于交叉差分的梯度算法,通過計算相鄰對角的像素差檢測圖像邊緣,當圖像邊緣處于±45°左右時效果最好。
Canny算法是應用最為廣泛的邊緣檢測算法之一,可以找到一幅圖像中灰度強度變化最強的位置[10]。主要步驟有:高斯濾波去噪、梯度計算、非極大值抑制、雙閾值判斷潛在邊界和邊界追蹤。通過非極大值抑制過濾掉非邊緣像素,使邊緣特征變得清晰。雙閾值決定邊界就是設定一個閾值上界和閾值下界,梯度值如果大于閾值上界就被認定是邊界(強邊界),如果梯度值小于閾值上界的同時大于閾值下界,就被認為可能是邊界(弱邊界),如果梯度值小于閾值下界,就認定不是邊界。對弱邊界進行邊界追蹤,如果發現與邊界相連就判斷是邊界并保留,如果不相連就拋棄。
利用Hough變換原理,將邊緣檢測圖像中找線段的問題轉換為極坐標系找最大值問題,給極坐標中相交于一點的曲線數量設定一個閾值(threshould)為100,設定最短長度閾值minLineLength為100,線段上最近兩點之間的閾值maxLineGap設置為10,只有同時滿足這些條件才能被認定為線段。然后對邊緣檢測圖像進行檢測,找出圖像中所有滿足條件的線段,計算出每條線段的斜率,統計出現次數最多的斜率,根據這個斜率計算傾斜角度并對圖像進行旋轉校正,校正過程和效果如圖3所示。
2" 條形碼定位
2.1" Yolov5目標檢測
Yolov5是一種基于深度學習的單階段目標檢測算法,可以實現多尺度、多目標的檢測[11]。Yolov5的網絡結構由骨干網絡(Backbone)、特征融合模塊(Neck)和目標檢測頭部(Head)組成[12],如圖4所示。
骨干網絡主要用于特征提取并不斷縮小特征圖,特征融合模塊實現了淺層圖形特征和深層語義特征的融合以獲取更加完整的特征,目標檢測頭部進行最終的回歸預測。
輸入端對輸入圖像進行處理,從而將輸入圖像大小調整為網絡需要的輸入大小,同時進行歸一化操作。Yolov5采用Mosaic數據增強操作來提升模型訓練速度和網絡精度,同時還引入了一種自適應錨框計算方法。應用Mosaic數據增強圖像使得圖像中出現小目標的概率大幅提高,所以模型檢測小目標的能力得到提高[13]。
在網絡訓練階段前,設定好一個固定大小的初始錨框Anchor,在訓練時會生成一個對應預測框,通過計算初始錨框和預測框的差距進行反向傳播,對網絡模型進行優化。
2.2" 數據集的構建與標注
數據集的制作需要大量的樣本圖片,通過網絡下載和人工采集兩種途徑獲得,最終得到3 020張圖像,其中1 994張劃分為訓練集,926張劃分為驗證集,100張用于測試集。圖片準備完成后,對圖像進行人工標注,本文采用可視化圖像標定工具LabelImg對數據集進行標注。
將100張水平狀態的條碼圖像作為測試集基礎圖像,通過程序將這100張圖像分別進行[0,90°)、[90°,180°)、[180°,270°)和[270°,360°)隨機角度旋轉處理,將處理獲得的這400張圖像和原始圖像共500張作為測試集進行實驗驗證,隨機角度旋轉效果如圖5所示。
2.3" 條形碼識別
通過深度學習進行目標檢測的方法分為兩種:分別是雙階段目標檢測算法和單階段目標檢測算法[14]。雙階段目標檢測算法分為兩步進行:第一步生成樣本候選框;第二步利用卷積神經網絡進行分類和定位。單階段目標檢測算法同時完成區域生成、分類和定位任務。一般來說,雙階段目標檢測算法精度更高,單階段目標檢測算法速度更快。
使用Yolov5網絡對數據集進行訓練時,具體訓練參數設置如表1所示。
訓練完成后,條形碼識別效果如圖6所示。原始圖像經過Hough變換進行傾斜校正,由Yolov5進行識別,識別完成后對目標區域進行分割提取,這樣就能將條形碼從復雜背景中識別并提取出來,方便后續解碼工作順利進行。
3" 對比實驗分析與結果
3.1" 實驗環境
為了測試不同算法對條形碼校正識別的效率和準確性,構建實驗環境對不同算法進行實驗。PyTorch是一個開源的深度學習框架,常用于圖像識別、自然語言處理等機器學習應用程序。
本文中所有模型的訓練都是在PyTorch框架下進行的,操作系統為Windows 11,GPU為NVIDIA GeForce RTX 4060,CPU為Intel[?] CoreTM i7?12650H,內存為16 GB DDR5。
3.2" Yolov5模型訓練
使用Yolov5網絡對模型進行訓練,權重文件為Yolov5s,訓練次數為300次。邊界框損失(box_loss)和置信度損失(obj_loss)作為訓練中的重要參數,是對模型訓練過程進行評估的重要指標。邊界框損失(box_loss)用于衡量模型預測時預測框和真實框之間的差距,置信度損失(obj_loss)用于衡量預測框覆蓋目標的程度。兩個指標能直觀反映模型在訓練集和驗證集上的性能變化,有利于發現問題和改進模型。損失函數變化如圖7所示。
精確率是指神經網絡中正確預測樣本的數量占總真實樣本的比例,召回率是指神經網絡中正確預測樣本的數量占總正樣本的比例,精確率和召回率直接反映了網絡模型的精確程度。
表2采用混淆矩陣來表達預測樣本和真實樣本之間的關系。
表2中:TP(True Positive)表示正類樣本預測為正;FN(False Negative)表示正類樣本預測為負;FP(False Positive)表示負類樣本預測為正;TN(True Negative)表示負類樣本預測為負。
精確率可以反映正類模型正確判斷為正例的概率,具體計算公式為:
[精確率(Precision)=TPTP+FP] (4)
召回率可以側面反映正類模型漏判的概率,具體計算公式為:
[召回率(Recall)=TPTP+FN] (5)
訓練時精確度和召回率的變化如圖8所示。
3.3" 不同算法對比
3.3.1" Hough變換和其他算法對比
為了驗證Hough變換傾斜校正的效果,本文將測試集中經旋轉處理的圖片作為實驗輸入圖像,傾斜角度[0°,90°)、[90°,180°)、[180°,270°)和[270°,360°)各自100張,分別統計正確校正的數量。
將Hough變換和Fourier變換、Radon變換等算法進行對比實驗,對校正準確率和單張校正時間進行測試,結果如表3所示。
可以看出,Hough變換在準確率上相較于其他算法有很大優勢,單張圖片校正時間耗時也較為理想。
3.3.2" Yolov5與其他網絡模型對比
為了驗證Yolov5算法的合理性,本文選取了一些用于目標檢測領域經典的網絡模型用來實驗對照,單階段目標檢測算法有Yolov3、Yolov8和SSD,雙階段目標檢測算法選用Faster R?CNN,對訓練過程中精確度(Precision)、平均精確度(mean Average Precision, mAP)、召回率(Recall)和單張圖片推理時間(Inference Time)進行記錄,具體實驗數據如表4所示。
Yolov3網絡結構相對較大而且較復雜,訓練速度較慢。Yolov8由于其準確率和復雜模型結構上的優勢,更適用于較高檢測精度的場合。SSD算法[15]優點是速度快,可以實時檢測目標,具有較高的精度,但對于小目標的檢測不如Yolo算法。Faster R?CNN通過兩階段網絡,實現了較高的檢測精度,在多尺度、高精度問題更具優勢,但檢測速度較慢。Yolov5具有較小的網絡結構,在保持較高檢測精度的同時,減小了計算量,在小目標檢測時更具優勢。從實驗結果上看,Yolov5在本數據集上取得的總體成績優于其他網絡。
4" 結" 語
本文提出了一種基于Hough變換和深度學習的條形碼識別技術。通過灰度化和高斯模糊對原始圖像進行預處理,利用邊緣檢測和Hough變換提取圖像中符合預設條件的線段,并統計出這些線段斜率中出現次數最多的斜率,用此斜率計算校正角度并進行傾斜校正,相比于Fourier變換和Radon變換等算法校正效果更具優勢。采用Yolov5對條形碼進行識別分割,并對比了一些其他經典網絡模型獲得實驗數據,Yolov5模型在保證精度的同時,推理時間也較快,在使用本文數據集檢測時相比其他網絡表現更加優秀。本文方法具有準確率高、應用范圍廣、普適性強等優點,因而針對條形碼的識別具有較強的實際應用價值。
注:本文通訊作者為張豐收。
參考文獻
[1] 湯昌浩,劉一婷,劉志峰.基于圖像處理的條形碼定位與識別[J].移動信息,2023,45(1):156?159.
[2] 王建鋒,董學恒,李軍.復雜環境下快遞條形碼快速檢測系統[J].物聯網技術,2022,12(7):26?29.
[3] ASTAFIEV A V. Method of controlling the movement of large metal products with the use of algorithms for localization and recognition of bar code markings [C]// Proceedings of IEEE on Mechanisms and Machines. New York: IEEE, 2016: 125?128.
[4] ZHENG D S, RAN Z Y, LIU Z F, et al. An efficient bar code image recognition algorithm for sorting system [J]. Computers, materials amp; continua, 2020, 64(3): 1885?1895.
[5] 曾欣科,趙錁,賈力,等.基于全局優化與深度學習的條形碼識別方法[J].計算機應用,2021,41(z1):243?249.
[6] 郭廣振,張豐收.基于機器視覺的快遞面單識別[J].包裝與食品機械,2023,41(3):65?69.
[7] KIM Y J, LEE J Y. Algorithm of a perspective transform?based PDF417 barcode recognition [J]. Wireless personal communications, 2016, 89(3): 893?911.
[8] 姚河花,田玉,才旦多杰,等.基于Hough變換的指針式鐘表自動識別算法[J].青海大學學報,2022,40(4):69?75.
[9] 方莉,張萍.經典圖像去噪算法研究綜述[J].工業控制計算機,2010,23(11):73?74.
[10] 于新善,孟祥印,金騰飛,等.基于改進Canny算法的物體邊緣檢測算法[J].激光與光電子學進展,2023,60(22):221?230.
[11] 朱婷婷,程磊,王錦亞,等.基于YOLOv5網絡的缺陷硬糖智能分揀系統研究[J].包裝與食品機械,2022,40(1):34?39.
[12] 錢承山,沈有為,孫寧,等.改進YOLOv5s的遙感圖像檢測研究[J].國外電子測量技術,2022,41(11):57?66.
[13] 陳翠琴,范亞臣,王林.基于改進Mosaic數據增強和特征融合的Logo檢測[J].計算機測量與控制,2022,30(10):188?194.
[14] 張陽婷,黃德啟,王東偉,等.基于深度學習的目標檢測算法研究與應用綜述[J].計算機工程與應用,2023,59(18):1?13.
[15] 陳立辛,王磊,喬印虎,等.基于深度學習的花生米缺陷識別分揀方法研究[J].包裝與食品機械,2022,40(3):65?70.
基金項目:國家重點基礎研究發展計劃(J2019?VII?0017?0159)
作者簡介:屈源昊(2000—),男,河南許昌人,碩士研究生,研究方向為智能制造。
張豐收(1972—),男,河南商丘人,博士研究生,博士生導師,研究方向為智能制造。