李少波,王 錚,楊 靜,朱書德,全華鳳
(1.貴州大學 機械工程學院,貴州 貴陽 550025; 2.貴州大學 現(xiàn)代制造技術教育部重點實驗室,貴州 貴陽 550025)
隨著大數(shù)據時代的到來,數(shù)據量愈加龐大,而在數(shù)據的存儲方式中,條碼是存儲數(shù)據的良好介質,具有存儲信息量大、解碼速度高、穩(wěn)定強等特點。對生產線上產品的信息數(shù)據分類與保存具有重要的意義[1]。當今科技迅猛發(fā)展,現(xiàn)代企業(yè)正朝著高效、大型和集成化方向轉型,傳統(tǒng)依賴于人工的信息入庫與分類方法具有主觀性強、成本高和易產生視覺疲勞的缺點,已不能滿足市場對生產數(shù)據在線處理的需求。因此,在數(shù)據采集過程中,如何采用高速度、高精度和高效率的數(shù)據分類與存儲技術,保障企業(yè)生產節(jié)奏與產品信息精準追溯已逐漸成為企業(yè)生產領域的首要任務[2]。
在條碼分類、識別和存儲技術的前期研究中,文獻[3]針對QR(quick response)碼圖像捕捉中的噪聲問題,運用圖像預處理與中值濾波算法優(yōu)化了傳統(tǒng)QR碼識別算法,但在識碼速度方面略有不足。文獻[4]通過圖像混合將二維碼賦予視覺效果,保留了碼值的錯誤修正預算,但該方法在具有復雜的環(huán)境噪聲中識別率較低。文獻[5]對條碼信息進行加密并搭建了二維碼檢測系統(tǒng),提出了具有較高安全性的二維碼識別方法。為提高QR碼的識別速度,文獻[6]研究了圖像的編碼和解碼過程,將QR碼轉換成不同像素的黑白圖像,并設計了一種QR碼解碼系統(tǒng),該方法對靜態(tài)的條碼檢測具有較好的檢測效果。針對貼在圓柱體表面的扭曲二維碼,文獻[7]提出一種圓錐曲線糾偏方案,實驗表明該方案有效糾正了扭曲的二維碼圖像,但其識別速率較低且無法實時掃碼。文獻[8]提出一種基于二維碼識別的光纜標簽,通過對具有光纜標簽二維碼的定位與識別,實現(xiàn)信號回路的實時查看,但該方法需人工手持光纜標簽設備進行碼值識別。針對拍攝的PDF(portable data file)二維條碼圖像的特點,文獻[9]利用梯度特征并結合數(shù)學形態(tài)學的方法,提出一種復雜背景下條碼圖像的定位方法,對復雜背景中的條碼具有較好的分割效果。文獻[10]構建了西克激光條碼與PLC(programmable logic controller)可編程控制器相結合的倉儲配送系統(tǒng),通過對一維條碼進行掃描檢測,完成商品的自動分揀與配送,但該系統(tǒng)只適用于一維條碼,沒有對二維條碼進行有效處理。文獻[11]通過在條碼溯源電子秤上集成條碼識別模塊,構建了社區(qū)菜店交易管理與追溯系統(tǒng),實現(xiàn)了產品稱量、身份驗證、標簽打印和數(shù)據上傳等功能。也有學者嘗試對工業(yè)生產中復雜背景下的條碼識別,文獻[12]提出一種基于邊緣及水平集的復雜背景金屬零件二維條碼精確定位方法,實現(xiàn)了金屬零件表面二維條碼識別。文獻[13]提出一種改進的SUSAN(smallest univalue segment assimilating nuclues)角點檢測和半監(jiān)督機制下的DPM(direct part marking)條碼定位算法,實現(xiàn)了不同材料上基于角點聚類結果的DPM條碼定位。針對車間的作業(yè)流程,文獻[14]結合機器視覺光源優(yōu)化問題,分析了不同類型和不同強度的噪聲對恢復信息可分辨性的影響,提出一種基于圖像溢出的信息恢復方法。而針對二維碼定位的準確性,文獻[15]提出了基于機器學習和級聯(lián)過濾器結合的方法去除背景區(qū)域,實現(xiàn)復雜背景下二維條碼區(qū)域的快速定位,但該方法處理時間較長,不適宜定位高速運動中的條碼。文獻[16]提出一種基于計算機視覺、FPGA(field-programmable gate array)和DSP(digital signal processing)混合設計的條碼識別系統(tǒng),對高速移動的二維碼進行定位與識別。文獻[17]提出一種基于不變矩和BP(back propagation)網絡結合的條碼識別方法,提取不變矩特征向量作為特征值輸入BP網絡,對其進行訓練與測試,在一維條碼中的識別準確率為92.9%。文獻[18]提出一種改進的EAN-13(European article numbel-13)條形碼定位和識別算法。
綜上所述,在條碼精準識別領域,針對圖像背景、噪聲等對條碼識別率的影響,過濾背景噪聲、利用聚類特征加快目標的檢測速度和準確率是目前的主流方法,但對于高速運動條碼識別的穩(wěn)定性和準確性有待進一步提高。基于此,本文提出一種復雜背景下一維條碼與二維條碼同步定位與特征提取方法,計算出系統(tǒng)中各個參數(shù)與系統(tǒng)最高識碼系數(shù)的關系,并提出了二維碼和一維碼混合的條碼在線識別算法,以期為帶條碼包裝、產品質量追溯、產品分類,故障診斷提供借鑒和參考。
隨著目前數(shù)據存儲形式的多樣化發(fā)展,條碼成為了產品信息的良好存儲載體。通過識別條碼信息,對相關產品進行分類、信息存儲以及追溯是較為便捷的數(shù)據處理方式。如今,條碼識別算法的識別時間已經控制在50 ms以內,可滿足在線識別、分類,存儲等一系列處理過程。經典的條碼識別流程如圖1所示。
如圖1所示,條碼隨傳送帶高速移動,經過CCD(charge-coupled device)工業(yè)相機讀取條碼信息后將數(shù)據存入云端,系統(tǒng)將各個條碼背景信息與條碼信息一一對應,對條碼進行分類與處理。針對條碼背景復雜、背景動態(tài)變化快、噪聲多等特點,利用高速CCD工業(yè)相機在條碼高速運動時,迅速捕捉條碼圖像,并同時進行條碼背景信息采集與信息云存儲。具體編碼方式原理如下。如圖2所示為QR碼的結構圖。
二維碼圖形分為功能區(qū)和編碼區(qū)兩部分,每個QR碼符號由一個正方形陣列組成,它由編碼區(qū)域、尋像圖形、分隔符、定位圖形和校正圖形等區(qū)域組成。符號的四周由空白區(qū)包圍。編碼過程中,實現(xiàn)在不降低識碼速度的前提下,通過二維碼糾錯區(qū)進行碼值糾錯,保證二維碼信息識別的準確性。以QR二維碼為例,在任何q階伽羅華域GF(q)中都能找到一個α,能用它的冪次表示q-1個非零元素。通過GF(28)生成QR條形碼的糾錯碼,使用GF(28)中的元素組成一個循環(huán)隊列:(1,α1,…,α254),其中α255=α0=1,稱α是GF(28)的本原域元素。α0~α254可用0000 0001~1111 1111來表示。同時,α為P(X)=0的根。其中,以P(X)為模的多項式剩余類環(huán)構成28階伽羅華域[19],可定義本原多項式為:
P(X)=X8+X4+X8+X3+X2+1。
(1)
設置校檢矩陣與編碼碼字矩陣乘積即為編碼碼字多項式:
(2)
即編碼碼字多項式為:
C(X)=c0+c1x1+c2x2+c3x3+…+c25x25。
(3)
在編碼過程中,編碼機首先確定編碼的字符類型,選擇所需版本信息和糾錯等級,采用既定規(guī)則,將數(shù)據字符轉換為位流,再將位流轉換為碼字,將生成的糾錯碼字加到數(shù)據碼字后,再按照設定的規(guī)則在QR結構圖中將尋像圖形、分隔符、矯正圖形和碼字,按規(guī)則排列,放入二維碼矩陣。用8種掩模圖形依次對符號的編碼區(qū)域的位圖進行掩模處理,生成版本信息和格式信息,構成QR結構圖的符號區(qū)域。
在對二維碼進行識別的過程中,利用CCD工業(yè)相機的高速曝光特性,實現(xiàn)每秒30幀以上的圖像實時采集,當相機采集到完整二維碼時,系統(tǒng)識碼并返回碼值。主要操作包括以下兩步驟:①進行格式信息譯碼,確定二維碼編碼版本,消除碼上的掩模,獲得數(shù)據和糾錯碼字;②判斷糾錯碼字是否錯誤,若無錯誤則進行數(shù)據碼字譯碼,輸出保存數(shù)據,若糾錯碼字檢查出錯,則進行糾錯計算,將譯碼輸出,保存。
在高速視覺檢測系統(tǒng)中,條碼的不同屬性和環(huán)境參數(shù)是影響系統(tǒng)穩(wěn)定性的重要因素。通過分析系統(tǒng)各部分性能與實驗參數(shù),定義反映系統(tǒng)對條碼識別優(yōu)良情況的指標:單位時間內系統(tǒng)識別條碼的能力系數(shù)φ。
當條碼(以二維碼為例)經過相機視野時,如圖3a所示,定義相機視野為L視和W視,條碼邊長為L1和W1,待識別條碼距視野底部邊緣為d1,兩條碼間距始終為D1,傳送帶帶速為v,運動方向為箭頭所指方向。
當只關注一張條形碼的采集情況時,如圖3b所示,根據條碼尺寸,當鏡頭視野大于條碼尺寸,此時有,W視>W1,L視>L1。條碼的運動過程為:當條碼上邊緣與鏡頭視野邊緣重合,即開始采集條碼,當條碼上邊緣與鏡頭上邊緣重合時,采集結束。
考慮計算機處理圖像時間,假設T為程序識別的必要時間。若T?t,即當程序識別的必要時間絕對小的情況下,采集一張圖片并識別的必要時間為:
(4)
若超過時間t后仍沒有識別圖片,則產生漏檢。單位時間內系統(tǒng)識別條碼的能力系數(shù)φ計算公式可表示為:
(5)
φ值越高,表示系統(tǒng)識別運動中條碼的能力越強,將式(4)代入式(5),建立識碼系數(shù)與條碼運動速度關系模型:
(6)
由式(6)可知,當條碼尺寸與鏡頭視野保持不變時,系統(tǒng)識碼系數(shù)φ與帶速v成正比。若T>t,則表示計算機處理時間過長,會產生正在處理的條碼未處理完,而待處理條碼已經進入相機視野的情況。稱其為滯后時間:
Δt=T-t。
(7)
因此,在起始階段,Δt時間內條碼運行的路程可表示為
ΔS=Δt·v。
(8)
當ΔS=W視時,此時剛好錯過一張條碼。則系統(tǒng)丟失率為
ε=50%。
(9)
系統(tǒng)此時識碼系數(shù)為:
(10)
當d1≤ΔS≤W視時,若ΔS恰好等于d1,則第二張條碼也可識別,但第三張卻無法識別,造成數(shù)據丟失。按此推算,當ΔS>d1時,第n張條碼與標準位置相差的距離為:
S差=n·ΔS。
(11)
則S差=W視時,即可認為是一個誤差循環(huán)周期,此時有
(12)
將式(7)和式(8)代入式(12)可得:
(13)
考慮條碼個數(shù),假設一個視野中條碼個數(shù)為
P=W視/(D1+W1),
(14)
此時條碼丟失率為
(15)
將式(14)代入式(15)推導可得:
(16)
此時系統(tǒng)識碼系數(shù)為
(17)
顯然,當帶速vv,相機視野范圍W視,條碼尺寸確定時,系統(tǒng)識碼系數(shù)與程序識別速度T成反比。式(17)中出現(xiàn)v2項,說明當其他條件不變時,v對于系統(tǒng)識碼系數(shù)的影響程度較大。
當W視≤ΔS≤2W視時,同理有:
(18)
依此類推,當2W視≤ΔS≤3W視時有:
(19)
當(m-1)W視≤ΔS≤mW視時(m>1且m為正整數(shù)),
(20)
將式(20)代入式(10),可計算出此時系統(tǒng)識碼系數(shù)為
(21)
對于條碼識別流程,傳統(tǒng)方式為采用如圖4所示的處理步驟對條碼進行定位和識別。首先通過預處理將原來彩色圖像或灰度圖像轉化為二值圖像;其次,為了簡化計算量,通過定位確定二維條碼的大致區(qū)域,裁切圖像,去除無用背景干擾;然后,通過邊界檢測算法,確定二維條碼的四條邊界,實現(xiàn)精準定位;最后劃分網格對二維條碼的數(shù)據信息進行提取,將提取的數(shù)據傳給后續(xù)的解碼程序[20]。
為了提高識碼效率,本文將條碼圖像預處理,對條碼識別區(qū)域進行尺寸偏好設置,具體處理流程如下:
步驟1將條碼極性設置為條碼較亮,而底色較暗。
步驟2設置實驗中條碼屬性數(shù)值條碼碼粒數(shù)和碼粒像素的大小。
步驟3設置條碼掃描線的條數(shù)。
在圖像預處理之后,采用改進XLD(extended line descriptions)算法進行二維碼定位,直接在復雜背景中定位出二維碼的準確位置,從而提高系統(tǒng)的識碼系數(shù)。圖5為XLD二維碼定位圖,表1為條碼識別算法中應用的Halcon算子。
具體算法流程如下:
步驟1創(chuàng)建XLD,調用Halcon中的亞像素邊緣提取算子進行輪廓提取。
步驟2對XLD輪廓進行分割,采用線段分割方式。調用Halcon中的select_obj函數(shù)選擇條碼分割的輪廓。
步驟3將圓、直線等形狀進行擬合。
步驟4將前三步的結果轉化成世界坐標,獲得圖像的坐標信息。
步驟5提取輪廓特征。
步驟6獲得輪廓的原始數(shù)據或將其轉化成其他的數(shù)據類型。
步驟7輸出結果并進行保存。
為了使算法能同步識別一維碼與二維碼,提出一種雙模板中間變量識別算法,具體算法流程如圖6所示。
具體處理流程如下:
步驟1初始化中間變量μ0=0,μ1=0。
步驟2工業(yè)相機抓取一幀圖片。
步驟3創(chuàng)建一維條形碼識別模板ω1,嘗試進行一維碼預識別。
步驟4判斷識別結果δ1是否為零,若結果為零,表示該條形碼為二維碼或未識別條碼,則創(chuàng)建二維碼識別模板ω2,嘗試進行二維碼預識別。
步驟5若在步驟3中識別碼值不為零,表示該條形碼為一維碼,將碼值δ1賦值給中間變量μ1。
步驟6若在步驟3中δ1為零,但二維碼碼值δ2不為零,表示該條形碼為二維碼,將碼值δ2賦值給中間變量μ1,此時中間變量μ1為當前條碼(一維或二維)的碼值。
步驟7若μ1-μ0≠0,則說明與之前一張圖片中的碼值不同,將μ1賦值給μ0并保存μ0與采集的圖片;否則,說明前后兩張條碼的碼值相同,則返回步驟2重新采圖。
表1 算法所應用的Halcon算子
如圖7所示為筆者設計的一維與二維混合高速條碼檢測實驗平臺系統(tǒng)流程圖。如果圖8所示為課題組搭建的一維與二維混合高速條碼檢測實驗平臺,包括傳送帶、數(shù)據處理器、數(shù)據采集傳感器、光源和其他機械支架等部分,其中用于輸入與顯示數(shù)據的觸摸顯示屏是32寸的工業(yè)觸摸屏;視覺傳感設備采用的是具有電子滾動快門的MindVision高速工業(yè)相機,它可以實時采集高速運動的待檢測樣本。數(shù)據處理器為樹莓派B3;為了保證系統(tǒng)箱體內光線充足,在箱體上安裝亮度可調的帶狀環(huán)境光源LED光;在工業(yè)相機外部安裝Microscope LED Ring Light專用環(huán)形光源對檢測樣本進行補光,便于獲得清晰的樣本圖像。設備采用可調速的電機驅動傳送帶工作;箱體外側配有顯示器,用于將檢測結果可視化,用于降低數(shù)據處理器運算負荷的工作站是GPU1080顯卡的戴爾工作站,主要用于數(shù)據分析。同時,樹莓派B3具有無線通訊模塊,可以實現(xiàn)檢測實驗平臺與工作站間端到端的通信。工作站中裝有SQL SERVER 2008 R2數(shù)據庫,實現(xiàn)本地數(shù)據實時抓取作業(yè),并自動進行實時數(shù)據云端存儲。
傳送帶上貼有條形碼,光纖傳感器探測到條形碼經過后,向圖像采集部分發(fā)送觸發(fā)脈沖;圖像采集部分按照事先設定的程序和延時,分別向工業(yè)相機和照明系統(tǒng)發(fā)出啟動脈沖,工業(yè)相機開始圖像抓取,Microscope LED Ring Light專用環(huán)形光源提供照明,照明開啟時間與工業(yè)相機的曝光時間匹配。相機抓取圖像后,圖像采集部分接收模擬信號通過A/D(analog to digital)轉換將其數(shù)字化;圖像采集部分將數(shù)字圖像存放在處理器或計算機的內存中;處理器對條碼圖像進行處理、分析、識別,獲得檢測結果并保存。
為了驗證本文所提的方法,實驗中所使用的一維條形碼與二維條形碼均采用條碼生成軟件Active Barcode自動生成。條碼代表的內容由隨機字母和數(shù)字以及不同位數(shù)的“1”組成。需要說明的是:為更好地模擬實際生產中條碼反光以及背景模糊復雜等情況,在各條碼上均貼有反光透明貼紙,并將條形碼隨機貼在實驗臺的傳送帶表面。
為存儲系統(tǒng)識別的條形碼內容,本文采用SQL Server 2008 R2數(shù)據庫對所識別的條形碼進行存儲,并通過數(shù)據庫作業(yè)服務進行本地數(shù)據實時云存儲并可視化,如圖9所示。
系統(tǒng)識別條碼之后,將碼值數(shù)據上傳于SQL Server 2008 R2數(shù)據庫中儲存,如圖10所示,值得說明的是:data的數(shù)值表示為條碼的內容。條碼背景圖片保存入本地文件以便實時調用查詢識別情況。
4.3.1 實驗參數(shù)設置
在搭建的實驗平臺上對所提出的方法進行應用驗證。根據系統(tǒng)整體識碼系數(shù)的計算分析,以及實驗設備與待識別條形碼結構,設置如表2所示的物理量值和參數(shù)值。同時根據式(21)推導求得實驗參數(shù)下的條碼最優(yōu)運動速度,推導過程如下:
該函數(shù)為二次函數(shù),且拋物線開口向下,導數(shù)為零的點為其唯一極大值點,對其求導后得:
令其導數(shù)為零,則有:
進而求得:
采用MATLAB工具對本文所提方法的系統(tǒng)識碼系數(shù)和帶速關系進行仿真分析,其結果如圖11所示。
表2 實驗系統(tǒng)物理量與參數(shù)
4.3.2 條碼移動速度與系統(tǒng)識碼系數(shù)的關系
基于Halcon算子實現(xiàn)了混合條碼高速識別算法,實驗中采樣圖片1 000張其中一維碼500張,二維碼500張,圖像像素為520×520 pix。在采樣過程中,結合實際生產線上的反光、復雜背景干擾等因素,識別條碼情況與算法對比如表3所示,在帶速處于系統(tǒng)最優(yōu)識碼系數(shù)左右時,在1 000張測試條碼中,實驗設備在條碼高速運行狀態(tài)下,準確識別了971張條碼,準確率達97.1%。
觀察圖11可知,當運動速度從0 mm/ms增加到8.00 mm/ms的過程中,整個系統(tǒng)識碼系數(shù)隨著速度增加而逐漸增加到最大值,后又由于程序識別時間與條碼運動速度的限制逐漸減小。實際上,當條碼速度從0 mm/ms逐漸增加時,隨著其運動速度增加,系統(tǒng)單位時間識別出的條碼數(shù)量增加,表現(xiàn)為φ逐漸增加。當條碼運動速度過快,會導致在條碼經過鏡頭視野時,計算機程序沒能完成識別的工作從而導致漏檢,表現(xiàn)為φ逐漸降低。當條碼運動速度達到3.75 mm/ms時,當前實驗系統(tǒng)識碼系數(shù)達到理論最優(yōu)。但考慮到實際生產設備、實驗中傳送帶的穩(wěn)定性以及工業(yè)相機的曝光時間等實際參數(shù)的限制。在實驗時,將帶速控制在3.00 mm/ms左右,模擬實際生產中的實時條碼信息抓取與存儲。
由圖12對比各參數(shù)對系統(tǒng)識碼系數(shù)的影響可知,當條碼運動速度保持不變(3.00 mm/ms)時,兩條碼間距越小、條碼寬度越窄、系統(tǒng)處理時間越短、鏡頭視野越大,系統(tǒng)整體識碼系數(shù)越高;反之系統(tǒng)識碼系數(shù)越低。當兩條碼間距為2.00 mm,條碼寬度為7.00 mm,鏡頭視野為36.00 mm時,實驗平臺識碼系數(shù)較高。
4.3.3 不同算法的實驗結果對比
為了進一步驗證本文所提算法的有效性和優(yōu)越性,與目前較優(yōu)的條碼識別算法進行對比,其中包括基于計算機視覺、FPGA和DSP混合設計的條碼識別系統(tǒng)、基于不變矩和BP網絡的條形碼識別算法、中值濾波算法、基于二維碼的光纜標簽定位算法以及基于機器學習和級聯(lián)過濾器聯(lián)立算法,對比結果如表3與圖13所示。
表3 不同算法的實驗結果對比
續(xù)表3
對比圖13可知,實驗中所用條形碼數(shù)量較多,較好地反映了系統(tǒng)識碼的性能。本文提出的算法對條形碼定位時間較短,由于實驗中條碼運動速度較快,以及相機等硬件設備的限制,識碼準確性適當降低,但仍可滿足實際生產中高速運動條形碼定位識別的需求。圖14給出了移動條碼在實驗設備中的部分檢測結果。值得說明的是:本文提出的方法需要檢測設備周期性運動,檢測環(huán)境和外界光線保持恒定不變;條碼運動速度在3 mm/ms左右時,算法在有效時間內的實時計算與數(shù)據存儲能力較優(yōu)。
本文針對高速運動中的一維和二維條碼檢測識別和高速運動中多類條碼分類,摒棄了傳統(tǒng)識碼的冗雜流程,通過XLD亞像素邊緣檢測對多類條碼進行邊緣定位并進行特征提取,結合二維碼校準編碼方式,提高了條碼高速運動過程中算法的穩(wěn)定性與準確性。通過理論分析與實驗得到以下結論:提出了一種基于Halcon的XLD邊緣檢測識碼方法,有效提高了系統(tǒng)定位條碼的速度與準確性;對反映系統(tǒng)整體運行情況的識碼系數(shù)(φ)物理量并進行仿真運算,找到了針對實驗中常量的系統(tǒng)最高識碼系數(shù)點;本系統(tǒng)對于高速運動條碼具有良好的魯棒性。未來將針對噴碼零件分類與表面缺陷檢測進行研究,并提高系統(tǒng)的穩(wěn)定性和執(zhí)行效率,為高速運動產品的非接觸檢測提供一種高效可視化的檢測方法。