楊勇
(襄陽職業(yè)技術學院 電子信息工程學院, 襄陽 441050)
傳統(tǒng)的條形碼或二維碼識別系統(tǒng)是通過手持式讀碼器,對準條形碼或二維碼來讀取,常常由于掃描位置問題或識別率影響了讀取效率。該系統(tǒng)針對這些問題,選用500萬像素工業(yè)相機拍攝產(chǎn)品標簽,從圖像中自動提取條形碼或二維碼,基于C語言開發(fā)了一套集工業(yè)相機連接、圖像采集、圖像分析與處理、結果處理與一體的系統(tǒng),該系統(tǒng)可以識別圖像中的條形碼或二維碼信息。
本系統(tǒng)用安裝在計算機中的PCI運動控制卡,驅(qū)動兩個伺服電機,帶動圖像采集系統(tǒng)及LED照明系統(tǒng),實時運動,實現(xiàn)到達精準拍照測量。圖像采集系統(tǒng)中的工業(yè)相機選用瑞士Baumer相機EXG50千兆網(wǎng)相機,分辨率為2592×1944,幀率為13fps。照明系統(tǒng)使用緯朗光電科技公司制造的24 V紅色LED穹頂光源,計算機軟件是基于Window7系統(tǒng),使用C語言進行編程開發(fā),開發(fā)工具為NI公司的Labwindows,圖像處理系統(tǒng)基于NI Vision Assistant。
系統(tǒng)的硬件組成,如圖1所示。
圖中的X/Y軸運動系統(tǒng)帶動圖像采集系統(tǒng)和照明系統(tǒng)移動到被檢測產(chǎn)品上方,為提高檢測效率,一盤中放置12個產(chǎn)品,通過運動系統(tǒng)移動12次來分別檢測。到達某個產(chǎn)品上方后,打開穹頂光源,工業(yè)相機開始拍攝圖像并將圖像通過GigE千兆網(wǎng)將數(shù)據(jù)傳輸?shù)接嬎銠C,計算機處理軟件基于NI Vision Assistant的一些圖像處理函數(shù),對采集到的圖像進行處理和識別,識別條形碼或二維碼中的信息,最終從此信息中提取檢測產(chǎn)品的SN。
圖1 條形碼及二維碼識別系統(tǒng)結構圖
本條形碼及二維碼識別系統(tǒng)的軟件設計是整個系統(tǒng)的核心,此系統(tǒng)是基于C語言開發(fā),開發(fā)工具為Labwindows CVI,負責程序框架編寫與計算機軟件操作界面設計,運動系統(tǒng)硬件采用NI-PCI運動控制卡,使用NI-Motion開發(fā)包進行運動控制程序開發(fā)。工業(yè)相機連接與圖像采集使用NI-Vision開發(fā)包對工業(yè)相機進行二次開發(fā),包括連接相機,設置曝光參數(shù),采集圖像并將圖像傳輸?shù)接嬎銠C。采集到的圖像通過NI Vision Assistant提供的圖像處理函數(shù),首先進行圖像預處理,然后進行條形碼及二維碼識別,從讀取到的字符中獲取SN信息,其中條形碼讀取到的字符就是SN信息,但二維碼讀取到的字符包含多個信息,從中讀取固定一段字符為SN信息。最后將讀取到的SN信息顯示在程序界面上。
檢測流程,如圖2所示。
圖2 條形碼及二維碼識別系統(tǒng)處理流程圖
系統(tǒng)軟件設計分為四大模塊,包括產(chǎn)品管理模塊、運動控制模塊、LED光源照明模塊、工業(yè)相圖像采集模塊、圖像處理模塊。其中各系統(tǒng)之間緊密聯(lián)系,協(xié)同工作,共同完成產(chǎn)品上的標簽圖像采集與條形碼及二維碼識別功能。
系統(tǒng)功能模塊,如圖3所示。
圖3 系統(tǒng)功能模塊劃分
本系統(tǒng)可識別多類條形碼及二維碼,適用于多種產(chǎn)品。此模塊可進行產(chǎn)品的管理和參數(shù)的配置,通過保存ini配置文件的方式,將各類產(chǎn)品參數(shù)進行區(qū)分和管理。軟件界面上,提供可供選擇產(chǎn)品類型的控件,在進行測試時選擇相應的產(chǎn)品,軟件加載對應的ini配置文件讀取參數(shù),然后進行此產(chǎn)品的檢測。不同產(chǎn)品類型的檢測位置、攝像系統(tǒng)曝光時間、條形碼或二維碼類型、檢測結果處理評判等參數(shù)是不同的,通過ini配置文件的管理,實現(xiàn)系統(tǒng)靈活檢測的特性。
本設計的運動控制系統(tǒng)為NI的PCI運動控制卡,使用發(fā)送正反向脈沖模式控制Panasonic伺服驅(qū)動器,驅(qū)動器連接到電機,電機按脈沖量轉(zhuǎn)動實現(xiàn)X/Y方向精準運動。計算機軟件基于NI-Motion開發(fā)庫,使用C語言進行二次開發(fā),程序功能包括原點復位,正反向運動和緊急停止等功能。通過兩個方向運動軸控制,實現(xiàn)二維方向靈活運動,同時軟件設計中提供可手動調(diào)試的運動控制界面,供用戶在系統(tǒng)搭建前期,手動調(diào)節(jié)運動軸,測試并設定良好的拍照位置參數(shù)。
照明系統(tǒng)采用Mightex光源控制器控制24V穹頂光源的方式。Mightex通過USB與電腦通訊,計算機軟件基于Mightex廠家提供的開發(fā)包進行二次開發(fā),功能包括初始化光源控制器,設置光源控制器輸出電流,設置光源控制器開關狀態(tài)等。為優(yōu)化系統(tǒng)的運行速度,在照明系統(tǒng)的軟件設計中,采用運動軸開始運動時提前打開LED光源的方式,提高運行效率。
使用千兆網(wǎng)線連接GigE工業(yè)相機后,對工業(yè)相機進行IP地址配置,完成后使用NI-Driver max軟件對工業(yè)相機進行連接和參數(shù)配置,計算機軟件開發(fā)使用NI-Vision完成相機采集和傳輸圖像的控制。軟件中通過配置相機的曝光時間來實現(xiàn)采集圖像亮度的調(diào)節(jié),曝光時間越長,采集到的圖像亮度越高。工業(yè)相機工作過程包括連接圖像、采集圖像、傳輸圖像等。
拍攝到的產(chǎn)品標簽的圖像,由于產(chǎn)品固定位置略有偏差,首先使用NI Vision Assitant中的PatternMatching工具,識別產(chǎn)品標簽在圖像中的位置,進而確定出條形碼或二維碼在圖像中的位置,為了降低圖像處理的復雜性,縮短圖像處理時間,針對條形碼或二維碼設置圖像感興趣區(qū)域(ROI),此函數(shù)的參數(shù)ROI為庫中預定義的ROI變量,傳入的矩形區(qū)域左上頂點坐標及高度和寬度。
進行計算機軟件開發(fā)時使用NI Vision Assistant庫中函數(shù)識別區(qū)域中的條形碼信息。函數(shù)返回值BarcodeInfo*類型的結構體指針包類條形碼檢測信息,從此結構體指針中提取出結果字符,即為檢測產(chǎn)品的SN。讀取二維碼時,使用NI Vision Assistant庫中函數(shù)識別區(qū)域中的二維碼信息,函數(shù)返回值DataMatrixReport*為結構體指針,包含二維碼檢測信息,從中提取出結果字符。由于產(chǎn)品差異,二維碼檢測信息中的字符包含產(chǎn)品類型、產(chǎn)地、SN等各類信息,結果字符中取固定字符段即為產(chǎn)品的SN信息。
使用的主要NI Vision Assitant庫函數(shù)如下:
1) PatternMatch* imaqMatchPattern:模板匹配,用于標簽位置定位。
2) ContourID imaqAddRectContour:設置感興趣區(qū)域。
3) BarcodeInfo* imaqReadBarcode:讀取條形碼信息。
4) DataMatrixReport* imaqReadDataMatrixBarcode:讀取二維碼信息。
在感興趣區(qū)域中進行條形碼識別,檢測的條形碼類型為Code128,設置好類型及檢測信息后,根據(jù)區(qū)域中灰度差進行圖像處理分析,讀取條形碼中的字符信息。如圖4所示。
與條形碼類似,在感興趣區(qū)域中進行二維碼識別。檢測二維碼類型為Data Matrix,設置好類型及檢測參數(shù),二維碼尺寸范圍等,讀取二維碼中的字符信息。讀取到的二維碼字符信息,取某個固定字符段即為所需要的SN信息。如圖5所示。
圖4 條形碼識別
圖5 二維碼識別
在產(chǎn)品標簽上,有條形碼或二維碼圖,也有對應的SN字符,由于讀取條形碼或二維碼速度快,且計算機處理識別條形碼或二維碼過程比字符識別準確性更高。為了提高檢測效率,在檢測時依次檢測12個產(chǎn)品并顯示結果。單個產(chǎn)品的圖像處理時間在90ms以內(nèi),識別速度可以達到設計要求。
測試12組條形碼和二維碼識效果,如表1所示。
表1 條形碼及二維碼測量結果
本組條形碼及二維碼識別系統(tǒng)識別率跟圖像質(zhì)量關系很大,照明系統(tǒng)的穩(wěn)定性尤為重要。外界光線的穩(wěn)定性對識別率也有影響,考慮到此問題,設計時增加擋光結構,保證光亮度的穩(wěn)定性。
為提高程序執(zhí)行效率,軟件開發(fā)時采用了多線程控制的方式,包括運動控制線程和圖像采集處理線程,線程之間通過全局變量作為標志位,這樣就可以實現(xiàn)在程序控制工業(yè)相機運動時,還能進行圖像處理工作,提高了程序執(zhí)行效率,保證系統(tǒng)的運行速度。
本系統(tǒng)基于NI平臺,選用NI Motion運動控制卡和Baumer工業(yè)相機,使用NI Vision Assistant圖像開發(fā)庫,基于C語言平臺Labwindows進行計算機軟件開發(fā),在經(jīng)過多次試驗驗證后,設置最佳照明效果,保證條形碼及二維碼識別率。程序框架采用多線程方式提高運行效率。該系統(tǒng)由自動掃描識別代替手動掃描并輸入條形碼及二維碼中的字符,提高了條形碼及二維碼的識別效率。通過對測量結果的分析,本文的條形碼及二維碼識別原理、圖像算法是實際可用的。該系統(tǒng)對提高生產(chǎn)管理系統(tǒng)效率也有很大幫助。