孫洪濤,李炎,李望榮
(1.歌爾股份有限公司,山東濰坊,261006;2.濰坊歌爾電子有限公司,山東濰坊,261021)
隨著QR(Quick Response)碼新興技術的不斷發(fā)展,其本身具有儲存量大、保密性高、追蹤性高、成本便宜等特性,使得在手機支付、身份識別、物流追蹤等領域得到了廣泛的應用[1]。
針對精密件QR 碼的定位與識別技術已經(jīng)被大量研究和開發(fā)。其中,對于二維碼的成像失真現(xiàn)象問題,劉宏偉[2]提出了一種基于Hough 變換的校正算法,最終實現(xiàn)了對QR碼的定位,但缺陷在于,該算法無法實現(xiàn)對二維碼在曲面環(huán)境下的變形處理。甘嵐[3]等人提出了一種基于亞像素邊緣檢測的QR 碼識別算法,該算法解決了QR 碼因邊緣模糊導致的識別率下降的問題。李軍[4]采用掃描邊界點來確定畸變控制點的方法,實現(xiàn)了對QR 碼的曲面變形校正,能夠顯著提高識別率??紤]到生產(chǎn)車間的組裝實際環(huán)境和使用成本,基于圖像處理方式,需要結合具體場景進行定制算法開發(fā)。
結合以上研究,本文基于USB 攝像頭硬件平臺,提出一種針對生產(chǎn)車間精密件的視頻數(shù)據(jù)、低圖像質(zhì)量的二維碼的識別優(yōu)化算法,并進行開發(fā)實現(xiàn)與測試。
結合現(xiàn)階段生產(chǎn)車間的采集設備硬件條件和QR 碼應用條件,提出了一種QR 碼圖像預處理的算法。本算法的處理流程如圖1 所示:(1)通過對二維碼圖像進行灰度預處理,統(tǒng)一各類型攝像頭的圖像輸入格式;(2)通過ROI 標定,選擇二維碼所在區(qū)域,使后續(xù)分析處理時重點關注該區(qū)域,提升圖像處理流程的整體效率;(3)通過去噪解決攝像頭分辨率過低以及圖片放大后引入的噪點,提升解碼率;(4)自適應二值化:通過二值化算法突出二維碼有效信息,提升解碼率,并通過設計自適應策略來提升圖像處理速度;(5)解碼部分采用第三方工具,輸出文本格式的ID。
圖1 算法流程圖
2.1.1 灰度處理
彩色攝像相機錄入的彩色的二維碼圖像包含R(紅色)、G(綠色)、B(藍色)三個分量,其中每個分量都有256個取值,即0 ≤R ≤255,0 ≤G ≤255,0 ≤B ≤255,灰度化則是將每一個像素點劃定為0~255 范圍中的一個確定的灰度值,由于二維碼本身有效信息只有黑白兩種色塊,所以通過這樣的操作并不會減少后續(xù)處理精度,并可以減少后期算法的運算量?;叶扔嬎愎絎 為:
另一部分USB 攝像頭設備可以設置在拍攝時采用灰度模式從而直接獲得灰度圖像,如此灰度化操作便可以由硬件完成,減少了軟件處理圖像的環(huán)節(jié)。
2.1.2 ROI 標定
感興趣區(qū)域(ROI)是從圖像中選擇一個圖像區(qū)域,該區(qū)域內(nèi)的數(shù)據(jù)是后續(xù)分析處理時重點關注的部分,對于部分固定位置的掃碼場景,ROI 定位尤其重要。
由于在實際生產(chǎn)車間中測試工裝及各類型硬件的位置相對固定,所以每次二維碼出現(xiàn)的位置在圖像中所占區(qū)域也相對固定,故一次選取ROI 區(qū)域后即可保存設定,后續(xù)圖像自動使用此參數(shù),通過ROI 定位來初步定位目標圖像中的QR二維碼,綠線即為認為標定的二維碼區(qū)域,如圖2所示。
圖2 定位目標圖像中的QR 二維碼
經(jīng)測試,合理地設置ROI 選區(qū),可以在測試中使圖像處理的速度提升4%左右,對提升算法整體效率具有一定的作用。
2.1.3 圖像去噪
在得到灰度圖像之后,對于低分辨率攝像頭,有部分噪聲滿足泊松分布的鹽粒噪聲[5],尤其是在成像質(zhì)量不高或二維碼本身比較小的情況下,此類噪音對于最終解碼性能的具有一定的影響[6],這便需要對圖像進行去噪處理。
LabView 支持的IMAQVision 工具包中提供了多種濾波器,其中包括高斯濾波器、低通濾波器以及中值濾波器等方法[7],經(jīng)過實際測試,在上述濾波方法中,中值濾波效果最為顯著,可以有效降低干擾噪聲,并且保護原始信號,得到明顯的平滑效果,故采用中值濾波。
中值濾波是一種較為常見的非線性處理方法,一般會采用圖像中像素點及周圍臨近的像素點,并把像素值進行排列,取中值像素值作為當前像素點的數(shù)值。該方法運算簡單,易于實現(xiàn),可消除圖像中孤立的噪聲點,又可產(chǎn)生較少的模糊。在處理相機采樣導致的噪聲時,一般情況下中值濾波的處理效果要比鄰域均值處理的低通濾波效果要好。以640×480 的低分辨率USB 攝像頭為例,經(jīng)測試,在都不使用后置算法的前提下,濾波去噪可以改善后續(xù)解碼環(huán)節(jié),提升2%左右的精準度。
由于二維碼圖像是由一系列的黑白碼塊組成,故利用黑色實線以及黑白切換的輔助線或定位塊來定位,實現(xiàn)二維碼信息圖像在灰度級上兩極分化,從而突出二維碼圖像信息,過濾其他灰度圖形對定位處理帶來的干擾。
在LabView 中調(diào)用IMAQImage2ArrayVI 函數(shù)把濾波后圖形中的所有像素的點轉(zhuǎn)化為二維數(shù)組,在循環(huán)中設定一個閾值,大于該閾值的點輸出255,小于該閾值的點輸出0,最后通過IMAQArray2ImageVI 函數(shù)即可將二位數(shù)組轉(zhuǎn)化為二值化圖像。
2.2.1 處理模式
算法的性能瓶頸就發(fā)生在本“二值化”環(huán)節(jié),所以為了提升算法處理速度,在本環(huán)節(jié)設計了兩種處理模式:“普通模式”和“光照修正模式”[8]。對于成像良好的圖像采取“普通模式”進行處理,對于成像較差無法正常識別的圖像采取“光照修正模式”進行處理,“光照修正模式”引入了局部閾值方法,在亮度較高的區(qū)域,考慮使用較大的閾值進行分割,而在亮度較小的區(qū)域,考慮使用較小的閾值進行分割,以便實現(xiàn)對一幅圖像中不同亮度區(qū)域進行有效的二值化操作。同時,通過一定的策略來自動的調(diào)整內(nèi)部參數(shù),自動確定二值化閾值[9]。
2.2.2 原二值化算法的問題
LabView 中NI Vision 模塊中的兩種局部閾值法都有一些缺點,導致其不太適合直接應用于產(chǎn)線環(huán)境:
(1)一種是使用最大類間方差法的背景糾正法,背景糾正法先通過像素與鄰域內(nèi)的灰度均值做減法運算,來消除光照不均對圖像的影響,然后再使用最大類見方差法計算局部閾值。它的缺點是在圖像和背景灰度差異明顯時會丟失圖像細節(jié),容易導致處理過后的二維碼邊緣難以識別。
(2)另一種是Niblack 二值化算法,基本思想是對每一個像素點都計算其鄰域內(nèi)的均值m(x,y)和方差s(x,y),隨后每個像素計算公式如下:
其中k 為修正系數(shù),最終以T(x,y)的值作為閾值來二值化圖像。Niblack 算法雖然能夠?qū)崿F(xiàn)圖像的二值化,但是如果選取的區(qū)域均為背景點時,該算法會將灰度值較高的點當做是目標點,導致偽噪聲的引入,同時由于每個像素都要計算鄰域的均值和方差,所以Niblack 法的計算量很大,只適合用作單張照片的二值化處理,無法應用于視頻環(huán)境。
2.2.3 基于比例系數(shù)的混合閾值法
本文通過參考最大類間方差法和只計算像素鄰域均值的局部閾值法,提出了基于比例系數(shù)的混合閾值法。設最大類間方差法得到的整體閾值為t1,局部閾值法的閾值為t2,鄰域內(nèi)的綜合閾值為T,比例參數(shù)為scale,則T 可以表示為:
其中,scale 取值范圍是從0 到1 的數(shù),通過調(diào)節(jié)scale 來獲取合適的閾值。當scale 取0.4 時,二值化效果如圖3 所示,可以看出二值化后,圖形中重要細節(jié)明顯增強,從根本上改善了視覺質(zhì)量,二維碼信息幾乎沒有細節(jié)丟失,并且算法的計算量得到了控制,可以支持20 幀每秒的視頻檢測速度。
圖3 二值化效果圖
2.2.4 自適應策略
自適應策略表現(xiàn)為兩點:(1)算法將在默認情況下采取“普通模式”進行二值化處理,只有在普通模式處理二維碼無解析結果時,切換為“光照修正”模式繼續(xù)進行處理。(2)在算法切換為光照修正模式后,可以自動調(diào)節(jié)scale 參數(shù),來應對不同光照不均程度的圖片。
為了測試出最適合解決產(chǎn)線環(huán)境所產(chǎn)生的干擾的scale值,本部分做了以下工程化可視化的操作:首先對scale 的合理區(qū)間進行初步的統(tǒng)計,方法是在算法內(nèi)將scale 值設置為開放接口,可于界面上實時調(diào)節(jié),用于查看不同scale 值對于圖像解碼率的影響。經(jīng)測試不同的scale 值對應著這200 張照片不同的平均解碼率,scale 在小于等于0.2 時解碼率較低,而在0.8 以上解碼率也會有一定程度的降低,如表所示,所以根據(jù)此結果認定scale 區(qū)間設置為0.2~0.8 之間比較合適車間環(huán)境。
表1
在測試數(shù)據(jù)獲取方面,數(shù)據(jù)來源自640×480 分辨率的USB 攝像頭生產(chǎn)車間實拍照片。測試數(shù)據(jù)獲取過程不使用算法處理,將無法直接解碼的圖像列為受光照不均干擾影響較大的圖片,記為“光照不均數(shù)據(jù)集”,當極端數(shù)據(jù)集的數(shù)量達到200 張后,統(tǒng)計當前總圖像數(shù)為42022 張,記為“常規(guī)數(shù)據(jù)集”,其中成像良好的圖像數(shù)量占41822 張。
本測試將分為兩部分進行驗證,(1)對光照不均數(shù)據(jù)集進行單獨測試,檢測算法對于處理干擾的有效性和效率;(2)對常規(guī)數(shù)據(jù)集進行測試,檢驗算法對于掃碼模塊正常運行時精準度的實際提升率。不同閾值算法對于解碼效果的對比,本算法中的自適應處理機制,提升了算法整體效率,可達到99.91%,符合處理幀數(shù)20 幀左右每秒的設計要求。
表2
通過對比使用USB 攝像頭掃碼的系統(tǒng)和傳統(tǒng)采用掃碼槍進行掃碼的系統(tǒng),來評價本系統(tǒng)的誤檢率,實際測試結果如圖4 所示。
圖4 系統(tǒng)測試誤檢率
在測試批次小于等于16 萬次時,測試系統(tǒng)可正常運行,測試批次大于等于17 萬次時,本系統(tǒng)的誤檢率超出業(yè)務規(guī)定要求,但已滿足系統(tǒng)硬件在業(yè)務上要求10 萬批次內(nèi)正常運行測試誤檢率在0.1%以內(nèi)的要求。為了避免誤差的積累,系統(tǒng)均會在10 萬測試批次后進行檢修維護??傮w來講,基于USB 攝像頭掃碼的本系統(tǒng),固然在硬件價格上低于公司傳統(tǒng)使用掃碼槍掃碼的系統(tǒng),但也帶來了一定程度的測試誤檢率的提升,不過仍符合業(yè)務標準,系統(tǒng)具有可用性。
由于在生產(chǎn)環(huán)境中存在外界因素的干擾,本文采用基于比例系數(shù)的混合閾值法+自適應處理機制方式,得到較高的QR 識別率。通過與掃碼槍識別性能對比,減少了識別成本,具有良好的穩(wěn)健性,為工程應用提供了新的算法方案。但由于自適應二值化部分對于不同精密件的適配度并不理想,因此在今后的研究中,需要進一步豐富和完善算法模型。