《电子技术应用》

基于FPGA的实时视频图像采集处理系统设计

2018年电子技术应用第2期
高俊岭,陈志飞,章佩佩
(安徽理工大学 电气与信息工程学院,安徽 淮南230001)
摘要: 针对目前数字图像采集处理技术的实时性、大容量、小型化等特点,设计了一种基于FPGA的实时视频图像采集处理电路系统。采用FPGA作为整个系统的控制和图像数据处理中心。DDR2 SDRAM为高速储存模块核心器件,CMOS 7670为视频图像采集器件。并通过Quratus II和Modelsim等软件对系统的边缘检测算法、控制过程、各个模块等进行硬件工程设计和仿真,实现了视频图像从采集、存储到处理、显示的整个过程。实验表明,视频图像采集处理的动态画面流畅、清晰、实时性好。
中图分类号: TN919.5
文献标识码: A
DOI:10.16157/j.issn.0258-7998.172946
中文引用格式: 高俊岭,陈志飞,章佩佩. 基于FPGA的实时视频图像采集处理系统设计[J].电子技术应用,2018,44(2):10-12,19.
英文引用格式: Gao Junling,Chen Zhifei,Zhang Peipei. Design of real time video image acquisition and processing system based on FPGA[J]. Application of Electronic Technique,2018,44(2):10-12,19.

Design of real time video image acquisition and processing system based on FPGA

Gao Junling,Chen Zhifei,Zhang Peipei
(School of Electrical and Information Engineering,An Hui University of Science and Technology,Huainan 236001,China)
Abstract: Based on characteristics of instantaneously, large capacity and miniaturization of digital image acquisition and processing technology, a real-time video image acquisition and processing circuit system was designed,FPGA was used as the center of controlling the whole system and the center of processing image data. With DDR2 SDRAM the core component of high speed storage module, and CMOS 7670 the video image acquisition device. Through the Quratus II and Modelsim software for edge detection algorithm and the control process, each module of the hardware design and simulation, the realization of the video images from the collection and storage to the treating and display, which shows smooth, clear and real-time.

0 引言

    随着社会的不断发展,视频图像采集处理技术在许多行业领域中扮演着非常重要的角色,如军事、安全监控、工业视觉等领域,而各行各业对于视频图像采集和处理技术的要求也越来越高。高速、实时性是主要发展趋势之一。目前,视频图像采集与处理技术的发展主要分为两类:一是基于PC在相关特定的PCIe采集板卡的基础上,通过软件对视频图像进行处理;二是利用相关的集成硬件如DSP、MCU、FPGA等对视频图像进行采集处理[1]。相对来讲后者的处理效果不如前者,但实时性好、体积小、方便使用,更适合于工业的需求。

    FPGA现场可编程逻辑门列,采用并行运算模式,且工作频率较高,可对大量数据进行实时操作与处理,在通信领域、图像处理等方面上优势明显[2]。因此,本设计选用FPGA作为系统的控制和数据处理中心。

1 系统总体概述

    基于FPGA的视频采集处理系统可分为:视频采集模块、图像存储模块、数据处理模块和图像显示模块。工作过程为:首先,FPGA通过IIC总线协议对摄像头进行初始化配置,摄像头对焦工作拍摄采集图像,然后,采集的视频数据通过FIFO缓存器不断写入到DDR2 SDRAM中存储,再经过FIFO缓存器读出视频数据,接着,选择性对读出的视频图像数据进行处理,最后在VGA上显示视频图像。系统的总体框图如图1所示。

wdz3-t1.gif

2 中央控制单元

2.1 FPGA

    从FPGA硬件开发的角度考虑,利用EDA开发软件和硬件描述语言Verilog编程,对FPGA芯片进行开发,得到其工程要求的硬件功能。对比传统的硬件设计开发,减少了器件的浪费和多次焊接的工作量,设计过程也更加灵活、方便、高效。

    另外,FPGA要实现对每个模块的控制和处理,除并行数据处理优点外,自身必须拥有较多I/O口,丰富的逻辑单元等。鉴于此,选用了Alter公司研发的Cyclone IV系列的EP4CE617C8。此款FPGA拥有179个I/O接口,62 792个逻辑单元,392个乘法器,且功耗低。

2.2 视频图像采集模块

    CMOS OV7670图像传感器,其体积小,工作电压小,640×380像素,可选用自带的降噪、数模转换、分频等功能,是较好的视频图像采集选择。FPGA通过IIC总线协议与CMOS摄像头进行初始化配置。IIC总线写入前,CMOS摄像头的SCLK和SDAT引脚必须带上拉电阻。IIC总线写入时,首先写入设备地址,CMOS的初始地址为0x42,其次写入寄存器地址,最后写入数据。其IIC总线数据写入流程如图2所示。

wdz3-t2.gif

    IIC总线与CMOS的数据通信后,配置CMOS摄像头控制寄存器。时钟配置使用外部时钟即FPGA的工作时钟频率,目的是更好地控制CMOS摄像头。PLL寄存器配置零分频、使能内部线性稳压器LDO,内部电压工作稳定。配置的Verilog部分代码分别依次为:

    SET_OV7670+19 : LUT_DATA=16'h1180;

    SET_OV7670:5 : LUT_DATA=16'h6b00;

    其他相关控制寄存器中,配置了水平镜像、关闭彩条、视频格式RGB565等功能。保证其能在系统高速运行下采集到可靠度大、信息性强的视频图像数据。

2.3 系统存储模块

