(1.石家莊鐵道大學(xué) 電氣與電子工程學(xué)院,河北 石家莊 050043;2.清華大學(xué) 汽車安全與節(jié)能國家重點(diǎn)實(shí)驗(yàn)室,北京 100084)
二維碼是由一系列黑白點(diǎn)(方點(diǎn),圓點(diǎn)或其它形狀)構(gòu)成的幾何圖案。每個信息字節(jié)通過對應(yīng)的ASCII碼轉(zhuǎn)化為二進(jìn)制即可保存在這些黑白點(diǎn),其中,黑點(diǎn)表示二進(jìn)制的‘1’,白點(diǎn)表示二進(jìn)制的‘0’。將這些黑白像素按一定規(guī)律排列便可在二維碼中存儲大量信息。其編碼過程有:①數(shù)據(jù)編碼;②結(jié)束碼和補(bǔ)齊碼;③糾錯碼;④最終編碼。第一步數(shù)據(jù)編碼就是將需要存儲的信息轉(zhuǎn)化為二進(jìn)制數(shù)據(jù),后面三步是完成將編好的二進(jìn)制數(shù)據(jù)存入二維碼。常用的條碼掃描器一般由光源、光學(xué)透鏡、掃描模組、模擬數(shù)字轉(zhuǎn)換電路加塑料外殼構(gòu)成。它利用光電元件將檢測到的光信號轉(zhuǎn)換成電信號,再將電信號通過模擬數(shù)字轉(zhuǎn)換器轉(zhuǎn)化為數(shù)字信號傳輸?shù)接嬎銠C(jī)中處理。當(dāng)掃描一副圖像的時候,光源照射到圖像上后反射光穿過透鏡會聚到掃描模組上,由掃描模組把光信號轉(zhuǎn)換成模擬信號(即電壓,它與接受到的光的強(qiáng)度有關(guān))[1]再經(jīng)由模擬-數(shù)字轉(zhuǎn)換電路把模擬電壓轉(zhuǎn)換成數(shù)字信號,傳送到電腦。
依托清華大學(xué)汽車安全與節(jié)能國家重點(diǎn)實(shí)驗(yàn)室ESC功能測試平臺開發(fā)了基于LabVIEW視覺檢測系統(tǒng),旨在通過數(shù)字圖像處理方法自動定位并識別電子穩(wěn)定控制系統(tǒng)PCB版上雕刻的QR二維碼,為ESC功能檢測平臺提供一種快速、高效且低成本的信息識讀手段。本研究提出的系統(tǒng)實(shí)際應(yīng)用范圍并不局限于此,如文獻(xiàn)[2]中提出的基于車票識別的鐵路客運(yùn)站旅客引導(dǎo)系統(tǒng),本系統(tǒng)亦可完美切入,以車票二維碼為信息為載體,實(shí)現(xiàn)聯(lián)合識別,更好地為鐵路客運(yùn)系統(tǒng)服務(wù)。
典型的圖像識別系統(tǒng)主要由4個階段組成,包括圖像采集、圖像預(yù)處理、圖像定位與圖像識別。圖像采集卡將采集的圖像信息導(dǎo)入上位機(jī),設(shè)置相應(yīng)的條件判斷與循環(huán)執(zhí)行語句,利用LabVIEW中加載的IMAQ Vision視覺與運(yùn)動模塊循環(huán)加載圖像信息,加強(qiáng)系統(tǒng)的高效準(zhǔn)確運(yùn)行,再進(jìn)行后續(xù)的圖像預(yù)處理、圖像定位、特征提取與最終實(shí)現(xiàn)二維碼的識別。
數(shù)字圖像處理的第一步工作就是圖像預(yù)處理,主要包括圖像的灰度化,濾波以及二值化,以消除圖像中的無關(guān)信息為目的,保留系統(tǒng)所需的主要信息區(qū)域且增強(qiáng)重要信息的可檢測性,同時也最大限度地簡化了圖形數(shù)據(jù),從根本上改善特征提取、圖像分割、匹配和識別[3]的穩(wěn)定與精確。文獻(xiàn)[4]提出QR碼在圖像采集過程中會出現(xiàn)椒鹽噪聲,提出圖像先二值化再進(jìn)行基于濾波窗系數(shù)的中值濾波處理。文獻(xiàn)[5]提出了一種中值濾波與小波變換相結(jié)合的方法實(shí)現(xiàn)織物瑕點(diǎn)圖像預(yù)處理。圖形的定位與特征提取是圖像處理系統(tǒng)中非常重要的部分,直接關(guān)系到二維碼有效信息的讀取。Chen et al[6]提出了一種基于紋理和邊緣信息的圖像定位方法。劉海華等[7]與王相海等[8]提出了基于形態(tài)學(xué)處理的模糊聚類技術(shù)與小波圖像比率可分級編碼研究。Hontani et al[9]開發(fā)了一種方法,在不知道圖像位置和圖像大小的情況下提取出該圖形模板。以上文獻(xiàn)都是基于圖形尺度形狀進(jìn)行分析定位且該方法較為成熟。本系統(tǒng)采用LabVIEW中一些基本的圖像處理工具,以及濾波器模塊和形態(tài)學(xué)技術(shù)來定位圖形。最后使用LabVIEW內(nèi)置的Instrument Readers工具來識別二維碼的信息。系統(tǒng)工作流程如圖1所示。
圖1 系統(tǒng)工作流程
LabVIEW提供的IMAQ Vision視覺與運(yùn)動模塊是圖形化編程語言,程序設(shè)計中需要完成前面板人機(jī)交互界面,程序框圖算法設(shè)計以及各個模塊間的端口連接,保證系統(tǒng)正常運(yùn)行。
在LabVIEW程序面板中調(diào)用驅(qū)動攝像頭vi,選擇相應(yīng)串口連接,配置驅(qū)動文件。系統(tǒng)運(yùn)行前先進(jìn)行圖像采集卡初始化(img0),再進(jìn)行指令觸發(fā),采集圖形信息和實(shí)時顯示圖像,最后關(guān)閉圖像采集卡。在這一過程中由IMAQ Create.vi建立一組記憶空間作為緩存區(qū)來存儲外部取得的圖形影像。采集程序結(jié)構(gòu)由While循環(huán)組成,因此循環(huán)采集的圖形信號會被不斷輸入覆蓋到記憶空間內(nèi),構(gòu)成圖形的實(shí)時顯示(Image Out)[10]。圖像采集程序如圖2所示。
圖2 圖像采集程序
二維碼的實(shí)際雕刻面積在PCB整塊版面上不到1/20,然而攝像頭拍攝會將整塊PCB版面以及PCB版面以外的信息全掃描到計算機(jī),此時需要圖像預(yù)處理來消除圖片中絕大多數(shù)無用信號,只保留系統(tǒng)需采集的有效信息,即二維碼區(qū)域。預(yù)處理在此過程中起到2個作用:(1)去除無用信息,保存有效信號并增強(qiáng)有效信息,提高系統(tǒng)的檢測性與可靠性;(2)最大限度簡化圖形數(shù)據(jù),提高系統(tǒng)運(yùn)行效率與識別速度。
2.2.1 圖像濾波
攝像頭傳感器在采集圖像信息時把光線作為輸入/輸出信號,在這一過程中無可避免會產(chǎn)生干擾因數(shù),如噪聲、曝光程度等。這些干擾因數(shù)將導(dǎo)致圖像信息夾雜粗糙像素,通常所說的噪點(diǎn)就是指這些粗糙的像素。根據(jù)文獻(xiàn)[3]提出在二維碼圖像采集的過程中通常會產(chǎn)生典型的椒鹽噪聲,因此采集圖像后需要進(jìn)行濾波處理,從而提高圖像精度。通常針對椒鹽噪聲的濾除有中值濾波與領(lǐng)域?yàn)V波2種方法。比較如下:
(1)均值濾波器是一種最常用的線性低通平滑濾波器,可抑制圖像中的加性噪聲,但同時也使圖像變得模糊。
圖3 中值濾波
(2)中值濾波器是一種最常用的非線性平滑濾波器,可消除圖像中孤立的噪聲點(diǎn),又可產(chǎn)生較少的模糊。
一般情況下中值濾波的處理效果要比鄰域均值處理的低通濾波效果要好,主要技術(shù)特點(diǎn)是中值濾波后能保留圖像中的輪廓清晰不變。因此,本系統(tǒng)圖像中的椒鹽噪聲濾除采用中值濾波。利用LabVIEW中的Matlab script節(jié)點(diǎn)調(diào)用Matlab進(jìn)行中值濾波。中值濾波設(shè)計如圖3所示。
在Matlab中中值濾波medfilt2函數(shù)為單通道濾波,系統(tǒng)采集的彩色圖像為三通道。因此在調(diào)用Matlab進(jìn)行濾波前還需先將圖片進(jìn)行灰度化處理I=rgb2gray(G)。在測試程序中給原圖加入了10%的椒鹽噪聲,分別用均值濾波器與中值濾波器處理以后效果對比如圖4所示。顯然從對比圖中可以看出經(jīng)過中值濾波后的圖形更為清晰。
圖4 濾波效果對比
2.2.2 二值化二維碼信息像素
二值化是比灰度化更進(jìn)一步的圖像處理技術(shù),灰度化是通過處理將彩色圖像中的RGB 3個色素分量的值都相等,在256(0~255)個調(diào)色板中選擇灰度級。而二值化是將圖像上像素點(diǎn)灰度值設(shè)置為0或者255,也就是將圖像完全變成了黑白色調(diào)。因?yàn)槎S碼圖像本身就是由一系列黑白的小方格組成,分別代表了二進(jìn)制的0和1(0代表白色,1代表黑色)。二維碼在二值化時會將二維碼圖像變成只有黑白色的條碼,然后根據(jù)解析公式轉(zhuǎn)化為二進(jìn)制信息。這就極大地節(jié)約了存儲空間,并減少了后期的運(yùn)算量。
實(shí)現(xiàn)過程:在LabVIEW中調(diào)用IMAQ ImageToArray VI函數(shù),功能是把濾波后圖形中的所有像素的點(diǎn)轉(zhuǎn)化為二維數(shù)組。將該數(shù)組輸入一個雙層FOR循環(huán),循環(huán)次數(shù)由數(shù)組大小決定,在FOR循環(huán)設(shè)定一個閾值,大于該閾值的點(diǎn)輸出255,小于該閾值的點(diǎn)輸出0。這樣就可以生成一個新的二維數(shù)組,且數(shù)組中元素只為0或255。最后再調(diào)用IMAQ ArrayToImage VI函數(shù)即可將二位數(shù)組轉(zhuǎn)化為二值化圖像。該部分的設(shè)計難點(diǎn)在于閾值的選取,通常在圖像二值化閾值選取中常用的方法有:直方圖雙峰法、P參數(shù)法、最大類間方差法、最大熵閾值法、迭代法(也叫最佳閾值法)。
20世紀(jì)60年代中期,Prewitt等提出直方圖雙峰法,其實(shí)質(zhì)是一種典型的全局單閾值分割方法,當(dāng)圖像簡單且所需信息在圖像中十分突出與背景呈明顯分別時,灰度化后的直方圖會出現(xiàn)雙峰分布,選擇雙峰之間的谷底對應(yīng)的灰度值作為閾值即可實(shí)現(xiàn)2個區(qū)域分割。當(dāng)圖像復(fù)雜,目標(biāo)信息與背景圖案分布零散時,則會出現(xiàn)多個波峰或雙峰之間波谷較寬闊且平坦,很難確定閾值。本系統(tǒng)所需采集信息是雕刻在PCB板上的二維碼,符合后一種情況:目標(biāo)信息與背景圖像分布零散。
P參數(shù)法常用于所需目標(biāo)區(qū)域在整個圖像中所占比例已知,且采集圖像分辨率不變的情況。本系統(tǒng)滿足P參數(shù)法的使用要求,具體步驟如下:
(1)求出圖像直方圖分布P(t),t=0,1,…,255。
最大間類法、最大熵閾值法與最佳閾值法應(yīng)用也十分廣泛,在不同情況的圖像處理中都具有各自的獨(dú)特的地位,但應(yīng)用于本系統(tǒng)中最大的缺點(diǎn)是計算量大,拖延了識別速率,因此最終選取P參數(shù)法作為閾值選取方案。
圖5 灰度化到二值化
圖5為原始灰度圖通過P參數(shù)法求取閾值再二值化的圖形,可以看出二值化后,圖形中重要細(xì)節(jié)明顯增強(qiáng),從根本上改善了視覺質(zhì)量,提高了圖像清晰度。
圖6 系統(tǒng)實(shí)現(xiàn)
在整張圖中對二維碼區(qū)域的定位是最重要的一環(huán)。采用基于形態(tài)學(xué)的ROI定位法,在NI Vision視覺模塊中,調(diào)用IMAQ Construct ROI創(chuàng)建圖像顯示與相應(yīng)工具,選擇ROI工具。ROI的內(nèi)容代表是一簇數(shù)據(jù)。包括一個整數(shù)數(shù)組和一個簇組成的數(shù)組。整數(shù)數(shù)組內(nèi)有4個元素,在前面板上框出二維碼的4條邊坐標(biāo),而每一個簇數(shù)組都是由輪廓類型、ROI類型以及圖形坐標(biāo)點(diǎn)組成[11],即用各種圖形框出在整個圖片中需要處理和定位的區(qū)域,稱為感興趣區(qū)域ROI。二維碼所在區(qū)域即為感興趣區(qū)域,經(jīng)過圖像預(yù)處理后,二維碼圖像的梯度,顏色與紋理更為明顯。采用TransformROI VI函數(shù)即可自動坐標(biāo)定位,從而完成通過ROI定位方式找到目標(biāo)圖像中的二維碼。圖6為最終的系統(tǒng)實(shí)現(xiàn)。
目前已經(jīng)使用130個圖像樣本來測試該系統(tǒng),圖像樣本經(jīng)過電腦硬盤導(dǎo)入系統(tǒng)。所用圖像都是640×480像素。其中有50個二維碼區(qū)域干凈完整,照明條件好,測試成功率可達(dá)100%。其余80個圖像樣本都存在不同程度瑕疵,包括光照強(qiáng)度過高導(dǎo)致反光與光照強(qiáng)度過低導(dǎo)致圖形陰暗,二維碼局部破損或被異物遮擋等。經(jīng)過一系列預(yù)處理與圖形增強(qiáng)后,總體識別成功率達(dá)到94%,且平均速率38 ms/板,優(yōu)于大多數(shù)現(xiàn)有系統(tǒng)。
通過將攝像頭、圖像采集卡、LabVIEW軟件與NI Vision機(jī)器視覺檢測技術(shù)相結(jié)合,研制出工業(yè)級高精度的二維碼識別系統(tǒng),同時對軟件中的視覺與運(yùn)動模塊進(jìn)行了深層次的研究,分析對比了圖像預(yù)處理部分與定位識別部分各種方法之間的優(yōu)缺點(diǎn),采用以中值濾波,二值化圖像為基準(zhǔn)的圖像預(yù)處理,以ROI定位法確定二維碼的特征提取,并進(jìn)行最終的二維碼信息識別。通過測試,系統(tǒng)掃描條碼準(zhǔn)確率高,識別速度快,證明了系統(tǒng)中算法的優(yōu)越性,且成本低廉,利用普通攝像頭即可完成專業(yè)掃碼設(shè)備功能。在工業(yè)應(yīng)用與社會生活中都具有較高的應(yīng)用價值與推廣意義。