运动目标检测跟踪主流算法

菜鸟升级 菜鸟升级     2022-08-01     728

关键词:

不全,需要慢慢补充

 一.运动目标检测

 (一)背景差

 1.帧差

2.GMM

 背景减算法可以对背景的光照变化、噪声干扰以及周期性运动等进行建模,在各种不同情况下它都可以准确地检测出运动目标。因此对于固定摄像头的情形,目前大多数的跟踪算法中都采用背景减算法来进行目标检测。背景减算法的局限性在于它需要一个静态的固定摄像头。

 (二)运动场

 光流法

 光流估计的方法都是基于以下假设:图像灰度分布的变化完全是目标或者场景的运动引起的,也就是说,目标与场景的灰度不随时间变化。这使得光流方法抗噪声能力较差,其应用范围一般局限于目标与场景的灰度保持不变这个假设条件下。另外,大多数的光流计算方法相当复杂,如果没有特别的硬件装置,其处理速度相当慢,达不到实时处理的要求。

 二.目标跟踪

 1.区域与区域匹配

 这种算法的优点在于当目标未被遮挡时,跟踪精度非常高,跟踪非常稳定。但其缺点首先是费时,当搜索区域较大时情况尤其严重;其次,算法要求目标变形不大,且不能有太大遮挡,否则相关精度下降会造成目标的丢失。

 2.特征点(关键点)跟踪

KLT:Shi和Tomasi 在1994年提出的KLT 跟踪算法是一种被广泛应用的基于特征点跟踪算法。由于特征点分布在整个目标上,因此即使有一部分被遮挡,仍然可以跟踪到另外一部分特征点,这也是基于特征点跟踪算法的优点。

基于特征点的跟踪算法中,比较困难的问题是当目标发生旋转或者被遮挡时,如何准确地完成特征点的提取、保存、删除等工作

 3.基于主动轮廓的跟踪算法

主动轮廓模型也称为Snake 模型,这种方法能较精确地跟踪上目标的轮廓。Snake 模型非常适合可变形目标的跟踪,如对运动细胞的跟踪。这种模型与卡尔曼滤波相结合能够更好地进行跟踪。Snake模型比较适合单目标的跟踪,对于多目标跟踪更多地是采用基于水平集(Level Set)方法的主动轮廓模型

 4.光流

Lucas-Kanade稀疏光流calcOpticalFlowPyrLK(利用金字塔)

Horn-Schunck稠密光流calcOpticalFlowHS

 稠密光流需要很大的计算量,OpenCV中对此方法做了简化,即对前后连续帧的一个像素的邻域进行匹配,这种方法叫块匹配。

稀疏光流需要在跟踪之前指定一组点,如果这些点具有某些明显特征,那么跟踪就会相对稳定和可靠。可见,其运算量比稠密光流要小很多。

 首先利用goodFeaturesToTrack函数得到图像中的强边界作为跟踪的特征点,接下来要调用calcOpticalFlowPyrLK函数,输入两幅连续的图像,并在第一幅图像里选择一组特征点,输出为这组点在下一幅图像中的位置。再把得到的跟踪结果过滤一下,去掉不好的特征点。再把特征点的跟踪路径标示出来。

 (实际效果一般)

 5.mean-shift和 camshift

 Mean-shift优缺点

meanShift算法用于视频目标跟踪时,采用目标的颜色直方图作为搜索特征,通过不断迭代meanShift向量使得算法收敛于目标的真实位置,从而达到跟踪的目的。

传统的meanShift算法在跟踪中有几个优势:

(1)算法计算量不大,在目标区域已知的情况下完全可以做到实时跟踪;

(2)采用核函数直方图模型,对边缘遮挡、目标旋转、变形和背景运动不敏感。

同时,meanShift算法也存在着以下一些缺点:

(1)缺乏必要的模板更新;

(2)跟踪过程中由于窗口宽度大小保持不变,当目标尺度有所变化时,跟踪就会失败;

(3)当目标速度较快时,跟踪效果不好;

(4)直方图特征在目标颜色特征描述方面略显匮乏,缺少空间信息;

由于其计算速度快,对目标变形和遮挡有一定的鲁棒性,所以,在目标跟踪领域,meanShift算法目前依然受到大家的重视。但考虑到其缺点,在工程实际中也可以对其作出一些改进和调整;例如:

(1)引入一定的目标位置变化的预测机制,从而更进一步减少meanShift跟踪的搜索时间,降低计算量;

(2)可以采用一定的方式来增加用于目标匹配的“特征”;

(3)将传统meanShift算法中的核函数固定带宽改为动态变化的带宽;

