《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于SoPC的QR二維碼識(shí)別系統(tǒng)設(shè)計(jì)
基于SoPC的QR二維碼識(shí)別系統(tǒng)設(shè)計(jì)
2014年微型機(jī)與應(yīng)用第10期
李婉婉,胡文龍,李 宏,雷 霞
寧波大學(xué) 信息科學(xué)與工程學(xué)院,浙江 寧波
摘要: 隨著信息技術(shù)的發(fā)展,條碼技術(shù)作為一種在全球范圍內(nèi)廣泛使用的自動(dòng)識(shí)別技術(shù),在交通運(yùn)輸、物流倉儲(chǔ)、商品銷售、生產(chǎn)自動(dòng)化管理等領(lǐng)域發(fā)揮了巨大的作用,條碼技術(shù)的使用,極大地提高了數(shù)據(jù)采集和信息處理的速度,為現(xiàn)代社會(huì)的發(fā)展做出了重要貢獻(xiàn)[1-2]。
關(guān)鍵詞: SoPC QR二維碼 NiosII FPGA
Abstract:
Key words :

  摘  要: 介紹了一種基于SoPCQR二維碼識(shí)別系統(tǒng),其目的在于為手持和嵌入式設(shè)備提供一種識(shí)別速度快、成本低、接口靈活的QR碼識(shí)讀方案。該系統(tǒng)包括圖像采集、圖像預(yù)處理、QR碼解碼及糾錯(cuò)、外設(shè)接口等組成單元。圖像采集單元驅(qū)動(dòng)CMOS攝像頭獲取QR碼圖像,圖像預(yù)處理單元將QR碼圖像進(jìn)行一系列預(yù)處理以方便解碼,QR碼解碼及糾錯(cuò)單元實(shí)現(xiàn)對(duì)QR碼的糾錯(cuò)與解碼。

  關(guān)鍵詞: SoPC;QR二維碼;NIOS II;FPGA

  隨著信息技術(shù)的發(fā)展,條碼技術(shù)作為一種在全球范圍內(nèi)廣泛使用的自動(dòng)識(shí)別技術(shù),在交通運(yùn)輸、物流倉儲(chǔ)、商品銷售、生產(chǎn)自動(dòng)化管理等領(lǐng)域發(fā)揮了巨大的作用,條碼技術(shù)的使用,極大地提高了數(shù)據(jù)采集和信息處理的速度,為現(xiàn)代社會(huì)的發(fā)展做出了重要貢獻(xiàn)[1-2]。

  二維條碼是在一維條碼無法滿足實(shí)際應(yīng)用需求的前提下產(chǎn)生的,相比一維條碼,其具有信息容量大、支持多種字符、可加密、可糾錯(cuò)等突出優(yōu)點(diǎn)。但由此產(chǎn)生的問題是二維條碼的識(shí)別比一維條碼復(fù)雜,識(shí)讀設(shè)備成本高、耗時(shí)長,限制了二維條碼的進(jìn)一步發(fā)展[3]。

  本文選取二維條碼中使用最廣的QR(Quick Response)二維碼,在分析國內(nèi)外QR二維條碼識(shí)讀方案的基礎(chǔ)上,提出了一種基于SoPC的QR二維條碼識(shí)別系統(tǒng)設(shè)計(jì),能夠降低識(shí)讀設(shè)備成本,對(duì)QR二維條碼在國內(nèi)的推廣普及、便利人們的生活具有重要意義。

  1 基于SoPC的QR二維碼識(shí)別系統(tǒng)設(shè)計(jì)

  1.1 系統(tǒng)平臺(tái)設(shè)計(jì)

  基于DE2開發(fā)板搭建的識(shí)別系統(tǒng)平臺(tái)如圖1所示。圖中虛線框?yàn)榛谟丫E2開發(fā)平臺(tái)定制的SoPC系統(tǒng),包括NIOS II處理器、圖像采集、圖像預(yù)處理、QR碼識(shí)別硬件加速、外設(shè)接口及存儲(chǔ)等組成單元[4]。圖像采集單元通過圖像采集模塊驅(qū)動(dòng)CMOS攝像頭獲取QR碼圖像。圖像預(yù)處理單元根據(jù)攝像頭獲取的QR碼圖像進(jìn)行一系列預(yù)處理以方便解碼。QR碼識(shí)別硬件加速單元結(jié)合NIOS II處理器對(duì)處理后的QR圖像進(jìn)行解碼。外設(shè)接口單元主要包括按鍵及LCD顯示,存儲(chǔ)單元包括SRAM、SDRAM、Flash等存儲(chǔ)器及其控制接口[4]。

008.jpg

  1.2 圖像采集與顯示

  QR碼圖像由OV7670攝像頭獲取,有兩種顯示方式,一種是拍攝QR碼圖像時(shí)實(shí)時(shí)顯示拍攝畫面;另一種是解碼完成后,由NIOS II處理器驅(qū)動(dòng)LCD顯示解碼結(jié)果。其結(jié)構(gòu)圖如圖2所示。

009.jpg

  1.3 圖像預(yù)處理的FPGA實(shí)現(xiàn)

  圖像采集單元獲得的為RGB彩色圖像,首先將其灰度化以方便處理,然后進(jìn)行中值濾波以濾除噪聲,再進(jìn)行二值化以分離背景,最后通過幾何校正消除拍照角度的影響,其處理流程如圖3所示[3]。

010.jpg

  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)時(shí),需要先產(chǎn)生濾波窗口,然后對(duì)窗口中的數(shù)據(jù)進(jìn)行快速排序,選取中值替換原來的灰度值。由FPGA實(shí)現(xiàn)的中值濾波框圖如圖4所示。由圖4可知,生成3×3濾波窗口后,可以進(jìn)行快速排序選取中值。

