QT+Opencv粒子滤波算法实现视频目标跟踪——(二)滤波算法分析及测试
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
QT+Opencv 粒子滤波算法实现视频目标跟踪——
(二)滤波算法分析及测试
在前一个博客中已经对机器视觉及粒子滤波算法的相关原理进行了介绍,在基于410c 平台实现粒子滤波算法的前期,我们在上位机上应用QT 和Opencv 完成了粒子滤波算法的实现和测试,具体的实现及测试过程如下:
一、QT 及Opencv 上位机环境的搭建
在进行测试的时候我们主要借助于QT 来实现粒子滤波目标跟踪的界面交互设计,同时通过Opencv 提供的各种算法函数来实现相关的图像处理,最后结合粒子滤波算法来实现整个视频目标的跟踪,其中QT 和Opencv 环境的搭建如下:
1)QT 环境的搭建
本文上位机使用的是32 位的win7 平台,具体的安装过程可以参考cnblogs/sung/archive/2013/10/09/3359063.html 中提供的方法。
2)OpenCv 的安装
Opencv 使用的是2.4 版本的,在QT 环境下的Opencv 具体的安装可以参考cnblogs/liu-jun/archive/2012/09/26/Jacky_Liu.html。
二、基于C++语言的粒子滤波算法的实现
完成相关的环境搭建后,就可以开始进行粒子滤波算法的编程实现了,在前文目标跟踪算法的选择中已经对粒子滤波算法的基本原理进行了介绍,本节将在前文的基础上,对核心代码的具体实现进行简单的介绍,实现的完整代码可以到百度云盘进行下载,链接为pan.baidu/s/1bp3dyLT。
上述代码的架构设计如下图1 所示。
图1 粒子滤波视频目标跟踪算法实现架构
整个系统由基于DirectShow 的视频采集和预处理模块、用户目标选择模块、目标特征模型构建模块、视频运动模型构建模块、自适应粒子滤波器、
目标坐标生成模块、轨迹流处理模块和DirectShow 显示接口模块组成。
其中DirectShow 视频采集和预处理模块主要是实现对摄像头的RGB 图像的采集,将采集到的RGB 图像进行初步的处理,得到系统视频处理采用的像素图像,用户目标选择模块主要是在程序运行前,系统进入用户目标选择,用户可以通过鼠标框选待跟踪的目标,选择完成之后系统进入视频跟踪,视频跟踪过程中首先系统调用目标特征模块生成目标特征集合,然后基于视频帧构建视频运动模型对视频帧进行处理,接着建立自适应粒子滤波器对图像帧进行自适应粒子滤波实现目标预测和跟踪,预测跟踪结果输入到目标坐标生成模块中生成固定格式的目标坐标加入到坐标流处理队列中,轨迹流处理模块根据队列中的坐标流生成带轨迹的视频流输出到DirectShow 显示接口进行显示,这样就可以最终在显示器上实时显示出用矩形框标记的目标位置和轨迹信息。
在实现过程中相关的算法和粒子滤波算法都是采用OpenCv 提供的设计方案和函数。
三、粒子滤波算法测试及分析
以上就是整个粒子滤波算法视频目标跟踪的实现框架,根据上述提供的连接下载好代码后就可以对粒子滤波算法实现的视频目标跟踪算法进行运行和测试,其测试结果如下图2 所示。
图2 测试运行效果
从测试结果来看,在4G 内存的PC 端实现的粒子滤波算法其处理帧速和处理过程中所占用的系统资源是非常小的,而419c 开发板提供了1G 的运行内存和4 核心的64 位处理架构,在其上运行该算法非常可行,在下一节内容中,将继续教大家如何将该程序在410c 开发平台上进行实现,如下图3 所示,通过410c 提供的USB 接口连接USB 摄像机实现粒子滤波视频目标跟踪。
图3 DragonBoard 410c 平台。