FPGA图像采集处理系统
2016-10-12包文来
宋 宇,包文来
(长春工业大学 计算机科学与工程学院, 吉林 长春 130012)
FPGA图像采集处理系统
宋宇,包文来
(长春工业大学 计算机科学与工程学院, 吉林 长春130012)
FPGA通过配置CMOS摄像头获取图像信息,对得到的图像进行预处理,利用Sobel算子方法对图像进行边缘检测,并对处理结果通过外置显示模块进行实时显示。
图像采集;Sobel边缘检测;FPGA
0 引 言
视频图像采集处理系统在许多领域都有着广泛的应用,小到工业、农业,大到医疗、军事都发挥着举足轻重的作用。视频图像可以传递许多信息,如何准确实时地获取到有用的图像,并对图像进行处理分析至关重要。文中从手势识别技术角度出发,设计了一种基于FPGA的图像采集处理系统[1],对图像采集处理快速准确,并通过VGA进行实时显示。
1 系统总体设计
1.1系统结构图
本设计选用CycloneIV系列的EP4CE15E17C8NFPGA为核心处理器,使用QuartusⅡ 作为系统软件开发工具,并配合Verilog语言编程来实现各个模块的功能[2]。系统主要由图像采集、VGA显示、图像预处理、边缘检测等模块构成,系统总体框图如图1所示。
图1 系统总体框图
1.2系统工作流程
系统上电后,各部件由FPGA完成初始化及配置工作模式[3],通过摄像头采集图像,并将采集到的图像通过视频解码芯片传送给FPGA,FPGA收到信号后,将图像数据缓存到存储模块中,并将图像发送到处理模块,处理模块对接收到的图像进行预处理及边缘检测操作,最后将处理后的图像通过VGA显示模块实时显示。系统工作流程如图2所示。
图2 系统工作流程
2 系统模块设计
2.1图像采集模块
模块通过摄像头采集图像,摄像头采用OV7725CMOS传感器,采集到的图像格式为模拟视频信号,FPGA通过I2C总线配置视频解码芯片[4],将模拟视频信号转化为数字信号,格式为YUV4∶2∶2,供FPGA内部处理模块使用,文中采取的视频解码芯片为TVP5150。
TVP5150是一款低功耗、支持SECAM、NTSC、PAL等格式的高性能解码芯片,适用于便携、高性能的产品设计。I2C总线是串行两线式总线,分别为串行数据线和串行时钟线,器件被连接在这两条线之间,通过这两条线来传递信息,传输起始和停止条件由两条线之间的电平高低决定。当串行时钟线是高电平,且串行数据线由高电平向低电平转换时开始传送工作;当串行时钟线是高电平,且串行数据线从低电平向高电平转换时停止传送工作。数据传输时,串行数据线所接收的每个字节必须为8位,但可以接收任意数量的字节,首先传输的是数据的最高位。数据传输必须带响应,由主机产生相关的响应时钟脉冲,在传输过程中,如果从机当前处于忙碌状态,不能立刻完成传输,可以通过保持串行时钟线处于低电平,这时主机进入数据传输延迟状态,当从机可以进行传输时,释放串行时钟线,则开始数据传输。I2C总线的时序图如图3所示。
图3I2C总线的时序图
2.2SDRAM存储模块
由于系统采集速度快且数据量大,而处理速度远不及采集速度,所以需要完成系统相关数据存储工作,文中采用Hynix的32BitSDRAMHY57V283220T,共有4Banks*1M*32Bit的资源,完成在特定时间内对已经采集到但未经处理图像的缓存,并通过存储控制器为SDRAM提供满足时序要求的控制信号输入[5]。
2.3VGA显示模块
设计加入了VGA显示模块,通过此模块可以对系统处理后的视频图像进行实时显示。VGA显示器所能识别的信号为RGB格式,被处理后的视频图像格式为YUV4∶2∶2数字信号,本设计采用AVD7123视频编码芯片来实现图像格式的转化,ADV7123接收FPGA发送的数字图像信号以及时钟行场同步信号,并通过标准的VGA接口输出来实现与VGA显示器的通信。
3 图像处理的FPGA实现
3.1图像预处理
图像采集模块采集到的视频图像会掺杂许多噪声,对后续处理造成误导,预处理的作用就是采用快速中值滤波[6]的方法来去除图像噪声。
快速中值滤波是在中值滤波的基础上提出来的一种快速图像处理方法,通过对选取模板区域内各行各列的像素灰度值进行降序(或升序)排列,生成新的像素矩阵,然后分别找出新生成像素矩阵第一行的最小值,第二行的中间值,第三行的最大值,并把这3个数值组成新的序列,对新序列再次求取中间值,以此中间值替换原始图像模板区域内中心位置的像素灰度值,以此类推,文中选取3*3区域模板。
快速中值滤波包括两部分:一是3*3区域模板的生成,并获取区域内所有像素灰度数据;二是快速中值滤波算法的实现。
3.1.1模板生成及获取像素值
本设计选取2个FIFO存储器和9个移位寄存器J1~J9来实现3*3模板的生成及模板区域像素值的提取,如图4所示。
图4 模板生成原理图
每个移位寄存器存储一个像素值,每个FIFO存储器存储一行的像素数据,当第三行的数据采集完成后,将第三行数据和2个FIFO中的数据一起读出,保证三行数据的同步。
3.1.2中值滤波算法硬件实现
本设计通过7个三输入比较器来实现, 把7个比较器分为3组,比较过程如图5所示。
图5 中值滤波算法流程
对于提取的像素集{X11,X12,…,X33}来说,首先,用第一组3个比较器分别对像素点集的每行进行比较,完成对每行像素值的降序排列,然后再用第二组3个比较器分别对每行最大、最小及中间值组成序列进行比较,完成对每列像素值的降序排列,最后用一个比较器对第二组比较器B4的最小值、B5产生的中值及B6产生的最大值进行比较,比较出的中值即为区域模板内像素的中值。
3.2Sobel边缘检测
Sobel边缘检测算法[7-8]的实现是使用垂直和水平两个方向算子,该算子由两组3*3的矩阵构成,分别为横向及纵向,将之与图像作卷积运算,分别得出相应的梯度值分量,再利用梯度值公式求出近似梯度值大小,把计算结果与预先存储的阈值做对比,如果小于阈值,则结果是非边缘部分。对于原始图像A的3*3区域来说,首先求取方向梯度分量Gx和Gy:
(1)
(2)
然后求取图像中任意像素的梯度近似值大小:
(3)
最后通过比较求取的梯度值与预先存储阈值的大小来确定边缘检测结果,当梯度值小于阈值时,将原始图像灰度值置为0,反之则为255,以此类推。
4 实验结果
为了验证设计的合理性,通过QuartusⅡ软件进行综合仿真,实验结果分别如图6和图7所示。
图6原始图像和经中值滤波后的灰度图像
图7 原始图像和Sobel边缘检测后的图像
5 结 语
提出的设计方案是以FPGA为核心的图像采集处理系统,主要由图像采集、图像处理、显示模块等几部分模块组成,系统充分发挥了FPGA的灵活性和可移植性强等特点,提高了图像处理速度。实验证明,本系统可实现图像采集、处理及实时显示功能,对进一步研究手势识别、实时监控及视频图像跟踪技术打下了坚实基础。
[1]陈国柱,刘涛,李元宗.基于FPGA的图像采集与存储系统的设计[J].机械工程与自动化,2007(4):44-46.
[2]夏宇闻.Verilog数字系统设计教程[M].2版.北京:北京航空航天大学出版社,2010:20-300.
[3]吴厚航.深入浅出玩转FPGA[M].北京:北京航空航天大学出版社,2011:200-202.
[4]刘丽丽.基于FPGA的手势识别技术研究[D].长春:长春理工大学,2014.
[5]扬帆,杨晓慧,黄勇.基于FPGA和USB的图像传输平台[J].长春工业大学学报:自然科学版,2013,34(4):397-400.
[6]和妍.基于FPGA的图像采集处理系统的研究[D].郑州:河南理工大学,2010.
[7]郭龙,段哲民.FPGA的视颇实时边缘检测系统[J].电子设计工程,2014,22(3):173-185.
[8]袁春兰,熊宗龙,周雪花,等.基于Sobel算子的图像边缘检测研究[J].激光与红外,2009,39:85-87.
A FPGA based image acquisition and processing system
SONG Yu,BAO Wenlai
(School of Computer Science & Engineering, Changchun University of Technology, Changchun 130012, China)
WithFPGA,CMOScameraisconfiguredtoobtainimageswhicharepre-processedandthenedgedetectionisperformedbyusingSobeloperator.TheresultcanbedisplayedwithVGAmodule.
imageacquisition;Sobeledgedetection;FPGA.
2015-09-14
教育部“春晖计划”基金资助项目(Z2011139)
宋宇(1969-),男,汉族,吉林长春人,长春工业大学教授,硕士,主要从事嵌入式系统方向研究,E-mail:songyu@ccut.edu.cn.
10.15923/j.cnki.cn22-1382/t.2016.4.10
TP752.1
A
1674-1374(2016)04-0363-04