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