FPGA图像识别与目标跟踪系统的实现

电子说

1.3w人已加入

描述

摘 要: 采用FPGA搭建图像处理系统,通过硬件算法实现图像的流水线及并行处理,实现了对具有特定颜色的物体的识别与跟踪。整个系统工作于像素频率,避免了算法的程序跑飞现象,使系统的可靠性大为提高,较好地保持了系统的低功耗特性,且优于DSP等串行处理器结合软件算法来实现的方法。

0 引言

近年基于FPGA硬件技术的视频图像处理系统被广泛地应用于视频智能监控、智能交通系统、视频采集和跟踪系统等[1]。作为机器视觉的一个重要研究方向,动态目标检测在视频智能监控、智能交通系统等方面得到了越来越多的应用[2]。通常图像识别与跟踪算法可以通过软件或者硬件来实现,但出于成本及开发难度的考虑,图像识别与跟踪一般由软件来实现。

在高速、高分辨率的情况下,传统软件的串行处理算法不足以应对大量的运算以及严格的时间要求,而采用硬件算法则可以实现并行或者流水的运算结构,大大地加快了运算速度[3]。目前可采用硬件实现的主要方案包括:DSP数字信号处理器、专用的集成图像处理芯片、FPGA和配合的相关电路。与其他方案相比,使用FPGA芯片丰富的硬件资源以及硬件可重构性,可大大提高图像识别跟踪系统的灵活性和通用性。

本设计通过使用可编程逻辑器件和硬件算法进行图像处理以实现对图像中特定目标进行识别和跟踪,并通过并行和流水线结构算法大大加快图像处理的速度,使得处理速率与输入时钟同步,真正地做到了无延时处理。

1 系统整体功能概述

本设计中采用Altera公司的EP2C8系列FPGA作为系统核心。图像从30万像素CMOS摄像头输入,FPGA负责图像处理以及接口管理,因摄像头与VGA接口的帧率不同,所以使用SDRAM作为帧缓冲。高速视频DAC芯片ADV7123负责把RGB图像数据转换成模拟量,以实现VGA输出。系统的框架图如图1所示,整个系统采用5 V直流供电,可以通过AS或者JTAG接口进行调试以及程序的下载。通过键盘可以切换系统的工作状态,改变图像的处理效果。

图像识别

2 硬件设计

要实现图像处理,首先要搭建好图像的采集系统,实现对输入图像正确的显示。由于系统处理的数据量大,速度快,对硬件电路的设计以及器件布局布线都有较高的要求。

2.1 FPGA外围电路设计

FPGA的外围电路包括时钟电路、复位电路、JTAG以及AS调试接口。本设计提供40 MHz和50 MHz时钟输入,50 MHz时钟可通过PLL倍频到100 MHz作为SDRAM时钟,也可分频到25 MHz作为CMOS摄像头时钟;而40 MHz作为后备时钟。JTAG接口可把配置数据下载到FPGA的内部RAM上,并可以通过SignalTap嵌入式逻辑分析仪对FPGA时序进行分析。AS接口则可以把配置数据之间固化到串行EPROM上,使FPGA上电后自动配置。

2.2 VGA接口设计

VGA接口芯片本质上是三路独立的高速DA,负责把数字化的图像数据转换成模拟量,以供显示器显示。为了阻抗匹配,模拟输出端需并联75 Ω电阻,DAC输出电流的最大值由偏置电位器决定,通过调节电位器,可以调节输出图像的最大亮度。

2.3 SDRAM外围电路设计

SRAM在存储器中速度最快、最稳定、操作最方便,但是由于其成本高,一般静态存储器只适用于存储容量小、存储速度要求高的场合。而SDRAM相对于SRAM制造成本低很多,随着技术的进步,SDRAM的速度越来越快,容量越来越大,稳定性也越来越好。在视频图像处理中SDRAM主要用作数据缓存,也就是FPGA对SDRAM操作最频繁的为读命令、写命令,在这两个命令中间插接激活、预充电、猝发终止、刷新等命令[4]。

SDRAM的主要作用是把经过处理后的图像数据以30 S/s的速率进行缓存,然后再以60 S/s的速率读取到VGA接口输出。采用16 bit字宽的SDRAM,读写时钟为100 MHz。SDRAM总带宽为100 MHz,其中摄像头写入占用12.5 MHz带宽,VGA读取占用25 MHz带宽,剩余的62.5 MHz带宽可留作图像处理使用。

3 算法设计

