基于FPGA的二維碼圖像旋轉(zhuǎn)系統(tǒng)
摘 要: 闡述了在圖像預(yù)處理階段將二維碼圖像旋轉(zhuǎn)至端正的必要性。設(shè)計(jì)了一種求取QR二維碼圖像旋轉(zhuǎn)角度的算法以及一種可將二維碼圖像旋轉(zhuǎn)任意角度的算法。求取旋轉(zhuǎn)角度算法簡(jiǎn)捷有效,能以較低的硬件代價(jià)實(shí)現(xiàn)。圖像旋轉(zhuǎn)算法利用了CORDIC算法以及雙線性插值算法,采用高速流水線架構(gòu)在FPGA上實(shí)現(xiàn)。整個(gè)設(shè)計(jì)在Altera公司的DE2平臺(tái)下進(jìn)行了驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,這兩種算法結(jié)合使用可以快速有效地將帶有一定歪斜角度的二維碼圖像旋轉(zhuǎn)端正,速度可以達(dá)到90.9 MHz,旋轉(zhuǎn)后的圖像細(xì)節(jié)清晰,能有效提高二維碼的識(shí)別率。
關(guān)鍵詞: 圖像旋轉(zhuǎn);FPGA;二維碼;CORDIC
近年來(lái),物聯(lián)網(wǎng)技術(shù)高速發(fā)展,已成為各國(guó)的發(fā)展戰(zhàn)略,受到高度重視。在物聯(lián)網(wǎng)的應(yīng)用和實(shí)現(xiàn)過(guò)程中,條碼技術(shù)(可分為一維條碼和二維條碼)是信息識(shí)別領(lǐng)域最為重要和關(guān)鍵的技術(shù)之一。如今二維條碼技術(shù)已經(jīng)在物流、通信和工業(yè)領(lǐng)域中得到了廣泛應(yīng)用[1]。
因圖像采集環(huán)境復(fù)雜多變,采集到的二維碼必須進(jìn)行圖像處理才能達(dá)到理想的識(shí)別率。二維碼圖像預(yù)處理包括灰度化、濾波去噪、二值化、圖像旋轉(zhuǎn)和圖像去光照等步驟。由于通過(guò)攝像頭采集到的圖像或多或少都會(huì)有一定的歪斜,所以將圖像旋轉(zhuǎn)端正對(duì)二維碼圖像識(shí)別來(lái)說(shuō)是必不可少的[2-3]。
本文基于CORDIC算法,設(shè)計(jì)了一種高速流水線的圖像旋轉(zhuǎn)算法。算法只包含加法和移位操作,在FPGA上的驗(yàn)證結(jié)果表明,本設(shè)計(jì)的電路精度高,速度快,可以適用于實(shí)時(shí)二維碼圖像識(shí)別。
1 二維碼圖像采集和顯示
在本系統(tǒng)中,圖像采集采用OV7620攝像頭。OV7620是一種CMOS圖像傳感器,具有軟件可編程性,可以通過(guò)SCCB總線協(xié)議進(jìn)行其工作模式的配置,被廣泛應(yīng)用在網(wǎng)絡(luò)攝像頭、攝像手機(jī)等產(chǎn)品中。首先基于SCCB協(xié)議的寄存器配置電路對(duì)OV7620進(jìn)行初始化,然后設(shè)計(jì)了攝像頭圖像采集程序,通過(guò)SRAM控制器將采集到的圖像存入SRAM中,并在LCD上實(shí)時(shí)顯示出來(lái)。攝像頭采集與顯示框圖如圖1所示。
2 圖像旋轉(zhuǎn)角度的獲取
由于受采集環(huán)境、攝像頭和圖像采集者等多種因素的影響,采集到的二維碼圖像一般都會(huì)有一定的歪斜。要將二維碼圖像旋轉(zhuǎn)端正,首先需要知道二維碼圖像歪斜的角度。QR碼圖像在左上角、左下角和右上角各有一個(gè)位置探測(cè)圖形,每個(gè)位置探測(cè)圖形可以看作是由3個(gè)重疊且同心的正方形組成,它們分別為7×7個(gè)深色模塊、5×5個(gè)淺色模塊和3×3個(gè)深色模塊。如圖2所示,位置探測(cè)圖形的模塊寬度比為1:1:3:1:1。符號(hào)中其他地方遇到類似圖形的可能性極小,因此可以通過(guò)掃描整個(gè)二維碼圖像找出3個(gè)位置探測(cè)圖形,根據(jù)3個(gè)位置探測(cè)圖形的相對(duì)位置判斷出圖像的歪斜角度。
式(3)為CORDIC算法的基本旋轉(zhuǎn)公式??梢钥闯觯珻ORDIC算法是由一系列簡(jiǎn)單的移位和加法操作組成的。它實(shí)際上是一種逐次逼近的坐標(biāo)旋轉(zhuǎn)方法,每次旋轉(zhuǎn)都使累加的旋轉(zhuǎn)角度之和與目標(biāo)旋轉(zhuǎn)角更接近。迭代次數(shù)n越大,旋轉(zhuǎn)的角度就與真實(shí)的角度越接近。在實(shí)際應(yīng)用中,受硬件資源限制,不可能迭代很多次。實(shí)際上,對(duì)于n次迭代,CORDIC算法的旋轉(zhuǎn)精度為arctan2-(n-1)。當(dāng)n=8時(shí),旋轉(zhuǎn)精度可達(dá)0.447 6°,滿足實(shí)際應(yīng)用的需要[4]。