前言:由于个人之前做过一个目标跟踪算法,所以,有必要将之前的工作做一个梳理。
目录
基于第一种思路的运动目标检测
1、 静态背景:
2、 运动场
目标跟踪:
相似性度量算法:
核心搜索算法:
卡尔曼滤波:
粒子滤波器:
Meanshift算法:
Camshift算法:
目标跟踪分类:
- 基于主动轮廓的跟踪。
- 基于特征的跟踪。
- 基于区域的跟踪。
- 基于模型的跟踪。
运动目标跟踪主流算法大致分类:
两种思路:
1、不依赖与先验知识,直接从图像序列中检测到运动目标,并进行目标识别,最终跟踪感兴趣的运动目标;
2、依赖于先验知识,首先为运动目标建模,然后在图像序列中实时找到相匹配的运动目标。
基于第一种思路的运动目标检测
对于不依赖先验知识的目标跟踪来讲,运动检测是实现跟踪的第一步,运动检测即为从序列图像中将变化区域从背景图像中提取出来,运动目标检测算法依旧依照目标与摄像机之间的关系可以分为静态背景下运动检测和动态背景下运动检测。
1、静态背景:
1.1、背景差:对背景的光照变化、噪声干扰以及周期性运动等进行建模
1.2、帧差
1.3、GMM
1.4、光流
2、运动场
分为两种情况,一种是相机固定,但是视角变化。二是相机是运动的。
因此,检测运动目标的首要任务是进行图像的全局运动估计与补偿。
全局运动估计的问题可以归结为全局运动模型参数的估计问题,代表方法是块匹配和光流估计方法。
块估计:将图像分割成不同的图像块,假定同一图像小块上的运动矢量是相同的,通过像素搜索得到最佳的运动矢量估计。
光流方法:假定图像灰度分布的变化完全是目标或者场景的运动引起的,即目标与场景的灰度不随时间变化。这使得光流方法抗噪声能力较差,其应用范围一般局限与目标与场景的灰度保持不变这个假设条件下。
不足之处:计算复杂,实时困难。
目标跟踪:
运动目标的跟踪,即通过目标的有效表达,在图像序列中寻找与目标模板最相似候选目标位置的过程。简单说,就是在序列图像中为目标定位。运动目标的有效表达除了对运动目标建模外,目标跟踪常用到的目标特性表达主要包括视觉特征(图像边缘、轮廓、形状、纹理、区域)、统计特征(直方图、各种矩特征)、变换系数特征(傅里叶描述子、自回归模型)、代数特征(图像矩阵的奇异值分解)等。除了单一特征,也可通过融合多个特征来提高跟踪的可靠性。
相似性度量算法:
对运动目标进行特征提取之后,需要采用一定的相似性度量算法与帧图像进行匹配,从而实现跟踪。常见的相似性度量方法有欧式距离、街区距离、棋盘距离等。
核心搜索算法:
目标跟踪过程中,直接对场景中所有内容进行匹配算法,寻找最佳匹配信息,需要处理大量的冗余信息,这样运算量比较大,采用一定的搜算法对未来时刻目标的位置状态进行估计假设,缩小目标搜索范围便具有了非常重要的意义。其中一类比较常用的方法就是预测运动物体下一帧可能出现的位置,在相关区域内搜索最优点。常见的预测算法有Kalman(卡尔曼)滤波、扩展的卡尔曼滤波和粒子滤波等方法。
卡尔曼滤波:
对动态系统的状态序列进行线性最小方差估计的算法。其方法:状态方程+观测方程 = 动态系统,基于系统以前的状态序列对下一个状态做最优估计,预测具有无偏、稳定和最优的特点,且计算量小和可实时计算等特点。
限制:仅适合线性且呈高斯分布的系统。
粒子滤波器:
一种给予蒙特卡洛和贝叶斯估计理论的最优算法,它以递归的方式对测量数据进行序贯处理,因此无须对以前的测量数据进行存储和再处理,节省了大量的存储空间。
优点:跟踪多形式的目标以及非线性运动和测量模型中,粒子滤波器具有极好的鲁棒性。
均值漂移算法(meanshift),连续自适应均值漂移算法(camshift)和置信域算法都是利用无参估计的方法优化目标模板和候选目标距离的迭代收敛过程,以达到缩小搜索范围的目的。(简言之,都是减小搜索范围的算法是优化搜索方向)
Meanshift算法:
利用梯度优化方法实现快速目标定位,能够对非刚性目标实时跟踪,对目标的变形、旋转等运动有很好的适用性。
缺点:没有利用目标在空间的运动方向和运动速度信息,当周围存在干扰时(光线和遮挡等),容易丢失目标。
Camshift算法:
扩展的meanshift算法,结合目标色彩信息进行改进的均值漂移算法。目标图像的直方图记录的是颜色出现的概率,这种方法不受目标形状变化的影响,可以有效解决目标变形和部分遮挡问题,且运算效率较高,但是该算法需要在开始前人工指定跟踪目标。
目标跟踪分类:
依据运动的表达和相似性度量运动目标跟踪算法可以分为四类:基于主动轮廓的跟踪、基于特征的跟踪,基于区域的跟踪和基于模型的跟踪。跟踪算法的精度和鲁棒性很大程度上取决于运动目标的表达和相似性度量的定义,跟踪算法的实时性取决于匹配搜索策略和滤波预测算法。
1、基于主动轮廓的跟踪:
Kass提出的主动轮廓模型,在图像域内定义可变曲线,通过对其能量函数的最小化,动态轮廓逐步调整自身形状与目标轮廓相一致。优点:将图像的灰度信息和整体轮廓的几何信息,增强了跟踪的可靠性。缺点:计算量较大,对于快速运动的物体或者形变较大的情况,跟踪效果不够理想。
2、基于特征的跟踪:
不考虑运动目标的整体特征,只通过目标图像的一些显著特征来进行跟踪。(假定运动目标可以由唯一的特征集合表达,搜索到该特征集合就认为跟踪上了运动目标,除了用单一特征来实现跟踪外,还可以进行多特征融合来作为跟踪特征),基于特征的跟踪主要包括特征提取和特征匹配两个方面。
特征提取:从景物的原始图像中提取图像的特征。
特征匹配:进行帧间目标特征的匹配,并且以最优匹配来跟踪目标。常见的基于特征匹配的跟踪算法有基于二值化目标图像匹配的跟踪,基于边缘特征匹配或角点特征匹配的跟踪、基于目标颜色特征匹配的跟踪等等。
缺点:特征鲁棒性不强,对噪音、图像本身模糊等比较敏感。
3、基于区域的跟踪:
得到包含目标的模板,模板的获取可以通过预先人为确定,模板通常略微大于目标的矩形,也可视为不规则形状。在图像序列中,运用相关算法跟踪目标。
4、基于模型的跟踪:
通过先验知识对所跟踪的目标建立模型,然后通过匹配跟踪目标进行模型的实时更新。对于刚体目标来说,其运动状态变换主要是平移、旋转等,方便跟踪。但是对于非刚体目标,其几何模型不容易得到。
优点:该类方法不受观测视角的影响,具有较强的鲁棒性,模型匹配跟踪精度高,适合机动目标的各种运动变化,抗干扰能力强,
缺点:计算复杂,运算速度慢,模型更新较为复杂,实时性较差。
基于以上的思路,我个人采用的是基于特征的跟踪,为什么要采用这个呢??说到底,其实就是为了利用CNN强大的非线性特征抽取能力。近两年,深度学习的广泛应用已经在计算机视觉领域带来了一场技术革命,传统的特征抽取方法基本都被秒杀,利用CNN来抽取目标的特征,使得目标在姿态、背景、和光照等非常复杂的条件下仍然能够表现出很强的特征鲁棒性,这就是CNN的强大之处。利用CNN直接将传统的目标检测这个问题视为一个分类问题,针对特定的目标,直接训练特定的检测器,采用TLD框架,仍然不失为一种好的方法,当然,基于CNN的目标追踪还有最大的一个问题,就是计算资源,如果对于一些高清视频流处理,图像的分辨率无疑仍然给性能带来了瓶颈,好在工程应用方面,传统方法的思想仍然有很好的可借鉴之处,解决这个问题是不困难的。
个人虽然不是专门做这个方向,但是,由于项目的需要,还是让我对这个方面收获颇多。不仅仅是算法方面,更在于工程应用领域,仍然有很多学习之处。
不足之处,欢迎拍砖!!!