011.jpg

  1.3.3 圖像的二值化

  以某一灰度t為門限將圖像分割成2個(gè)區(qū)域:灰度小于等于t的像素區(qū)域A(目標(biāo)類)和灰度大于t的像素區(qū)域B(背景類)。大津法把兩類的類間方差作為判別準(zhǔn)則,認(rèn)為使得σ2值最大的t即為所求的最佳閾值(方差越大,說明構(gòu)成圖像的兩部分差別越大)。

  

33.png

  其中,PA、PB表示A、B兩類出現(xiàn)的概率,?棕A、?棕B表示A、B兩類的灰度均值,?棕O表示總的灰度均值,σ2為類間方差。為方便在FPGA中進(jìn)行處理,對(duì)式(3)化簡(jiǎn)如下:

433E_45}`F0IF4$8QP(NI}I.jpg

  ini為灰度值>t的所有像素點(diǎn)的累計(jì)灰度。因?yàn)镹是已知的,只要求得式(4)右邊式子中最大的t即為所求的最佳閾值。FPGA實(shí)現(xiàn)框圖如圖5所示。

012.jpg


  其中,統(tǒng)計(jì)模塊1統(tǒng)計(jì)圖像總像素?cái)?shù)和總的累計(jì)灰度,統(tǒng)計(jì)模塊2統(tǒng)計(jì)各灰度值對(duì)應(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ì)算各灰度值對(duì)應(yīng)的類間方差,取類間方差最大的灰度值作為最佳閾值,對(duì)圖像進(jìn)行二值化。

  1.3.4 圖像的幾何校正

  由于攝像頭拍攝角度的原因,二維碼圖像一般都會(huì)有一定的偏轉(zhuǎn)角度,為方便解碼,通常先將二維碼進(jìn)行旋轉(zhuǎn)使其端正[3]。QR碼圖像在左上角、左下角和右上角各有一個(gè)位置探測(cè)圖形,每個(gè)位置探測(cè)圖形可以看作是由3個(gè)重疊的同心正方形組成的,其模塊寬度比為1:1:3:1:1,符號(hào)中其他地方遇到類似圖形的可能性極小,因此可以通過掃描整個(gè)二維碼圖像來找出3個(gè)位置探測(cè)圖形,根據(jù)3個(gè)位置探測(cè)圖形的相對(duì)位置判斷出圖像的偏轉(zhuǎn)角度θ,如圖6所示。

013.jpg

  設(shè)(x,y)為原圖像旋轉(zhuǎn)角度后的新坐標(biāo),(x′,y′)為原圖像中的對(duì)應(yīng)坐標(biāo)。則(x,y)與(x′,y′)的對(duì)應(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)

014.jpg

  圖7所示為QR碼符號(hào)版本7的結(jié)構(gòu)圖,每個(gè)QR碼符號(hào)由名義上的正方形模塊構(gòu)成,組成一個(gè)正方形陣列,由編碼區(qū)域和包括位置探測(cè)圖形、分隔符、定位圖形、校正圖形在內(nèi)的功能圖形組成。功能圖形不能用于數(shù)據(jù)編碼。符號(hào)的四周由空白區(qū)包圍。另外有格式信息區(qū)域、版本信息區(qū)域以及數(shù)據(jù)和糾錯(cuò)碼字區(qū)域[5,2]。

015.jpg

  根據(jù)QR二維碼圖像特點(diǎn),在NIOS II中進(jìn)行解碼的子程序的軟件流程圖如圖8所示。當(dāng)采集到QR碼圖像經(jīng)過圖像預(yù)處理后,得到的是端正的二值圖像,進(jìn)行以下操作:(1)掃描位置探測(cè)圖形以定位QR圖像;(2)確定校正圖形中點(diǎn),求取模塊寬度;(3)對(duì)圖像建立采樣網(wǎng)絡(luò)以獲取采樣數(shù)據(jù),從采樣數(shù)據(jù)中可以得到格式以及掩膜信息;(4)根據(jù)格式及掩膜信息從采樣數(shù)據(jù)中提取QR編碼數(shù)據(jù)并糾錯(cuò);(5)解碼數(shù)據(jù)得到最終信息[2,7]。

016.jpg

  2 系統(tǒng)測(cè)試

  系統(tǒng)搭建完成后,利用PsqrEdit_Zh軟件制作了一系列QR碼來測(cè)試系統(tǒng)的性能,圖9所示為其中一幅QR碼圖像的識(shí)別,可以看到其版本為2、糾錯(cuò)等級(jí)為L、包含的信息為一張英文名片。本設(shè)計(jì)制作了不同版本、不同糾錯(cuò)等級(jí)的QR碼30張,可以識(shí)別其中的23張,識(shí)別率為76.7%。分析識(shí)別不了的主要原因是所采用的攝像頭的分辨率只有320×240,當(dāng)QR碼模塊數(shù)較多時(shí),該分辨率下不足以對(duì)QR碼圖像進(jìn)行正確采樣。這一問題可以通過更換性能更好的攝像頭解決。

  實(shí)驗(yàn)證明本系統(tǒng)工作穩(wěn)定、識(shí)別速度快、識(shí)別率較高,并且具有集成度高、接口靈活、成本低等優(yōu)點(diǎn),可以很方便地用于手持設(shè)備和嵌入式設(shè)備中。該系統(tǒng)對(duì)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碼圖像處理及識(shí)別算法研究[J].信息技術(shù),2004,28(1):61-63.

  [4] 基于SoPC的二維條碼PDF417識(shí)別系統(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.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。