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