APP下载

基于FPGA的二维码图像旋转系统

2012-02-06怡,张

电子技术应用 2012年7期
关键词:流水线摄像头二维码

陈 怡,张 萌

(电子科技大学 电子薄膜与集成器件国家重点实验室,四川 成都 610054)

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

设(x,y)为将原图像旋转角度θ后的新坐标,(x′,y′)为原图像中的对应坐标,则(x,y)与(x′,y′)的对应关系为:

由式(2)只能计算出特定角度(arctan2-i)的旋转坐标。CORDIC算法的原理是任何角度都可以通过n个arctan2-i形式的微小角度相加来无限接近。可引入变量z表示每次旋转的方向,z的初始值为图像需要旋转的角度,则式(2)可以变为:

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

在式(3)中,每次迭代运算后都需要与ki进行一次乘法,n次迭代运算就需要进行n次乘法,这将十分消耗硬件资源。在实际操作中,一般都是在n次迭代过后再乘上,这是一个收敛函数,由此可见基本的旋转改变了矢量的模长,需要用k(n)进行校正。当n趋于无穷大时,k(n)趋近于一个固定值0.607 25。这种直接在流水线结构之后附加乘法器的实现方法使原本由移位器和加法器组成的整体结构变得不规则,同时乘法器占用很大资源且会降低整个流水线的吞吐率。因此,提出一种CORDIC模校正方法来避免在硬件中引入乘法器。

4 系统架构

整个系统包括求取角度单元、地址产生单元、数据准备单元、时钟分频单元、CORDIC单元、双线性插值单元和存储单元,系统框图如图3所示。求取角度单元对存储在RAM中的图像像素值进行扫描,通过设计的状态机求得图像歪斜的角度;地址产生单元将原图像中的地址依次传给CORDIC单元;CORDIC单元接收地址以及歪斜角度,通过13级流水线(8级CORDIC变换流水线和5级模校正流水线)求得旋转过后的新坐标的整数部分和小数部分;数据准备单元根据CORDIC单元求出的新坐标的整数部分计算出其最邻近的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 specific VLSI 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.

猜你喜欢

流水线摄像头二维码
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
二维码
小康二维码
流水线
让严肃的二维码呆萌起来
报废汽车拆解半自动流水线研究
二维码,别想一扫了之
奔驰360°摄像头系统介绍
流水线生产杀死艺术