《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于FPGA的二維碼圖像旋轉(zhuǎn)系統(tǒng)
基于FPGA的二維碼圖像旋轉(zhuǎn)系統(tǒng)
來源:電子技術(shù)應(yīng)用2012年第7期
陳 怡,張 萌
電子科技大學(xué) 電子薄膜與集成器件國家重點實驗室,四川 成都610054
摘要: 闡述了在圖像預(yù)處理階段將二維碼圖像旋轉(zhuǎn)至端正的必要性。設(shè)計了一種求取QR二維碼圖像旋轉(zhuǎn)角度的算法以及一種可將二維碼圖像旋轉(zhuǎn)任意角度的算法。求取旋轉(zhuǎn)角度算法簡捷有效,能以較低的硬件代價實現(xiàn)。圖像旋轉(zhuǎn)算法利用了CORDIC算法以及雙線性插值算法,采用高速流水線架構(gòu)在FPGA上實現(xiàn)。整個設(shè)計在Altera公司的DE2平臺下進(jìn)行了驗證。實驗結(jié)果表明,這兩種算法結(jié)合使用可以快速有效地將帶有一定歪斜角度的二維碼圖像旋轉(zhuǎn)端正,速度可以達(dá)到90.9 MHz,旋轉(zhuǎn)后的圖像細(xì)節(jié)清晰,能有效提高二維碼的識別率。
中圖分類號: TP391
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)07-0012-02
2-D barcode image rotation system based on FPGA
Chen Yi,Zhang Meng
State key Laboratory of Electronic Thin Films and Integrated Devices, University of Electronic Science and Technology of China,Chengdu 610054,China
Abstract: Image rotation is a necessity for 2-D barcode identification. This paper presents a novel VLSI structure for image rotation which can calculate the tilt angle of 2-D barcode image and rotate image to the horizontal way. The circuit to calculate the tilt angel of 2-D barcode is simple and effective and can be implemented with low hardware complexity. Image rotation algorithm takes use of improved CORDIC algorithm and Bi-linear interpolation and is implemented by high-speed pipelined architecture. The proposed architecture is implemented on the Altera Stratix IV FPGA. The whole design is validated in Altera's DE2 workbench. Experimental results show that the proposed architecture can rotate 2-D barcode images with arbitrary tilt angles to the horizontal way at 90.9MHz. Moreover, it can keep image details clear thus improving 2-D barcode identification rate.
Key words : image rotation;FPGA;2-D barcode;CORDIC

    近年來,物聯(lián)網(wǎng)技術(shù)高速發(fā)展,已成為各國的發(fā)展戰(zhàn)略,受到高度重視。在物聯(lián)網(wǎng)的應(yīng)用和實現(xiàn)過程中,條碼技術(shù)(可分為一維條碼和二維條碼)是信息識別領(lǐng)域最為重要和關(guān)鍵的技術(shù)之一。如今二維條碼技術(shù)已經(jīng)在物流、通信和工業(yè)領(lǐng)域中得到了廣泛應(yīng)用[1]。

    因圖像采集環(huán)境復(fù)雜多變,采集到的二維碼必須進(jìn)行圖像處理才能達(dá)到理想的識別率。二維碼圖像預(yù)處理包括灰度化、濾波去噪、二值化、圖像旋轉(zhuǎn)和圖像去光照等步驟。由于通過攝像頭采集到的圖像或多或少都會有一定的歪斜,所以將圖像旋轉(zhuǎn)端正對二維碼圖像識別來說是必不可少的[2-3]。
    本文基于CORDIC算法,設(shè)計了一種高速流水線的圖像旋轉(zhuǎn)算法。算法只包含加法和移位操作,在FPGA上的驗證結(jié)果表明,本設(shè)計的電路精度高,速度快,可以適用于實時二維碼圖像識別。
1 二維碼圖像采集和顯示
    在本系統(tǒng)中,圖像采集采用OV7620攝像頭。OV7620是一種CMOS圖像傳感器,具有軟件可編程性,可以通過SCCB總線協(xié)議進(jìn)行其工作模式的配置,被廣泛應(yīng)用在網(wǎng)絡(luò)攝像頭、攝像手機(jī)等產(chǎn)品中。首先基于SCCB協(xié)議的寄存器配置電路對OV7620進(jìn)行初始化,然后設(shè)計了攝像頭圖像采集程序,通過SRAM控制器將采集到的圖像存入SRAM中,并在LCD上實時顯示出來。攝像頭采集與顯示框圖如圖1所示。

