Data Matrix二維碼圖像處理與應(yīng)用
二維碼是在平面二維方向上都記錄信息的符號(hào)。它充分利用了平面上的二維空間,大大提升了信息密度,使得在小面積上編碼大數(shù)據(jù)成為可能。其次由于它超強(qiáng)的糾錯(cuò)能力,即使大面積受損也能被準(zhǔn)確識(shí)別。現(xiàn)在二維碼應(yīng)用于工業(yè)自動(dòng)化、物流、郵政、醫(yī)療、商業(yè)、金融、交通運(yùn)輸、身份識(shí)別、政府管理、公共安全、海關(guān)及國防等領(lǐng)域。在我國,二維碼的應(yīng)用尚屬起步階段,應(yīng)用地區(qū)和領(lǐng)域也相當(dāng)有限。但是可以預(yù)見,二維碼以其獨(dú)特的優(yōu)勢必將像條形碼一樣在我國的各個(gè)領(lǐng)域被推廣和應(yīng)用。
本文通過Matrox公司的圖像采集卡Meteor-II Standard,利用MIL函數(shù)庫對氣動(dòng)打印在金屬零件上的Data Matrix二維碼進(jìn)行了實(shí)時(shí)捕捉識(shí)別,并對采集來的Data Matrix圖像進(jìn)行具體的圖像處理,命名其達(dá)到被識(shí)別的要求。最后,通過實(shí)驗(yàn)討論提高識(shí)別率的辦法。
1 Data Matrix概述
二維碼有多種類型,本文只討論矩陣式Data Matrix。
Data Matrix最大特點(diǎn)就是“小”,能在25mm2面積上編碼30個(gè)數(shù)字,因此被廣泛用于標(biāo)示集成電路、藥品等小件物品。另外在制造業(yè)的流水線生產(chǎn)過程中,打印生成Data Matrix也較容易。
如圖1所示,Data Matrix符號(hào)看起來像一個(gè)由深淺兩種顏色組成的國際象棋棋盤,每一個(gè)相同大小的黑色或白色方格稱為一個(gè)數(shù)據(jù)單位。Data Matrix符號(hào)由許多這樣的數(shù)據(jù)單位組成。在尋邊區(qū)外層有寬度為一個(gè)數(shù)據(jù)單位的靜區(qū)。尋邊區(qū)是“棋盤”的邊界,只用于定位和定義數(shù)字單位的大小,而不含 有任何編碼信息。被尋邊區(qū)包圍的數(shù)據(jù)區(qū)包含著編碼信息。矩陣中的0、1就是Data Matrix的黑白兩色小方格,即數(shù)據(jù)單位。
Data Matrix采用了Reed-Solomon交織交插編碼,編碼時(shí)加入了糾錯(cuò)碼,使Data Matrix的糾錯(cuò)性能比較強(qiáng)。以一個(gè)5位的流水號(hào)“12345”為例,通過編碼規(guī)則得到Data Matrix的3位碼字和5位糾錯(cuò)碼,可糾錯(cuò)2位碼字,糾錯(cuò)率為2/8=25%。
2 用MIL識(shí)別Data Matrix碼
Meteor-II Standard是Matrox公司的一塊圖像采集卡,通過攝像頭采集外界圖像,然后實(shí)時(shí)地傳輸給主機(jī)內(nèi)存。MIL函數(shù)開發(fā)包是一個(gè)獨(dú)立于硬件的32位圖像處理函數(shù)庫,其中有大量基本的圖像處理函數(shù)。
2.1 基本過程
Data Matrix識(shí)別的基本過程如圖2所示。通過MIL提供的函數(shù)采集圖像,并將采集的圖像以數(shù)字化方式存儲(chǔ)在圖像緩沖區(qū)中;對圖像進(jìn)行增強(qiáng)處理,提高圖像的識(shí)別準(zhǔn)確率。實(shí)驗(yàn)中通過平滑濾波辦法,減少圖像噪聲,很好地解決了采集金屬零件的Data Matrrix碼時(shí),由于碼符號(hào)邊沿亮度過亮影響圖像分割問題;然后對圖像進(jìn)行直方圖均衡化,擴(kuò)大對比度的動(dòng)態(tài)范圍,解決由于光照或攝像頭的原因,造成采集的圖像偏暗,對比度不夠顯著,引起圖像中明暗模糊不清的問題。
由于采集后的圖像有很多無用背景,Data Matrix符號(hào)所在區(qū)域只占整個(gè)圖像很上的比重。采用遮罩的辦法,用一個(gè)固定位置的子緩沖區(qū)限制圖像處理區(qū)域,忽略區(qū)域外的圖像,實(shí)現(xiàn)Data Matrix的符號(hào)提取。最后用MIL函數(shù)直接譯碼,并將譯碼結(jié)果放在指定的字符串中,用顯示語句在屏幕上打印結(jié)果。
2.2 Data Matrix符號(hào)的膨賬
金屬零件上的Data Matrix碼是氣動(dòng)打印而成的成點(diǎn)陣式,與標(biāo)準(zhǔn)的Data Matrix符號(hào)不完全一樣,其點(diǎn)間空隙大。如對這種碼毫無處理地進(jìn)行識(shí)別,則識(shí)別率會(huì)很低。為了解決這個(gè)問題,采用數(shù)學(xué)形態(tài)學(xué)的膨脹算法。為了提高識(shí)別準(zhǔn)確度,可以將Data Matrix符號(hào)膨脹若干次,縮小數(shù)據(jù)單位之間的空隙。這樣,計(jì)算機(jī)在“尋找”Data Matrix的“L”型尋邊區(qū)時(shí)就容易準(zhǔn)確得多。
2.3 偽實(shí)時(shí)識(shí)別的實(shí)現(xiàn)
由于MIL本身不支持圖像的實(shí)時(shí)處理,所以要實(shí)現(xiàn)實(shí)時(shí)識(shí)別需要用一種叫做比緩沖的辦法實(shí)現(xiàn)偽實(shí)時(shí)的圖像處理,CPU每次處理的圖像其實(shí)是攝像頭采集的上一幀圖像。
雙緩沖區(qū)使一邊采集圖像一邊處理圖像成為可能,如圖3所示。攝像頭將圖像采集到圖像緩沖區(qū)1中等待處理,與此同時(shí)CPU利用這段時(shí)間處理圖像緩沖區(qū)2中(上一幀)的圖像,完畢后兩個(gè)緩沖區(qū)的職能交換;CPU處理緩沖區(qū)1中采集的前一時(shí)刻的圖像,而此時(shí)緩沖區(qū)2中的圖像已被處理完畢,可以接收攝像頭下一幀的采集圖像。如此往復(fù),兩個(gè)緩沖區(qū)互換,不間斷地運(yùn)動(dòng)便可實(shí)現(xiàn)偽實(shí)時(shí)處理。在處理環(huán)節(jié)上加Data Matrix識(shí)別功能,就能實(shí)現(xiàn)實(shí)時(shí)識(shí)別Data Matrix。采集圖像和處理圖像正好相差一幀,所以是“偽”實(shí)時(shí)的,但是假如計(jì)算機(jī)運(yùn)算速度足夠快,時(shí)間延遲的影響便可忽略。
這種辦法的優(yōu)點(diǎn)是既實(shí)現(xiàn)了實(shí)時(shí)性,又將采集和處理這兩項(xiàng)進(jìn)程分開,讓CPU和攝像頭分別獨(dú)立并行地處理,充分利用了空閑時(shí)間。
3 識(shí)別結(jié)果統(tǒng)計(jì)與分析
通過編程,實(shí)現(xiàn)了對金屬上的Data Matrix碼進(jìn)行識(shí)別,并統(tǒng)計(jì)了總的采集幀數(shù)(f)、幀率(f/s)、識(shí)別成功的總幀數(shù)、識(shí)別率等信息。實(shí)驗(yàn)證明在攝像頭焦距以及光源都相當(dāng)理想的情況下,識(shí)別率很高。
Data Matrix識(shí)別的成功率與很多因素有關(guān),首先是Data Matrix符號(hào)本身,打印在紙上與打印在金屬零件上的點(diǎn)陣式Data Matrix差異很大;其次是檢測時(shí)的運(yùn)動(dòng)失真,會(huì)影響識(shí)別成功率;再次是背景圖像的影響,Data Matrix符號(hào)與背景色反差越大,背景中干擾圖像越少,識(shí)別成功率越高;光源、符號(hào)的旋轉(zhuǎn)等都會(huì)對識(shí)別造成影響。
3.1 運(yùn)動(dòng)檢測的影響
Data Matrix檢測常用在流水線上,這時(shí)需要考慮攝像頭與被檢測零件相對運(yùn)動(dòng)對識(shí)別的影響。在實(shí)驗(yàn)中用固定零件、移動(dòng)攝像頭的辦法來模擬流水線中的運(yùn)動(dòng)檢測,記錄每次檢測時(shí)攝像頭的運(yùn)動(dòng)速度,以此找出零件上的Data Matrix能夠被識(shí)別的最大相對運(yùn)行速度。
現(xiàn)通過實(shí)驗(yàn)測得20組數(shù)據(jù),以6mm×6mm的Data Matrix為考慮對象,結(jié)果如表1所示。
上結(jié)果,在光照和攝像頭焦理想的情況下,最大識(shí)別的相對速度為2.00cm/s,比該速度再快可能會(huì)因運(yùn)動(dòng)失真導(dǎo)致Data Matrix無法識(shí)別。
3.2 干擾圖像的影響
在相同條件下,背景干擾少的圖像識(shí)別率較高,尤其當(dāng)北京具有與Data Matrix類似矩形狀圖形時(shí)。在光照較好的條件下,測試金屬零件上的Data Matrix識(shí)別率。在有背景干擾的情況和用子緩沖區(qū)屏蔽一些背景干擾的情況各測得10組數(shù)據(jù),分別如表2所示。
表1 待測Data Matrix與攝像頭的相對運(yùn)動(dòng)對識(shí)別的影響
可見,用于緩沖區(qū)屏蔽一些無用的背景圖像后,識(shí)別效果總體上要略好于未屏蔽。
3.3 光源的影響
光源對識(shí)別成功率的影響反映在圖像整體的明暗對比度上。對金屬零件上的Data Matrix而言,其更多的是影響符號(hào)的清晰程度。光源位置如果選取不得當(dāng),由于金屬的反光特性,金屬表面會(huì)形成一片亮度特別大的鏡面反射區(qū),給Data Matrix圖像造成強(qiáng)烈的干擾。
一種比較好的辦法是用側(cè)光的辦法。由于金屬零件上的Data Matrix碼是氣動(dòng)打印產(chǎn)生的,打印處會(huì)有高低起伏,這些區(qū)域的反光是溫反射,不同于其他區(qū)域的鏡面反射光,側(cè)光助于把點(diǎn)陣與金屬反光的背景分開,將攝像頭避開了金屬的鏡面反光。圖4對比了側(cè)光和反射光下的二維碼狀態(tài)。
3.4 識(shí)別程序的適應(yīng)性
識(shí)別程序的適應(yīng)性指適應(yīng)不同尺寸和打印類型Data Matrix的能力。本文中考慮的打印類型有金屬表面氣動(dòng)打印、金屬表面電動(dòng)針式打印和標(biāo)準(zhǔn)紙面激光打印三種。實(shí)驗(yàn)結(jié)果表明,程序?qū)鈩?dòng)式打印Data Matrix碼的識(shí)別能力普遍好于同樣是金屬材質(zhì)的電動(dòng)針式打印Data Matrix碼。不同尺寸的識(shí)別率基本相等。打印在紙上的標(biāo)準(zhǔn)Data Matrix由于圖形標(biāo)準(zhǔn)、顏色穩(wěn)定、分辨率高等因素?zé)o需作太多的圖像增強(qiáng)和膨脹就能夠被計(jì)算機(jī)識(shí)別,識(shí)別率非常高。