嵌入式多目标跟踪(上)
1 设计概述
目标跟踪在视频监控领域有广泛的应用。跟踪目标的 选择可以分为自动检测与主动选择。自动检测能够检测出画 面中所有运动物体,再通过目标跟踪算法,对检测到的目标 进行跟踪处理。在市区繁忙路段,通过运动目标自动检测与 跟踪统计每日车流量。当画面中存在众多运动物体,而只需 要跟踪某些特定目标时,为减少干扰,主动选择目标后对特 定目标进行跟踪。在目标跟踪算法中,判断运动目标丢失状态是一个值 得研究的课题。本设计改进了经典的粒子滤波算法,通过设 置粒子权重门限与重采样粒子数目阈值,进行粒子权重比较 与重采样粒子个数比较,实现了运动目标跟踪与丢失状态判断。
在现实应用中,往往需要同时跟踪多个目标。本设计 提出了一种基于粒子滤波的嵌入式多目标跟踪硬件结构设 计,该结构跟踪性能优秀,具有实时性强、抗干扰、可复用 性强的特点。针对多个目标采用同一种跟踪算法,设计一种 可复用性强的跟踪算法能节省设计与开发的时间。因此,设 计并生成了可复用的粒子滤波目标跟踪IP核。本设计采用IP固核的形式。设计者不以开源形式复用
图1 嵌入式多目标跟踪系统
图2 FPGA资源消耗
图3 总体设计框图
开发的数字逻辑电路模块,而是将其封装起来,生成一个输入输出端口固定、功能正确的模块。该模块的具体数字电路 实现无法查看,只要在工程中添加该模块,并连接模块的输 入输出管脚,便可以实现IP核调用。本设计调用了自行设计 与开发的粒子滤波IP核。根据FPGA的并行运算机制,所有 目标能同时进行粒子滤波处理,实现多目标跟踪。实验结果 表明,设计与开发的粒子滤波IP核调用方便,不仅保护了设 计者的知识产权,且跟踪性能稳定。
本设计采用友晶科技的DE2-115开发板,其板载的Altera 公司Cyclone IV芯片资源丰富,满足视频处理的需要,片外 的SDRAM为图像缓存提供保障,并提供了与摄像头相连的 BNC接口,以及与显示器相连的VGA接口。
2 功能描述
嵌入式多目标跟踪系统如图1所示。CCD摄像头采集模 拟视频信号,DE2-115开发板对采集到的信号进行图像格式 转换与多个运动目标的检测、选择与跟踪,将处理过的视频 信号输出到VGA显示器上。
2.1 视频信号采集
FPGA对ADV7180进行IIC总线配置,ADV7180将CCD摄像头输入的PAL制式模拟视频信号转换成数字信号。数字视
频信号输入FPGA进行ITU656解码,将解码后的奇场与偶场 数据缓存在SDRAM中,通过SDRAM的读写控制,输出奇偶 场合并的整帧图像。再将其进行格式转换,输出符合VGA显 示要求的RGB信号,并构造VGA行同步与场同步控制信号。
2.2 运动目标自动检测
在边缘检测的基础上,通过帧间差分,锁定刚进入画 面的运动物体目标,为后面的跟踪提供物体的中心位置和轮 廓大小等基本信息。
2.3 运动目标选择
图4 运动目标检测框
图5 Sobel卷积因子
图6 腐蚀(膨胀)示意图
红外遥控器向DE2-115开发板上的IR接收器发送遥控扫码信号。FPGA解码扫描信号,控制每个目标选择框的上下左右移动、大小改变与跟踪状态的开始与结束。
2.4 多目标跟踪
同时跟踪多个目标,判断目标的跟踪与丢失状态,目 标丢失后再次找回。当目标在画面中运动时,多目标跟踪系 统能准确稳定地跟踪目标,屏幕显示Tracking字幕。当目标 从画面中离开,屏幕显示Lost字幕。当目标从画面中任意位 置再次出现时,系统找回运动目标,屏幕显示Tracking。
3 性能参数
3.1 系统参数: 目标个数:2个; 原始图像大小:640*480; 目标跟踪区域:640*480; 每个目标使用粒子个数:64个。
运动目标在采集到的视频图像640*480区域内移动时,多目标跟踪系统能准确定位目标。帧间差分算法中的图像数据缓存,与粒子滤波算法中粒子的直方图统计均需占用 FPG A的片内R AM。因此,在保证检测与跟踪效果的前提 下,系统可同时跟踪两个目标,每个目标使用64个粒子。在 FPGA片内RAM允许的情况下,利用FPGA的并行运算机制 与模块可复用性强的特点,可以增加目标个数与粒子个数。
3.2 FPGA资源使用情况如图2所示
4 设计结构
如图3所示,CCD摄像头输 入模拟信号, 通过I IC总线配置 的 A D V 7 1 8 0 做 模 数 转 换 , 数 据 经过ITU656解码存入SDR AM缓 存 , 再 经 过 格 式 转 换 成 R G B 图 像。对自动检测或者红外遥控器 手 动 选 择 的 目 标 进 行 粒 子 滤 波 算 法 处 理 后 , 将 跟 踪 结 果 送 入 ADV7123,经过数模转换后显示 在VGA显示器上。
5 设计方法
5.1 运动目标检测
图4为运动目标检测的框图。RGB图像转灰度图后进行 边缘检测,再做帧间差分,通过腐蚀和膨胀图像形态学处理 后,检测运动目标的位置和大小。
Sobel算法是一种常用的边缘检测算法。首先利用经典 的RGB转灰度值公式把图像转变成灰度图。图5是Sobel卷积 因子,Gx和Gy分别代表横向和纵向的3x3矩阵,与图像作平 面卷积后即可得出横向和纵向的灰度差分。在FPGA上,为 了提高运算效率,直接把两个差分值相加得到灰度梯度G。 当G大于阈值时,则认为该点是边缘点。
图像经过边缘检测后,再进行帧间差分。帧间差分是 一种常用的静态背景下运动目标的检测方法,通过比较相邻 两帧图像的场景变化得到运动目标。为了检测刚进入画面的 目标,并节省FPGA的片内存储资源,本设计仅在图像周边 区域内进行差分运算,且对检测到的运动像素点进行标记。
(未完待续)
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)
- 嵌入式系统实时性的问题(06-21)
- 嵌入式实时系统中的优先级反转问题(06-10)
- 嵌入式Linux系统中MMC卡驱动管理技术研究(06-10)
- FPGA的DSP性能揭秘(06-16)