2.3.1 DDR2 SDRAM

    DDR2 SDRAM作为系统存储器,选用采用1 GB内存的DDR2 800系列 SDRAM作为存储器。DDR2工作时钟频率为200 MHz[2],具有读写速度快、集成度高、存储容量大以及成本低等特点。其操作速率是普通SDRAM的4倍,能够较好地达到系统实时性的要求。

    DDR2不仅能在系统时钟控制下工作,也可以独立的进行操作,如自刷新、自预充电净化等,其控制复杂[3]。因此,利用Quartus II自带的IP核构建DDR2 SDRAM控制器。同时也生成了Altera数字PHY。PHY是连接DDR2 内核控制器和外部DDR2器件的桥梁。PHY拥有四层接口,分别为带local_*类的用户逻辑接口、带mem_*类的外部DDR2芯片接口、带ctl_*和ctl_mem_*的PHY与IP控制器相互连接的接口。其功能框图如图3所示。

wdz3-t3.gif

    IP内核控制器的使用将DDR2复杂的控制操作转变成用户简单的读写时序操作,因此,DDR2存储模块可设计分为时钟、复位、初始化、控制、数据通道和仲裁等子模块。其中数据通道子模块建立了DDR2连接FIFO缓存器的通道。

2.3.2 FIFO

    FIFO是一种先入先出的存储器,没有地址定义,使用简单。FIFO只能顺序读写数据,确保了数据的安全性。由此,在多数情况下作为系统数据缓冲器使用[5]

    在Quartus II的内核中,建立异步FIFO的控制器。异步FIFO,即读写操作时钟信号不一致,有利于图像数据的缓冲。wrusedw信号控制着数据的读写请求。当wrusedwd等于FIFO深度值4时(为方便说明,仿真的FIFO深度为4),表示FIFO已空,Write_Req信号有效,只能写入数据。wrusedw为0,表示FIFO已满,Read_Req信号有效,只能读出数据。wrusedwd为其余值,则读、写数据请求都可执行。如图4所示。

wdz3-t4.gif

3 视频图像处理模块

    本文通过Sobel边缘检测对图像数据进行处理。边缘检测意义在于能够获取目标物体的边缘信息,有利于目标识别和追踪[6]。Sobel边缘检测算法具有计算量小、检测精度高等优点,也是最常用的图像边缘处理方法之一。

    Sobel边缘检测算法过程:首先,确立Sobel算子模板,它包含了横纵向两组3×3运算算子矩阵模板。如下式:

    wdz3-gs1.gif

    其次,利用水平和垂直方向的矩阵算子与原始图像像素点进行平面卷积分运算,算出X、Y两个方向上的一阶导数梯度值[7],如下式:

     wdz3-gs2.gif

    然后,把计算出的X、Y方向梯度值做平方求和后再开方,得到中心点的梯度值。如下式:

    wdz3-gs3.gif

    最后,中心点梯度值与设定的阈值互相比较,大于阈值的为边缘点,输出为黑色,小于阈值的为普通点,输出为白色[8-9]

    Sobel边缘检测的实现包括缓冲模块、计算卷积模块和门级处理模块。其中,缓冲模块使用基于RAM的移位寄存器altshift_taps,卷积计算模块使用6个可编程乘加器aitmult_add和2个并行加法器parallel_add计算出水平和垂直的梯度值,再通过浮点平方根altfr_sqrt得到中心点值。门级处理模块即阈值的比较[10]。原理过程如图5所示。

wdz3-t5.gif

4 实验

    完成系统硬件设计后,保存工程文件。并绘制电路原理图和PCB图。最后,制作电路板。完成所有工作后,建立系统,进行实验。

    实验一:实时视频图像采集显示实验。首先,FPGA控制CMOS 7670采集图像;然后,FPGA对采集图像数据传输和存储;最后,通过VGA显示图像。其画面清晰、流畅。实验结果如图6所示。

wdz3-t6.gif

    实验二:Sobel边缘检测算法处理视频图像显示实验。在实验一的基础上,增加了对图像数据的Sobel边缘检测处理,再通过VGA进行显示。图像中物体轮廓提取明显,且实时性较好。实验结果如图7所示。

wdz3-t7.gif

5 结论

    实时视频图像采集与处理技术广泛用于监控、工业视觉等领域。本系统以FPGA核心,充分利用其高速、大数据处理能力和硬件编程设计等特点,结合相关器件,实现了对视频图像的采集、处理和显示。实验结果画面清晰、流畅,效果好。同时在此基础上,增加了对物体的边缘检测,在物体追踪和识别方面也具有一定的实用意义。

参考文献

[1] 田杰,玉广龙,乔中涛,等.基于FPGA高速视频图像实时采集与处理系统设计[J].电子器件,2016,39(3).

[2] 王诚,蔡海宁,吴继华.Alter FPGA/CPLD设计[M].北京:人民邮电出版社,2011.

[3] 李原.DDR/DRR2接口的FIFO设计[D].西安:西安电子科技大学,2009.

[4] 吴厚航.例说FPGA:可直接用于工程项目的第一手经验[M].北京:机械工业出版社,2016.

[5] 梅傲寒.基于FPGA的无线图像采集传输系统的设计与研究[D].合肥:安徽大学,2016.

[6] 丁继生.基于FPGA的数字图像处理算法研究及实现[D].合肥:合肥工业大学,2015.

[7] 罗琳.基于FPGA的快速图像处理算法的研究与实现[D].重庆:重庆交通大学,2015.

[8] 马苗,樊养余,谢松元,等.基于灰色系统理论的图像边缘检测新算法[J].中国图像图形学报,2003,10(10):1136-1139.

[9] 仝海峰.基于FPGA的视频图像边缘检测优化设计[D].淮南:安徽理工大学,2016.

[10] 张丽红,凌朝东.基于FPGA的Sobel边缘检测应用[J].电子技术应用,2011,37(8).

继续阅读>>