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