(4)采用一定的方式对整体模板进行学习和更新;

  

CamShift算法

CamShift算法的全称是"ContinuouslyAdaptive Mean-SHIFT",即:连续自适应的MeanShift算法。其基本思想是对视频序列的所有图像帧都作MeanShift运算,并将上一帧的结果(即搜索窗口的中心位置和窗口大小)作为下一帧MeanShift算法的搜索窗口的初始值,如此迭代下去。简单点说,meanShift是针对单张图片寻找最优迭代结果,而camShift则是针对视频序列来处理,并对该序列中的每一帧图片都调用meanShift来寻找最优迭代结果。正是由于camShift针对一个视频序列进行处理,从而保证其可以不断调整窗口的大小,如此一来,当目标的大小发生变化的时候,该算法就可以自适应地调整目标区域继续跟踪。

 

在OpenCV自带的camShift的例子当中,是通过计算目标在HSV空间下的H分量直方图,通过直方图反向投影得到目标像素的概率分布,然后通过调用OpenCV的CAMSHIFT算法,自动跟踪并调整目标窗口的中心位置与大小。该算法对于简单背景下的单目标跟踪效果较好,但如果被跟踪目标与背景颜色或周围其它目标颜色比较接近,则跟踪效果较差。另外,由于采用颜色特征,所以它对被跟踪目标的形状变化有一定的抵抗能力。 

    OpenCV自带例子中的camShift算法,可以分为三个部分:

 A、计算色彩投影图(反向投影):

 (1)为了减少光照变化对目标跟踪的影响,首先将图像从RGB颜色空间转换到HSV颜色空间;

 (2)对H分量进行直方图统计,直方图代表了不同H分量取值出现的概率,或者说可以据此查找出H分量的大小为x时的概率或像素个数,即,得到颜色概率查找表;

 (3)将图像中每个像素的值用其颜色出现的概率进行替换,由此得到颜色概率分布图;

   以上三个步骤称之为反向投影,需要提醒的是,颜色概率分布图是一个灰度图像;

 B、meanShift寻优

 前面提到过meanShift算法(http://blog.csdn.net/carson2005/article/details/7337432)是一种非参数概率密度估计方法,它通过不断迭代计算得到最优搜索窗口的位置和大小。

 C、camShift跟踪算法

 前面提到,camShift其实就是在视频序列的每一帧当中都运用meanShift,并将上一帧的meanShift结果作为下一帧的初始值,如此不断循环迭代,就可以实现目标的跟踪了。

  

6.kalman滤波(预估器)

 

转:http://blog.csdn.net/loadstar_kun/article/details/8599327

目标跟踪检测算法(一)——传统方法

...形,尺度变化、平面外旋转、平面内旋转、出视野、快速运动和运动模糊等。而且当目标跟踪算法投入实际应用时,不可避免的一个问题——实时性问题也是非常的重要。正是有了这些问题,才使得算法研究充满着难点和挑战。... 查看详情

运动对象检测和描述

运动图像检测基于背景减法目标跟踪,背景分割器:KNN、MOG2和GMGBasicmotiondetectionandtrackingwithPythonandOpenCV使用背景减除进行目标检测用OpenCV实现多目标追踪(C++/Python)通过形态学改善图像过滤,追踪人脸,检测前景/背景区域和深度... 查看详情

图像工程——目标检测与目标跟踪

...样本衰减最优;运算效率高算法缺点:把阴影当做前景;运动目标不完整。优点:算法实现简单,程序设计复杂度低,运行速度快;动态环境自适应性强,对场景光线变化不敏感。优点:实时性高将单个目标的跟踪问题看作是MDP... 查看详情

无人机视频图像运动目标检测算法综述------2019年-------------

...究:目前,国内外学者利用无人机视频图像开展运动目标检测大多将研究重点放在典型运动目标——车辆上,例如美国[3]德国[4]等,我国也开展了利用无人机检测运动车辆的研究[5]。1997年,美国设立VSAM视觉监控项目。... 查看详情

我收集的一些目标检测跟踪识别标准测试视频集和图像数据库

一个网友收集的运动目标检测,阴影检测的标准测试视频http://blog.csdn.net/sunbaigui/article/details/6363390 很权威的changedetection检测视频集,里面有将近20种主流算法在这个测试集上的运行结果和ROC,PRA曲线http://changedetection.net/ VIV... 查看详情

论文解读sortdeep-sort多目标跟踪算法

...要的应用。例如,在自动驾驶系统中,目标跟踪算法要对运动的车、行人、其他物体的运动进行跟踪,对它们的未来的位置、速度等信息作出预测。多目标跟踪,MultipleObjectTracking,并不是简单的多个单目标跟踪,因为它不仅涉... 查看详情

目标跟踪算法

...也挺好的。但是其不能解决目标的遮挡问题并且不能适应运动目标的的形状和大小变化等。对其改进的算法有camshift算法,此方法可以适应运动目标的大小形状的改变,具有较好的跟踪效果,但当背景色和目标颜色接近时,容易... 查看详情

目标跟踪基于kalman滤波跟踪视频运动目标matlab代码(代码片段)

1简介在智能监控系统中,通过帧差法对运动物体的识别,定位,利用卡尔曼滤波算法对目标运动进行预测,跟踪,从而控制摄像头转动,跟踪目标物,使目标物体始终出现监控画面的中心.在此采用卡尔曼滤算法,进行目标运动的预估,利用M... 查看详情

机动目标跟踪——匀速运动cv模型(代码片段)

机动目标跟踪——匀速运动CV模型原创不易,路过的各位大佬请点个赞WX:ZB823618313机动目标跟踪——目标模型概述机动目标跟踪——匀速运动CV模型1.对机动目标跟踪的理解2.目标模型概述3.机动目标模型3.1匀速运动CV模型3.1.1一... 查看详情

无人驾驶(三)行人跟踪算法

...差来实现跟踪的最优线性递归滤波算法,通过递归行人的运动状态来预测行人轨迹的变化。首先设定初始参数,读取视频序列。然后进行背景估计,产生初始化背景图像。然后依次读取视频序列,利用Kahnan滤波算法,根据上一帧... 查看详情

运动目标跟踪(十七)--一些跟踪算法简述及跟踪牛人资料整理

这篇文章,主要记录一些效果和时间不是很优秀的跟踪算法,以备用。很想全部列出来,发现网上基本没有资料,都要去看论文,自己又不做研究,所以,先这样吧。L1APG:原文:http://www.cnblogs.com/pix... 查看详情

运动学基于matlabsinger模型算法机动目标跟踪含matlab源码1157期(代码片段)

一、简介目标跟踪是利用各种类型的传感器获得的关于目标信息,对目标的真实状态以及未来的状态进行估计和预测的一门技术。目标跟踪技术在军事以及民用等诸多领域里都有着广泛的应用。随着电子技术以及计算机技术... 查看详情

图像处理-边缘检测-文献阅读笔记

...绝对值,并将结果转换成8位[2]高佳益.基于OpenCV的智能小车运动轨迹跟踪方法研究[D].陕西:西安石油大学,2020.目标检测算法:二帧差分法、三帧差分法、高斯混合模型(GMM)背景差分法、ViBe背景差分法和光流法目标跟踪算法&... 查看详情

目标跟踪(3)multitracker:基于opencv(c++/python)的多目标跟踪

...算法有时可能会丢失它正在跟踪的对象。例如,当对象的运动太大时,跟踪算法可能跟不上。许多现实世界的应用程序同时使用检测和跟踪。在本教程中,我们只关注跟踪部分。我们想要跟踪的对象将通过拖动它们周围的包围框... 查看详情

deepsort

目标跟踪任务的难度和复杂度要比分类和目标检测高不少,具有更大的挑战性。目前主流的目标跟踪算法都是基于Tracking-by-Detection(检测加跟踪,使效果更稳定)策略,即基于目标检测的结果来进行目标跟踪。DeepSORT运用的就是这... 查看详情

目标跟踪检测算法(四)——多目标扩展

...出极大的优势。与行人重识别问题紧密相关的是行人的多目标跟踪问题。【嵌牛鼻子】深度多目标跟踪算法【嵌牛提问】深度多目标跟踪算法有哪些?【嵌牛正文】第一阶段(概率统计最大化的追踪)1)多假设多目标追踪算法... 查看详情

论文解读sortdeep-sort多目标跟踪算法(代码片段)

...。例如,在自动驾驶系统中,目标跟踪算法要对运动的车、行人、其他物体的运动进行跟踪,对它们的未来的位置、速度等信息作出预测。多目标跟踪,MultipleObjectTracking,并不是简单的多个单目标跟踪,... 查看详情

卡尔曼滤波器(目标跟踪一)(上)

...候,我还想再跟踪这个家伙,并且我还要把他的运动轨迹搞出来。假设这个目标框我们是使用yolo算法识别出来的,我们知道如果是这个yolo算法识别出来的话,那么我们得到的就是这个目标的bbox和对应的类别。当... 查看详情