QT+Opencv粒子滤波算法实现视频目标跟踪——(二)滤波算法分析及测试
在前一个博客中已经对机器视觉及粒子滤波算法的相关原理进行了介绍,在基于410c平台实现粒子滤波算法的前期,我们在上位机上应用QT和Opencv完成了粒子滤波算法的实现和测试,具体的实现及测试过程如下:
一、QT及Opencv上位机环境的搭建
在进行测试的时候我们主要借助于QT来实现粒子滤波目标跟踪的界面交互设计,同时通过Opencv提供的各种算法函数来实现相关的图像处理,最后结合粒子滤波算法来实现整个视频目标的跟踪,其中QT和Opencv环境的搭建如下:
1)QT环境的搭建
本文上位机使用的是32位的win7平台,具体的安装过程可以参考http://www.cnblogs.com/sung/archive/2013/10/09/3359063.html 中提供的方法。
2)OpenCv的安装
Opencv使用的是2.4版本的,在QT环境下的Opencv具体的安装可以参考http://www.cnblogs.com/liu-jun/archive/2012/09/26/Jacky_Liu.html。
二、基于C++语言的粒子滤波算法的实现
完成相关的环境搭建后,就可以开始进行粒子滤波算法的编程实现了,在前文目标跟踪算法的选择中已经对粒子滤波算法的基本原理进行了介绍,本节将在前文的基础上,对核心代码的具体实现进行简单的介绍,实现的完整代码可以到百度云盘进行下载,链接为http://pan.baidu.com/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平台
DragonBoard 410c opencv Qt 相关文章: