摘" 要: 為了解決復(fù)雜背景下條形碼不易定位識別的難題,提出一種基于Hough變換和深度學(xué)習(xí)相結(jié)合的方法對條形碼進(jìn)行校正定位。首先對待檢測圖像進(jìn)行灰度化、高斯模糊以及邊緣檢測等預(yù)處理;然后利用Hough變換檢測條形碼圖像中的線段,進(jìn)行旋轉(zhuǎn)校正,校正后的圖像經(jīng)Yolov5對條形碼進(jìn)行識別和提取,完成條形碼的識別分割。文中方法對不同樣式條形碼均有較好的識別效果,旋轉(zhuǎn)校正的精確度達(dá)到99.31%,識別平均精確度達(dá)到99.40%,召回率達(dá)到99.79%,推理時間為10.5 ms。提出的方法可對任意角度傾斜進(jìn)行校正,識別條碼具有較高的準(zhǔn)確率,對條形碼定位識別具有一定的應(yīng)用價值。
關(guān)鍵詞: Hough變換; Yolov5; 傾斜校正; 條碼識別; 圖像處理; 機器視覺
中圖分類號: TN911.73?34; TP391.41" " " " " " " " "文獻(xiàn)標(biāo)識碼: 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" 引" 言
隨著現(xiàn)代商業(yè)的發(fā)展,條形碼技術(shù)[1]已成為商品追蹤和管理的重要工具。然而傳統(tǒng)的條形碼識別方法在面對復(fù)雜背景、旋轉(zhuǎn)變形等挑戰(zhàn)時表現(xiàn)不佳,因此研究復(fù)雜場景中條形碼的識別具有很強的現(xiàn)實意義。本文旨在結(jié)合Hough變換和深度學(xué)習(xí)技術(shù),提出一種條形碼識別方法,以提高識別準(zhǔn)確率和效率。
目前常見的條形碼識別方法是用圖像處理的方法進(jìn)行條形碼的定位,然后再對其進(jìn)行解碼。文獻(xiàn)[2]提出了一種基于顏色和形狀特征的條形碼快速檢測方法,以適應(yīng)復(fù)雜場景下的多目標(biāo)、多角度條形碼快速識別,但當(dāng)包含條形碼的快遞面單與背景顏色相近時,無法取得良好的識別效果。文獻(xiàn)[3]提出結(jié)合模糊邏輯多種方法的新算法,提高了一維碼定位精度,但是實現(xiàn)方法成本較高,受外部影響較大。文獻(xiàn)[4]提出一種漸進(jìn)式條碼壓縮識別算法,計算效率和識別模糊圖像效果均有所提高,但未涵蓋所有條形碼識別。文獻(xiàn)[5]提出了一種在深度神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上結(jié)合全局優(yōu)化方法的條形碼識別算法,利用卷積循環(huán)網(wǎng)絡(luò)提取出條碼中各字元的特征并進(jìn)行分類,但存在大約5%的拒收率,整體樣本識別精確率較低。文獻(xiàn)[6]提出基于機器視覺同時對一維碼和三段碼定位識別的方法,對存在缺陷的條形碼識別效果有所提升,但在識別正常條形碼時效果較差。文獻(xiàn)[7]提出一種新的PDF417分割歸一化方法,克服了輸入圖像的位置應(yīng)位于預(yù)定義矩形區(qū)域的限制問題,但在旋轉(zhuǎn)角度超過40°時識別率較低。
本文提出一種結(jié)合Hough變換和深度學(xué)習(xí)的條形碼識別技術(shù),利用Hough變換善于檢測直線的能力,對條形碼進(jìn)行傾斜校正,利用深度學(xué)習(xí)在目標(biāo)檢測方面的優(yōu)越性,對校正后的條形碼進(jìn)行識別切割。本文方法具有推理時間短、準(zhǔn)確率高、實用性強等優(yōu)點。
1" 基于Hough變換的條形碼旋轉(zhuǎn)校正
1.1" Hough變換原理
Hough變換是一種特征提取方法,其基本原理是將直角坐標(biāo)系上的點轉(zhuǎn)換到極坐標(biāo)系中,通過觀察極坐標(biāo)系中曲線的交點情況判斷直角坐標(biāo)系中圖像的特征[8],通常用于直線、圓形等的檢測。直角坐標(biāo)系映射到極坐標(biāo)系過程如圖1所示,經(jīng)過直角坐標(biāo)系上的任意一點[(x,y)]的所有直線,都能轉(zhuǎn)換為對應(yīng)的極坐標(biāo)曲線[(ρ,θ)],對應(yīng)表達(dá)式為:
[ρ=xcosθ+ysinθ] (1)
從圖1可以看出,經(jīng)過同一條直線的點通過坐標(biāo)系轉(zhuǎn)換后,會在極坐標(biāo)系上交于一個點,統(tǒng)計處于這個點所有曲線的數(shù)量,為此數(shù)量設(shè)置一個閾值,只有大于這個閾值才被認(rèn)為是一條直線,從而實現(xiàn)直線檢測。
1.2" 圖像預(yù)處理
圖像預(yù)處理可以抑制圖像中的無用信息、增強所需信息的可檢測性和最大限度地簡化數(shù)據(jù)。在圖像處理中,通常會進(jìn)行灰度化處理,灰度圖像中每個像素僅需一個字節(jié)存放灰度值,可以減少圖像處理過程中的計算量,提高計算效率。灰度圖像中存在的噪聲會讓灰度值變化不再連續(xù)均勻,使圖像中的部分特征被掩蓋。所以在灰度化處理后,通常會進(jìn)行圖像去噪處理,以便盡可能多地保留圖像原始信息,最大限度地降低噪聲對圖像的影響[9]。
圖像灰度化的實現(xiàn)通常有分量法、最大值法、平均值法和加權(quán)平均值法。加權(quán)平均值法就是給三分量亮度值不同的權(quán)重得到的加權(quán)平均值。相較于其余幾種方法,加權(quán)平均值法是根據(jù)人眼對色彩的感知能力的不同進(jìn)行的權(quán)重分配,更符合人眼的視覺感受,因此選用加權(quán)平均值法進(jìn)行圖像灰度化處理,加權(quán)計算公式如下所示:
[Gray=0.299*R+0.587*G+0.114*B] (2)
常用的去噪方法有均值濾波去噪、中值濾波去噪、高斯濾波去噪和雙邊濾波去噪。均值濾波去噪是分別以圖像中每一個像素點為中心,對周圍[N×M]大小區(qū)域內(nèi)像素值進(jìn)行平均,得到的平均像素值作為該點的像素值,[N]和[M]取奇數(shù)。中值濾波去噪是對像素點周圍[N×M]大小區(qū)域內(nèi)像素值排序找到中值,將找到的中值作為該點的像素值。雙邊濾波是在高斯濾波的基礎(chǔ)上增加了像素值權(quán)重項,像素值越相近,權(quán)重越大。高斯濾波去噪就是對像素點周圍[N×M]大小區(qū)域內(nèi)每個像素分配不同的權(quán)重,越靠近該像素點權(quán)重越大,最終區(qū)域內(nèi)每個像素值和對應(yīng)權(quán)重相乘再求和作為該點像素值,二維高斯分布公式如下:
[G(x,y)=12πσ2e-x2+y22σ2] (3)
由于高斯濾波可以保留邊緣信息,保持主要特征,運算簡單,本文采用高斯濾波去噪,高斯卷積核大小為11×11,經(jīng)灰度化和去噪處理的效果如圖2所示。
1.3" 邊緣檢測與傾斜校正
邊緣檢測可以標(biāo)識圖像中亮度極速變化的點,達(dá)到特征提取和檢測的作用。常見的邊緣檢測算子有Sobel算子、Robets算子和Canny算子等。Sobel算子采用3×3的卷積核,分別在[x]、[y]兩個方向計算梯度變化值,將這兩個梯度值經(jīng)過變換得到最終梯度值。Robets算子是基于交叉差分的梯度算法,通過計算相鄰對角的像素差檢測圖像邊緣,當(dāng)圖像邊緣處于±45°左右時效果最好。
Canny算法是應(yīng)用最為廣泛的邊緣檢測算法之一,可以找到一幅圖像中灰度強度變化最強的位置[10]。主要步驟有:高斯濾波去噪、梯度計算、非極大值抑制、雙閾值判斷潛在邊界和邊界追蹤。通過非極大值抑制過濾掉非邊緣像素,使邊緣特征變得清晰。雙閾值決定邊界就是設(shè)定一個閾值上界和閾值下界,梯度值如果大于閾值上界就被認(rèn)定是邊界(強邊界),如果梯度值小于閾值上界的同時大于閾值下界,就被認(rèn)為可能是邊界(弱邊界),如果梯度值小于閾值下界,就認(rèn)定不是邊界。對弱邊界進(jìn)行邊界追蹤,如果發(fā)現(xiàn)與邊界相連就判斷是邊界并保留,如果不相連就拋棄。
利用Hough變換原理,將邊緣檢測圖像中找線段的問題轉(zhuǎn)換為極坐標(biāo)系找最大值問題,給極坐標(biāo)中相交于一點的曲線數(shù)量設(shè)定一個閾值(threshould)為100,設(shè)定最短長度閾值minLineLength為100,線段上最近兩點之間的閾值maxLineGap設(shè)置為10,只有同時滿足這些條件才能被認(rèn)定為線段。然后對邊緣檢測圖像進(jìn)行檢測,找出圖像中所有滿足條件的線段,計算出每條線段的斜率,統(tǒng)計出現(xiàn)次數(shù)最多的斜率,根據(jù)這個斜率計算傾斜角度并對圖像進(jìn)行旋轉(zhuǎn)校正,校正過程和效果如圖3所示。
2" 條形碼定位
2.1" Yolov5目標(biāo)檢測
Yolov5是一種基于深度學(xué)習(xí)的單階段目標(biāo)檢測算法,可以實現(xiàn)多尺度、多目標(biāo)的檢測[11]。Yolov5的網(wǎng)絡(luò)結(jié)構(gòu)由骨干網(wǎng)絡(luò)(Backbone)、特征融合模塊(Neck)和目標(biāo)檢測頭部(Head)組成[12],如圖4所示。
骨干網(wǎng)絡(luò)主要用于特征提取并不斷縮小特征圖,特征融合模塊實現(xiàn)了淺層圖形特征和深層語義特征的融合以獲取更加完整的特征,目標(biāo)檢測頭部進(jìn)行最終的回歸預(yù)測。
輸入端對輸入圖像進(jìn)行處理,從而將輸入圖像大小調(diào)整為網(wǎng)絡(luò)需要的輸入大小,同時進(jìn)行歸一化操作。Yolov5采用Mosaic數(shù)據(jù)增強操作來提升模型訓(xùn)練速度和網(wǎng)絡(luò)精度,同時還引入了一種自適應(yīng)錨框計算方法。應(yīng)用Mosaic數(shù)據(jù)增強圖像使得圖像中出現(xiàn)小目標(biāo)的概率大幅提高,所以模型檢測小目標(biāo)的能力得到提高[13]。
在網(wǎng)絡(luò)訓(xùn)練階段前,設(shè)定好一個固定大小的初始錨框Anchor,在訓(xùn)練時會生成一個對應(yīng)預(yù)測框,通過計算初始錨框和預(yù)測框的差距進(jìn)行反向傳播,對網(wǎng)絡(luò)模型進(jìn)行優(yōu)化。
2.2" 數(shù)據(jù)集的構(gòu)建與標(biāo)注
數(shù)據(jù)集的制作需要大量的樣本圖片,通過網(wǎng)絡(luò)下載和人工采集兩種途徑獲得,最終得到3 020張圖像,其中1 994張劃分為訓(xùn)練集,926張劃分為驗證集,100張用于測試集。圖片準(zhǔn)備完成后,對圖像進(jìn)行人工標(biāo)注,本文采用可視化圖像標(biāo)定工具LabelImg對數(shù)據(jù)集進(jìn)行標(biāo)注。
將100張水平狀態(tài)的條碼圖像作為測試集基礎(chǔ)圖像,通過程序?qū)⑦@100張圖像分別進(jìn)行[0,90°)、[90°,180°)、[180°,270°)和[270°,360°)隨機角度旋轉(zhuǎn)處理,將處理獲得的這400張圖像和原始圖像共500張作為測試集進(jìn)行實驗驗證,隨機角度旋轉(zhuǎn)效果如圖5所示。
2.3" 條形碼識別
通過深度學(xué)習(xí)進(jìn)行目標(biāo)檢測的方法分為兩種:分別是雙階段目標(biāo)檢測算法和單階段目標(biāo)檢測算法[14]。雙階段目標(biāo)檢測算法分為兩步進(jìn)行:第一步生成樣本候選框;第二步利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分類和定位。單階段目標(biāo)檢測算法同時完成區(qū)域生成、分類和定位任務(wù)。一般來說,雙階段目標(biāo)檢測算法精度更高,單階段目標(biāo)檢測算法速度更快。
使用Yolov5網(wǎng)絡(luò)對數(shù)據(jù)集進(jìn)行訓(xùn)練時,具體訓(xùn)練參數(shù)設(shè)置如表1所示。
訓(xùn)練完成后,條形碼識別效果如圖6所示。原始圖像經(jīng)過Hough變換進(jìn)行傾斜校正,由Yolov5進(jìn)行識別,識別完成后對目標(biāo)區(qū)域進(jìn)行分割提取,這樣就能將條形碼從復(fù)雜背景中識別并提取出來,方便后續(xù)解碼工作順利進(jìn)行。
3" 對比實驗分析與結(jié)果
3.1" 實驗環(huán)境
為了測試不同算法對條形碼校正識別的效率和準(zhǔn)確性,構(gòu)建實驗環(huán)境對不同算法進(jìn)行實驗。PyTorch是一個開源的深度學(xué)習(xí)框架,常用于圖像識別、自然語言處理等機器學(xué)習(xí)應(yīng)用程序。
本文中所有模型的訓(xùn)練都是在PyTorch框架下進(jìn)行的,操作系統(tǒng)為Windows 11,GPU為NVIDIA GeForce RTX 4060,CPU為Intel[?] CoreTM i7?12650H,內(nèi)存為16 GB DDR5。
3.2" Yolov5模型訓(xùn)練
使用Yolov5網(wǎng)絡(luò)對模型進(jìn)行訓(xùn)練,權(quán)重文件為Yolov5s,訓(xùn)練次數(shù)為300次。邊界框損失(box_loss)和置信度損失(obj_loss)作為訓(xùn)練中的重要參數(shù),是對模型訓(xùn)練過程進(jìn)行評估的重要指標(biāo)。邊界框損失(box_loss)用于衡量模型預(yù)測時預(yù)測框和真實框之間的差距,置信度損失(obj_loss)用于衡量預(yù)測框覆蓋目標(biāo)的程度。兩個指標(biāo)能直觀反映模型在訓(xùn)練集和驗證集上的性能變化,有利于發(fā)現(xiàn)問題和改進(jìn)模型。損失函數(shù)變化如圖7所示。
精確率是指神經(jīng)網(wǎng)絡(luò)中正確預(yù)測樣本的數(shù)量占總真實樣本的比例,召回率是指神經(jīng)網(wǎng)絡(luò)中正確預(yù)測樣本的數(shù)量占總正樣本的比例,精確率和召回率直接反映了網(wǎng)絡(luò)模型的精確程度。
表2采用混淆矩陣來表達(dá)預(yù)測樣本和真實樣本之間的關(guān)系。
表2中:TP(True Positive)表示正類樣本預(yù)測為正;FN(False Negative)表示正類樣本預(yù)測為負(fù);FP(False Positive)表示負(fù)類樣本預(yù)測為正;TN(True Negative)表示負(fù)類樣本預(yù)測為負(fù)。
精確率可以反映正類模型正確判斷為正例的概率,具體計算公式為:
[精確率(Precision)=TPTP+FP] (4)
召回率可以側(cè)面反映正類模型漏判的概率,具體計算公式為:
[召回率(Recall)=TPTP+FN] (5)
訓(xùn)練時精確度和召回率的變化如圖8所示。
3.3" 不同算法對比
3.3.1" Hough變換和其他算法對比
為了驗證Hough變換傾斜校正的效果,本文將測試集中經(jīng)旋轉(zhuǎn)處理的圖片作為實驗輸入圖像,傾斜角度[0°,90°)、[90°,180°)、[180°,270°)和[270°,360°)各自100張,分別統(tǒng)計正確校正的數(shù)量。
將Hough變換和Fourier變換、Radon變換等算法進(jìn)行對比實驗,對校正準(zhǔn)確率和單張校正時間進(jìn)行測試,結(jié)果如表3所示。
可以看出,Hough變換在準(zhǔn)確率上相較于其他算法有很大優(yōu)勢,單張圖片校正時間耗時也較為理想。
3.3.2" Yolov5與其他網(wǎng)絡(luò)模型對比
為了驗證Yolov5算法的合理性,本文選取了一些用于目標(biāo)檢測領(lǐng)域經(jīng)典的網(wǎng)絡(luò)模型用來實驗對照,單階段目標(biāo)檢測算法有Yolov3、Yolov8和SSD,雙階段目標(biāo)檢測算法選用Faster R?CNN,對訓(xùn)練過程中精確度(Precision)、平均精確度(mean Average Precision, mAP)、召回率(Recall)和單張圖片推理時間(Inference Time)進(jìn)行記錄,具體實驗數(shù)據(jù)如表4所示。
Yolov3網(wǎng)絡(luò)結(jié)構(gòu)相對較大而且較復(fù)雜,訓(xùn)練速度較慢。Yolov8由于其準(zhǔn)確率和復(fù)雜模型結(jié)構(gòu)上的優(yōu)勢,更適用于較高檢測精度的場合。SSD算法[15]優(yōu)點是速度快,可以實時檢測目標(biāo),具有較高的精度,但對于小目標(biāo)的檢測不如Yolo算法。Faster R?CNN通過兩階段網(wǎng)絡(luò),實現(xiàn)了較高的檢測精度,在多尺度、高精度問題更具優(yōu)勢,但檢測速度較慢。Yolov5具有較小的網(wǎng)絡(luò)結(jié)構(gòu),在保持較高檢測精度的同時,減小了計算量,在小目標(biāo)檢測時更具優(yōu)勢。從實驗結(jié)果上看,Yolov5在本數(shù)據(jù)集上取得的總體成績優(yōu)于其他網(wǎng)絡(luò)。
4" 結(jié)" 語
本文提出了一種基于Hough變換和深度學(xué)習(xí)的條形碼識別技術(shù)。通過灰度化和高斯模糊對原始圖像進(jìn)行預(yù)處理,利用邊緣檢測和Hough變換提取圖像中符合預(yù)設(shè)條件的線段,并統(tǒng)計出這些線段斜率中出現(xiàn)次數(shù)最多的斜率,用此斜率計算校正角度并進(jìn)行傾斜校正,相比于Fourier變換和Radon變換等算法校正效果更具優(yōu)勢。采用Yolov5對條形碼進(jìn)行識別分割,并對比了一些其他經(jīng)典網(wǎng)絡(luò)模型獲得實驗數(shù)據(jù),Yolov5模型在保證精度的同時,推理時間也較快,在使用本文數(shù)據(jù)集檢測時相比其他網(wǎng)絡(luò)表現(xiàn)更加優(yōu)秀。本文方法具有準(zhǔn)確率高、應(yīng)用范圍廣、普適性強等優(yōu)點,因而針對條形碼的識別具有較強的實際應(yīng)用價值。
注:本文通訊作者為張豐收。
參考文獻(xiàn)
[1] 湯昌浩,劉一婷,劉志峰.基于圖像處理的條形碼定位與識別[J].移動信息,2023,45(1):156?159.
[2] 王建鋒,董學(xué)恒,李軍.復(fù)雜環(huán)境下快遞條形碼快速檢測系統(tǒng)[J].物聯(lián)網(wǎng)技術(shù),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] 曾欣科,趙錁,賈力,等.基于全局優(yōu)化與深度學(xué)習(xí)的條形碼識別方法[J].計算機應(yīng)用,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].青海大學(xué)學(xué)報,2022,40(4):69?75.
[9] 方莉,張萍.經(jīng)典圖像去噪算法研究綜述[J].工業(yè)控制計算機,2010,23(11):73?74.
[10] 于新善,孟祥印,金騰飛,等.基于改進(jìn)Canny算法的物體邊緣檢測算法[J].激光與光電子學(xué)進(jìn)展,2023,60(22):221?230.
[11] 朱婷婷,程磊,王錦亞,等.基于YOLOv5網(wǎng)絡(luò)的缺陷硬糖智能分揀系統(tǒng)研究[J].包裝與食品機械,2022,40(1):34?39.
[12] 錢承山,沈有為,孫寧,等.改進(jìn)YOLOv5s的遙感圖像檢測研究[J].國外電子測量技術(shù),2022,41(11):57?66.
[13] 陳翠琴,范亞臣,王林.基于改進(jìn)Mosaic數(shù)據(jù)增強和特征融合的Logo檢測[J].計算機測量與控制,2022,30(10):188?194.
[14] 張陽婷,黃德啟,王東偉,等.基于深度學(xué)習(xí)的目標(biāo)檢測算法研究與應(yīng)用綜述[J].計算機工程與應(yīng)用,2023,59(18):1?13.
[15] 陳立辛,王磊,喬印虎,等.基于深度學(xué)習(xí)的花生米缺陷識別分揀方法研究[J].包裝與食品機械,2022,40(3):65?70.
基金項目:國家重點基礎(chǔ)研究發(fā)展計劃(J2019?VII?0017?0159)
作者簡介:屈源昊(2000—),男,河南許昌人,碩士研究生,研究方向為智能制造。
張豐收(1972—),男,河南商丘人,博士研究生,博士生導(dǎo)師,研究方向為智能制造。