《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于FPGA的二维码图像旋转系统
基于FPGA的二维码图像旋转系统
来源:电子技术应用2012年第7期
陈 怡,张 萌
电子科技大学 电子薄膜与集成器件国家重点实验室,四川 成都610054
摘要: 阐述了在图像预处理阶段将二维码图像旋转至端正的必要性。设计了一种求取QR二维码图像旋转角度的算法以及一种可将二维码图像旋转任意角度的算法。求取旋转角度算法简捷有效,能以较低的硬件代价实现。图像旋转算法利用了CORDIC算法以及双线性插值算法,采用高速流水线架构在FPGA上实现。整个设计在Altera公司的DE2平台下进行了验证。实验结果表明,这两种算法结合使用可以快速有效地将带有一定歪斜角度的二维码图像旋转端正,速度可以达到90.9 MHz,旋转后的图像细节清晰,能有效提高二维码的识别率。
中图分类号: TP391
文献标识码: 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

    近年来,物联网技术高速发展,已成为各国的发展战略,受到高度重视。在物联网的应用和实现过程中,条码技术(可分为一维条码和二维条码)是信息识别领域最为重要和关键的技术之一。如今二维条码技术已经在物流、通信和工业领域中得到了广泛应用[1]。

    因图像采集环境复杂多变,采集到的二维码必须进行图像处理才能达到理想的识别率。二维码图像预处理包括灰度化、滤波去噪、二值化、图像旋转和图像去光照等步骤。由于通过摄像头采集到的图像或多或少都会有一定的歪斜,所以将图像旋转端正对二维码图像识别来说是必不可少的[2-3]。
    本文基于CORDIC算法,设计了一种高速流水线的图像旋转算法。算法只包含加法和移位操作,在FPGA上的验证结果表明,本设计的电路精度高,速度快,可以适用于实时二维码图像识别。
1 二维码图像采集和显示
    在本系统中,图像采集采用OV7620摄像头。OV7620是一种CMOS图像传感器,具有软件可编程性,可以通过SCCB总线协议进行其工作模式的配置,被广泛应用在网络摄像头、摄像手机等产品中。首先基于SCCB协议的寄存器配置电路对OV7620进行初始化,然后设计了摄像头图像采集程序,通过SRAM控制器将采集到的图像存入SRAM中,并在LCD上实时显示出来。摄像头采集与显示框图如图1所示。

2 图像旋转角度的获取
    由于受采集环境、摄像头和图像采集者等多种因素的影响,采集到的二维码图像一般都会有一定的歪斜。要将二维码图像旋转端正,首先需要知道二维码图像歪斜的角度。QR码图像在左上角、左下角和右上角各有一个位置探测图形,每个位置探测图形可以看作是由3个重叠且同心的正方形组成,它们分别为7×7个深色模块、5×5个浅色模块和3×3个深色模块。如图2所示,位置探测图形的模块宽度比为1:1:3:1:1。符号中其他地方遇到类似图形的可能性极小,因此可以通过扫描整个二维码图像找出3个位置探测图形,根据3个位置探测图形的相对位置判断出图像的歪斜角度。

    式(3)为CORDIC算法的基本旋转公式。可以看出,CORDIC算法是由一系列简单的移位和加法操作组成的。它实际上是一种逐次逼近的坐标旋转方法,每次旋转都使累加的旋转角度之和与目标旋转角更接近。迭代次数n越大,旋转的角度就与真实的角度越接近。在实际应用中,受硬件资源限制,不可能迭代很多次。实际上,对于n次迭代,CORDIC算法的旋转精度为arctan2-(n-1)。当n=8时,旋转精度可达0.447 6°,满足实际应用的需要[4]。
 

 


    由于计算过程中包含小数,所以在硬件结构中将原始数据左移8位进行扩张,在CORDIC单元最后将计算得到的数据的低8位提取出来作为小数部分即可。
5 实验结果分析
    本实验中设计了摄像头采集程序以及液晶驱动程序。可以通过摄像头实时采集图像;将采集到的图像通过灰度化、中值滤波和二值化处理后,存入SRAM中;随后电路开始读取SRAM中的图像并求出歪斜角度,通过图像旋转电路将图像旋转端正。整个设计全部采用Verilog HDL语言编写。采用Synplify Pro、Quartus II 9.1和Modelsim 6.5SE仿真和实现了整个设计,并在DE2开发板上对本设计进行了验证。
    通过实验结果可知,电路最大工作频率可以达到90.9 MHz;整个系统消耗了1 289个组合逻辑单元和483个寄存器单元;求得一个旋转过后的像素值需要6个时钟周期,因此本二维码图像旋转系统处理640×480像素的图像的帧率为49 f/s,该速度完全可以满足实际要求。上述验证结果表明,本设计的二维码图像旋转系统具有速度快、复杂度低的特点。
参考文献
[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] 李杰明,郑学仁.基于CORDIC算法的数字图像旋转实现[J].电子技术应用,2009,35(6):72-74.

此内容为AET网站原创,未经授权禁止转载。