摘 要: 介紹了一種基于SoPC的QR二維碼識別系統(tǒng),其目的在于為手持和嵌入式設(shè)備提供一種識別速度快、成本低、接口靈活的QR碼識讀方案。該系統(tǒng)包括圖像采集、圖像預(yù)處理、QR碼解碼及糾錯、外設(shè)接口等組成單元。圖像采集單元驅(qū)動CMOS攝像頭獲取QR碼圖像,圖像預(yù)處理單元將QR碼圖像進(jìn)行一系列預(yù)處理以方便解碼,QR碼解碼及糾錯單元實(shí)現(xiàn)對QR碼的糾錯與解碼。
關(guān)鍵詞: SoPC;QR二維碼;NIOS II;FPGA
隨著信息技術(shù)的發(fā)展,條碼技術(shù)作為一種在全球范圍內(nèi)廣泛使用的自動識別技術(shù),在交通運(yùn)輸、物流倉儲、商品銷售、生產(chǎn)自動化管理等領(lǐng)域發(fā)揮了巨大的作用,條碼技術(shù)的使用,極大地提高了數(shù)據(jù)采集和信息處理的速度,為現(xiàn)代社會的發(fā)展做出了重要貢獻(xiàn)[1-2]。
二維條碼是在一維條碼無法滿足實(shí)際應(yīng)用需求的前提下產(chǎn)生的,相比一維條碼,其具有信息容量大、支持多種字符、可加密、可糾錯等突出優(yōu)點(diǎn)。但由此產(chǎn)生的問題是二維條碼的識別比一維條碼復(fù)雜,識讀設(shè)備成本高、耗時長,限制了二維條碼的進(jìn)一步發(fā)展[3]。
本文選取二維條碼中使用最廣的QR(Quick Response)二維碼,在分析國內(nèi)外QR二維條碼識讀方案的基礎(chǔ)上,提出了一種基于SoPC的QR二維條碼識別系統(tǒng)設(shè)計(jì),能夠降低識讀設(shè)備成本,對QR二維條碼在國內(nèi)的推廣普及、便利人們的生活具有重要意義。
1 基于SoPC的QR二維碼識別系統(tǒng)設(shè)計(jì)
1.1 系統(tǒng)平臺設(shè)計(jì)
基于DE2開發(fā)板搭建的識別系統(tǒng)平臺如圖1所示。圖中虛線框?yàn)榛谟丫E2開發(fā)平臺定制的SoPC系統(tǒng),包括NIOS II處理器、圖像采集、圖像預(yù)處理、QR碼識別硬件加速、外設(shè)接口及存儲等組成單元[4]。圖像采集單元通過圖像采集模塊驅(qū)動CMOS攝像頭獲取QR碼圖像。圖像預(yù)處理單元根據(jù)攝像頭獲取的QR碼圖像進(jìn)行一系列預(yù)處理以方便解碼。QR碼識別硬件加速單元結(jié)合NIOS II處理器對處理后的QR圖像進(jìn)行解碼。外設(shè)接口單元主要包括按鍵及LCD顯示,存儲單元包括SRAM、SDRAM、Flash等存儲器及其控制接口[4]。
1.2 圖像采集與顯示
QR碼圖像由OV7670攝像頭獲取,有兩種顯示方式,一種是拍攝QR碼圖像時實(shí)時顯示拍攝畫面;另一種是解碼完成后,由NIOS II處理器驅(qū)動LCD顯示解碼結(jié)果。其結(jié)構(gòu)圖如圖2所示。
1.3 圖像預(yù)處理的FPGA實(shí)現(xiàn)
圖像采集單元獲得的為RGB彩色圖像,首先將其灰度化以方便處理,然后進(jìn)行中值濾波以濾除噪聲,再進(jìn)行二值化以分離背景,最后通過幾何校正消除拍照角度的影響,其處理流程如圖3所示[3]。
1.3.1 圖像的灰度化
圖像灰度化是將攝像頭獲取的RGB565數(shù)據(jù)提取亮度分量Y,F(xiàn)PGA實(shí)現(xiàn)方式如下:
(1)將RGB565數(shù)據(jù)轉(zhuǎn)變?yōu)镽GB888數(shù)據(jù);
(2)RGB888數(shù)據(jù)提取亮度分量Y:
Y=0.299R+0.587G+0.114B(1)
將式(1)兩邊系數(shù)分別乘以256,將系數(shù)取整后變形為:
256Y=(64+8+4)R+(128+16+4+2)G+(16+8+4+2)B
(2)
通過式(2)可以將小數(shù)乘法轉(zhuǎn)換為移位和加法,可方便地在FPGA中實(shí)現(xiàn)。
1.3.2 圖像的中值濾波
圖像中值濾波可以有效濾除攝像頭引入的噪聲,并能很好地保持圖像的邊沿[2]。在FPGA實(shí)現(xiàn)時,需要先產(chǎn)生濾波窗口,然后對窗口中的數(shù)據(jù)進(jìn)行快速排序,選取中值替換原來的灰度值。由FPGA實(shí)現(xiàn)的中值濾波框圖如圖4所示。由圖4可知,生成3×3濾波窗口后,可以進(jìn)行快速排序選取中值。
1.3.3 圖像的二值化
以某一灰度t為門限將圖像分割成2個區(qū)域:灰度小于等于t的像素區(qū)域A(目標(biāo)類)和灰度大于t的像素區(qū)域B(背景類)。大津法把兩類的類間方差作為判別準(zhǔn)則,認(rèn)為使得σ2值最大的t即為所求的最佳閾值(方差越大,說明構(gòu)成圖像的兩部分差別越大)。
其中,PA、PB表示A、B兩類出現(xiàn)的概率,?棕A、?棕B表示A、B兩類的灰度均值,?棕O表示總的灰度均值,σ2為類間方差。為方便在FPGA中進(jìn)行處理,對式(3)化簡如下:
ini為灰度值>t的所有像素點(diǎn)的累計(jì)灰度。因?yàn)镹是已知的,只要求得式(4)右邊式子中最大的t即為所求的最佳閾值。FPGA實(shí)現(xiàn)框圖如圖5所示。
其中,統(tǒng)計(jì)模塊1統(tǒng)計(jì)圖像總像素?cái)?shù)和總的累計(jì)灰度,統(tǒng)計(jì)模塊2統(tǒng)計(jì)各灰度值對應(yīng)的像素點(diǎn)數(shù),統(tǒng)計(jì)模塊3統(tǒng)計(jì)小于等于灰度值i的所有像素點(diǎn)數(shù),統(tǒng)計(jì)模塊4統(tǒng)計(jì)小于等于灰度值i的所有像素點(diǎn)的累計(jì)灰度。得到上述值后就可以送到計(jì)算模塊計(jì)算各灰度值對應(yīng)的類間方差,取類間方差最大的灰度值作為最佳閾值,對圖像進(jìn)行二值化。
1.3.4 圖像的幾何校正
由于攝像頭拍攝角度的原因,二維碼圖像一般都會有一定的偏轉(zhuǎn)角度,為方便解碼,通常先將二維碼進(jìn)行旋轉(zhuǎn)使其端正[3]。QR碼圖像在左上角、左下角和右上角各有一個位置探測圖形,每個位置探測圖形可以看作是由3個重疊的同心正方形組成的,其模塊寬度比為1:1:3:1:1,符號中其他地方遇到類似圖形的可能性極小,因此可以通過掃描整個二維碼圖像來找出3個位置探測圖形,根據(jù)3個位置探測圖形的相對位置判斷出圖像的偏轉(zhuǎn)角度θ,如圖6所示。
設(shè)(x,y)為原圖像旋轉(zhuǎn)角度后的新坐標(biāo),(x′,y′)為原圖像中的對應(yīng)坐標(biāo)。則(x,y)與(x′,y′)的對應(yīng)關(guān)系為[5]:
x′=cosθ(x+y×tanθ)
y′=cosθ(y-x×tanθ)(5)
由式(5),結(jié)合NIOS II處理器,就可以將圖像旋轉(zhuǎn)至端正,使其便于解碼。
1.4 QR二維碼解碼實(shí)現(xiàn)
圖7所示為QR碼符號版本7的結(jié)構(gòu)圖,每個QR碼符號由名義上的正方形模塊構(gòu)成,組成一個正方形陣列,由編碼區(qū)域和包括位置探測圖形、分隔符、定位圖形、校正圖形在內(nèi)的功能圖形組成。功能圖形不能用于數(shù)據(jù)編碼。符號的四周由空白區(qū)包圍。另外有格式信息區(qū)域、版本信息區(qū)域以及數(shù)據(jù)和糾錯碼字區(qū)域[5,2]。
根據(jù)QR二維碼圖像特點(diǎn),在NIOS II中進(jìn)行解碼的子程序的軟件流程圖如圖8所示。當(dāng)采集到QR碼圖像經(jīng)過圖像預(yù)處理后,得到的是端正的二值圖像,進(jìn)行以下操作:(1)掃描位置探測圖形以定位QR圖像;(2)確定校正圖形中點(diǎn),求取模塊寬度;(3)對圖像建立采樣網(wǎng)絡(luò)以獲取采樣數(shù)據(jù),從采樣數(shù)據(jù)中可以得到格式以及掩膜信息;(4)根據(jù)格式及掩膜信息從采樣數(shù)據(jù)中提取QR編碼數(shù)據(jù)并糾錯;(5)解碼數(shù)據(jù)得到最終信息[2,7]。
2 系統(tǒng)測試
系統(tǒng)搭建完成后,利用PsqrEdit_Zh軟件制作了一系列QR碼來測試系統(tǒng)的性能,圖9所示為其中一幅QR碼圖像的識別,可以看到其版本為2、糾錯等級為L、包含的信息為一張英文名片。本設(shè)計(jì)制作了不同版本、不同糾錯等級的QR碼30張,可以識別其中的23張,識別率為76.7%。分析識別不了的主要原因是所采用的攝像頭的分辨率只有320×240,當(dāng)QR碼模塊數(shù)較多時,該分辨率下不足以對QR碼圖像進(jìn)行正確采樣。這一問題可以通過更換性能更好的攝像頭解決。
實(shí)驗(yàn)證明本系統(tǒng)工作穩(wěn)定、識別速度快、識別率較高,并且具有集成度高、接口靈活、成本低等優(yōu)點(diǎn),可以很方便地用于手持設(shè)備和嵌入式設(shè)備中。該系統(tǒng)對QR二維條碼在國內(nèi)的推廣普及、便利人們的生活具有重要意義。
參考文獻(xiàn)
[1] 國家質(zhì)量技術(shù)監(jiān)督局.快速響應(yīng)矩陣碼[M].北京:中國標(biāo)準(zhǔn)出版社,2001.
[2] 中國物品編碼中心.二維條碼技術(shù)與應(yīng)用[M].北京:中國計(jì)量出版社,2007.
[3] 劉東,高兩全.QR碼圖像處理及識別算法研究[J].信息技術(shù),2004,28(1):61-63.
[4] 基于SoPC的二維條碼PDF417識別系統(tǒng)的設(shè)計(jì)[D].重慶:重慶大學(xué),2009.
[5] 陳怡,張萌.基于FPGA的二維碼圖像旋轉(zhuǎn)系統(tǒng)[J].電子技術(shù)應(yīng)用,2012,38(7):12-14.
[6] Altera.SoPC builder handbook[EB/OL].http://www.altera.com.cn/literature/lit-sop.jsp,2011-07.