Java教程

目标跟踪算法总结(转载总结)

本文主要是介绍目标跟踪算法总结(转载总结),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、什么是目标追踪?

目标跟踪是通过分析视频图片序列,对检测出的各个候选目标区域实施匹配,定位出这些目标在图像中的坐标位置,然后得到一系列相同目标的连续变化的过程。

白话: 从茫茫人海中,识别出你的脸

2、为什么需要目标追踪?

我的理解:

1. 我们可以排除其他背景信息对我们的干扰,只对关心的物体进行特定的标记,也就是对一个物体在空间中的位置进行连续的追踪标记。

2.跟踪算法比单帧检测算法更快,利用所有已知信息(速度 位置 外观特征)来追踪点,节省系统资源

例如: 人脸识别,我只需要人脸的信息。而且突然闯入镜头的人脸,我要对他进行特异性识别,不然他看隐私信息。

3、怎么做目标追踪?

1. 表观建模:通过目标的表观特征来建立相应的表观模型,将目标表观建模分为生成式跟踪和判别式跟踪。

生成式跟踪(模板匹配):如指纹识别,先采集指纹数据,然后使用指纹模型直接与目标类别进行匹配,以达到跟踪的目的。

a. 核跟踪算法:首先对目标进行表观建模,进而确定相似性度量策略以实现对目标的定位,均值漂移(Meanshift)算法,该算法本质上是基于梯度上升的局部寻优算法。

在目标跟踪时,Meanshift算法不能很好的解决目标被遮挡、背景杂乱、尺度变化等问题,分块Meanshift的跟踪算法优化了目标遮挡问题,通过不同分块对中心位置的加权投票,降低被遮挡的目标区域对跟踪结果的影响。

b.子空间算法: 基于子空间的算法将图像由高维数据压缩成低维特征空间,大大降低了目标跟踪算法计算所需的时间。主成分分析(PCA)、线性判别分析(LDA)、局部保持映射(LPP)等。缺点:通常子空间算法都会假设数据服从高斯分布或局部高斯分布,导致基于判决性子空间的跟踪算法往往结果不稳定。

c. 稀疏表示法:通常假设跟踪目标在一个由目标模板所构成的子空间内,其跟踪结果是通过寻求与模板重构误差最小的候选目标,Kanade-Lucas-Tomashi(KLT)特征追踪,追踪一张图片中几个特征点的位置。

2. 判别式跟踪:

a.基于Boosting和SVM的判别模型一直被广泛应用于目标检测和目标跟踪领域。提出了一种结合SVM和加权Meanshift的目标跟踪算法,使用颜色特征的SVM分类器对像素点进行分类,再结合对前景目标和背景特征赋予不同权值的Meanshift算法,突出前景特征,降低背景噪声对目标的干扰,实现了复杂场景下的目标跟踪。

b.基于随机学习的跟踪算法通过融合随机特征与输入建立目标的表观模型:典型的基于随机学习的跟踪算法有在线随机森林和朴素贝叶斯等。

c.深度学习:很多学者使用图像分类的大型数据集预训练模型,但是这种数据集与视频跟踪所需的实际数据往往存在较大的差异,导致跟踪误差较大。第二个难题是,随着深度学习网络层数的增加,算法的计算量增大,这会降低跟踪过程中的实时性。

3. 使用跟踪算法:

跟踪策略的目的是希望所建立的运动模型能够预估出下一帧图像中目标的可能状态,为目标的状态估计提供先验知识,用来在当前帧图像中寻找最优的目标位置。

常用的运动估计方法有:

卡尔曼滤波、粒子滤波(基于概率,贝叶斯):该类跟踪方法采用贝叶斯滤波理论估计目标的状态,即根据目标当前时刻的先验知识和状态方程,采用递推的方式对下一时刻的状态进行预测和修正,以实现对目标时变状态的估计。该方法通常采用位置、速度等作为目标位置信息的状态变量,状态变量通过状态方程的递推运算实现状态预测,之后把状态变量最新的观测值带入观测似然方程,并评价状态预测置信度,以修正状态变量的预测值。

隐马尔可夫模型和均值漂移: 均值漂移由目标检测算法获取目标的模板,然后将候选目标位置与目标模板相匹配以实现目标的跟踪。该类算法通常以代价函数作为目标模板与候选目标位置间的相似性度量,以最优化理论寻找代价函数的最大值,并选择代价函数取得最大值时候选目标的位置作为目标在当前图像序列中的估计位置。

总结:

 OPENCV:

如果需要更高的准确率,并且可以容忍延迟的话,使用CSRT。

如果需要更快的FPS,并且可以容许稍低一点的准确率的话,使用KCF。

如果纯粹的需要速度的话,用MOSSE。

这篇关于目标跟踪算法总结(转载总结)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!