2 圖像旋轉(zhuǎn)角度的獲取
    由于受采集環(huán)境、攝像頭和圖像采集者等多種因素的影響,采集到的二維碼圖像一般都會有一定的歪斜。要將二維碼圖像旋轉(zhuǎn)端正,首先需要知道二維碼圖像歪斜的角度。QR碼圖像在左上角、左下角和右上角各有一個位置探測圖形,每個位置探測圖形可以看作是由3個重疊且同心的正方形組成,它們分別為7×7個深色模塊、5×5個淺色模塊和3×3個深色模塊。如圖2所示,位置探測圖形的模塊寬度比為1:1:3:1:1。符號中其他地方遇到類似圖形的可能性極小,因此可以通過掃描整個二維碼圖像找出3個位置探測圖形,根據(jù)3個位置探測圖形的相對位置判斷出圖像的歪斜角度。

    式(3)為CORDIC算法的基本旋轉(zhuǎn)公式??梢钥闯?,CORDIC算法是由一系列簡單的移位和加法操作組成的。它實際上是一種逐次逼近的坐標(biāo)旋轉(zhuǎn)方法,每次旋轉(zhuǎn)都使累加的旋轉(zhuǎn)角度之和與目標(biāo)旋轉(zhuǎn)角更接近。迭代次數(shù)n越大,旋轉(zhuǎn)的角度就與真實的角度越接近。在實際應(yīng)用中,受硬件資源限制,不可能迭代很多次。實際上,對于n次迭代,CORDIC算法的旋轉(zhuǎn)精度為arctan2-(n-1)。當(dāng)n=8時,旋轉(zhuǎn)精度可達(dá)0.447 6°,滿足實際應(yīng)用的需要[4]。
 

 


    由于計算過程中包含小數(shù),所以在硬件結(jié)構(gòu)中將原始數(shù)據(jù)左移8位進(jìn)行擴(kuò)張,在CORDIC單元最后將計算得到的數(shù)據(jù)的低8位提取出來作為小數(shù)部分即可。
5 實驗結(jié)果分析
    本實驗中設(shè)計了攝像頭采集程序以及液晶驅(qū)動程序??梢酝ㄟ^攝像頭實時采集圖像;將采集到的圖像通過灰度化、中值濾波和二值化處理后,存入SRAM中;隨后電路開始讀取SRAM中的圖像并求出歪斜角度,通過圖像旋轉(zhuǎn)電路將圖像旋轉(zhuǎn)端正。整個設(shè)計全部采用Verilog HDL語言編寫。采用Synplify Pro、Quartus II 9.1和Modelsim 6.5SE仿真和實現(xiàn)了整個設(shè)計,并在DE2開發(fā)板上對本設(shè)計進(jìn)行了驗證。
    通過實驗結(jié)果可知,電路最大工作頻率可以達(dá)到90.9 MHz;整個系統(tǒng)消耗了1 289個組合邏輯單元和483個寄存器單元;求得一個旋轉(zhuǎn)過后的像素值需要6個時鐘周期,因此本二維碼圖像旋轉(zhuǎn)系統(tǒng)處理640×480像素的圖像的幀率為49 f/s,該速度完全可以滿足實際要求。上述驗證結(jié)果表明,本設(shè)計的二維碼圖像旋轉(zhuǎn)系統(tǒng)具有速度快、復(fù)雜度低的特點。
參考文獻(xiàn)
[1] GHOSH I,MAJUMDAR B.Design of an application specificVLSI chip for image rotation[C].Calcutta:Proceedings of the Seventh International Conference on VLSI Design,
1994:275-278.
[2] SUCHITRA S,LAM S K,SRIKANTHAN T.Novel schemes  for high-throughput image rotation[C].Singapore:Conference  Record of the Thirty-Eighth Asilomar Conference on Signals, Systems and Computers,2004,2:1884-1888.
[3] Jiang Xiaogang,Zhou Jianyang,Shi Jianghong,et al.FPGA implementation of image rotation using modified compensated CORDIC[C].6th International Conference on ASIC,2005:752-756.
[4] 李杰明,鄭學(xué)仁.基于CORDIC算法的數(shù)字圖像旋轉(zhuǎn)實現(xiàn)[J].電子技術(shù)應(yīng)用,2009,35(6):72-74.

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