采用基于颜色的目标识别算法从背景中分割目标并动态标记,该算法实现简单,但对图像的质量要求较高。由于CMOS摄像头输出的图像噪点较多,尤其在光照不足的情况下,因此图像的预处理工作显得尤为重要[5]。系统总体算法结构如图2所示。

图像识别

预处理采用3×3的平滑滤波器对图像进行滤波。将处理后的图像与样品颜色进行比较,当图像与样品颜色的R、G、B分量的差值在一定范围内时,图像像素被标记为白色,否则标记为黑色,最终实现图像的二值化。包围盒对噪点非常敏感,在进行包围操作前,再对图像进行一次滤波处理。包围盒的作用是找出目标图像像素的最小坐标以及最大坐标,通过这两个坐标即可计算出目标的中心位置。

3.1 图像平滑滤波器设计

传统的软件算法在实现滤波操作时,需要先把输入和输出图像都缓冲到帧缓存中去,对于每个输出像素,算法获取输入图像对应窗口的像素并用滤波函数计算来取得输出值。由于每个输出都需要读取对应窗口的输入像素,势必占用极大的内存带宽,并且处理性能会受到内存带宽的限制。由于每个输入像素都会被多个窗口所利用,故可以先对输入图像进行缓存,以便在后续的窗口中被重新利用[6]。本设计使用流水处理的方法,实现滤波算法的加速计算,算法结构如图3所示。

图像识别

3.2 图像二值化

在第一个时钟的上升沿,摄像头输入的16 bit图像数据先分割为R、G、B三个分量,分别为5 bit、6 bit、 5 bit,分别与样本颜色的对应分量进行比较,通过减法器获得对应的误差绝对值,下一个时钟上升沿,这三个误差的绝对值再与对应的阈值进行比较,最后把比较结果进行与运算,作为最终输出。整个二值化操作的流水线延时为两个时钟周期。图4为其中一个处理通道的简化表示。本设计的二值化操作是在RGB色彩空间上进行的,只有在R、G、B三个通道上同时满足条件的像素点才会被设为最大值。

图像识别

3.3 图像腐蚀与膨胀

图像的腐蚀操作能够轻易地滤除面积小于窗口的孤立噪点而不影响图像本身的清晰度,经过腐蚀后目标图像会变小,需要膨胀操作来补偿腐蚀的影响,与平滑滤波器相类似。其实现方法如图5所示,经过行缓冲的像素数据依次进入窗口,通过对窗口内所有像素进行与运算来实现腐蚀,进行或运算来实现膨胀,其效果如图6所示。

图像识别

图像识别

3.4 包围盒设计

一组像素的包围盒是指能够包围所有像素的最小矩形,本设计在进行包围操作之前已经先对图像进行二值化分割,故只需要找出每一帧图像中目标像素横纵坐标的最大值和最小值即可实现对图像的包围操作。

4 结论

图像识别

经过处理后的图像有VGA接口输出,其效果如图7所示。由于采用了硬件算法实现的并行以及流水结构,大大加快了图像的处理速度,处理速度为900万像素每秒,流水线延时约为64 ?滋s。通过动态流水线结构,系统可以把每一步中间处理的结果直接输出到VGA,这样就可以独立地观察每一步处理的实际效果。通过对比发现,若关闭图像预处理,则图像中噪点明显增多,包围盒出现晃动,说明图像的预处理操作能够提高识别和跟踪的准确度和稳定性。

由于使用硬件算法,从本质上避免了传统软件算法的程序跑飞现象,使得系统的可靠性大为提高。为了提高处理速度,传统软件算法往往只能通过提高系统的时钟实现,然而过高的时钟频率意味着高功耗和干扰,而本设计通过流水线结构,使整个处理系统工作于像素频率,同时也保持了系统的低功耗特性。

参考文献

[1] 郑俊波,苏成悦,何榕礼,等.Android终端及FPGA控制的智能家居系统[J]。微型机与应用,2014,33(5):93-95.

[2] 向厚振,张志杰,王鹏.基于FPGA视频和图像处理系统的FIFO缓存技术[J].电视技术,2012,36(9):134-135.

[3] MARUYAMA T, YAMAGUCHI Y. How fast is an FPGA image processing[J]。 IEICE Technical Report, 2008,108(48):83-88.

[4] 田丰,邓建国,李巍,等.SDRAM控制器的设备与VHDL实现[J]。电子技术应用,2010,36(2):74-77.

[5] OLSON T, SANFORDCARL W. Real-time multistage IR image-based tracker[J]. The International Society for Optical Engineering,2011,58(112):56-57.

[6] 王德胜,康令州.基于FPGA的实时图像采集与预处理[J].电视技术,2011,35(3):38-41.

编辑:jq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分