文档介绍:OPENCV中常用物体检测算法和跟踪算法的介绍
一、运动物体的检测方法
运动目标检测指从图像序列中将前景变化区域从背景图像中提取出来;现阶段运动目标的检测的难点主要在:动态变化着的背景的提取与更新、光线变化(渐变、突变、反光)问题、阴影干扰、目标遮挡、背景物体变化(如树叶、水波、天气变化等)、及目标运动过程不连续、速度缓慢、往返运动等问题上。现阶段主要的基本的检测算法视频图像的时域和空域信息;主要检测算法如下:
1、背景减法
背景减法的原理是利用当前图像与背景图像的差分来检测运动区域的一种技术。它一般能够提供最完整的特征数据,而且速度快,能适合实时系统的要求。但是对于动态场景的变化,如光照和外来无关事件的干扰特别敏感。
2、时间差分
时间差分方法利用图像序列中前后几个相邻帧图像之间的差分来提取图像中的运动区域例如Lipton等利用两帧差分方法从实际视频图像中检测出运动目标,进而用于目标的分类与跟踪。一个改进的方法是利用三帧差分代替两帧差分,如VSM开发了一种自适应背景减除与三帧差分相结合的混合算法,它可以快速有效地从背景中检测出运动目标。时间差分运动检测方法对于动态环境具有较强的自适应性,但它一般不能完全提取出所有相关的特征像素点,在运动实体内部容易产生空洞现象。
3、光流
光流方法的运动检测采用了运动目标随时间变化的光流场特性,从而有效地提取和跟踪运动目标。该方法的优点是在摄像机运动存在的前提下也能检测出独立的运动目标,而缺点在于计算方法相当复杂,且抗噪声性能差,如果没有特别的硬件装置则不能被应用于全帧视频流的实时处理。
4、统计方法
统计方法是利用单个像素或几组像素的变化特征建立背景模型,克服了传统背景减法对动态干扰因素较敏感的问题。如利用背景注册技术构建可靠的背景模型,将当前帧与背景模型相减提前前景区域。该方法能成功克服噪声和光照变化的影响,但是需要捕获大量数据建立背景模型,如果背景变化较大,则前若干帧则无法获得完整的背景模型。
二、运动物体的跟踪方法
运动物体跟踪就是在图像序列间创建基于位置、速度、形状等有关特征的对应匹配问题。运动跟踪算法与运动检测算法会进行大量的信息交互。跟踪通常是利用点、线、或区域等特征在后续图像中进行运动目标的匹配;常用的算法有Kalman算法,mean-shift和camshift算法,condensation算法等。
1、Kalman滤波器
卡尔曼滤波是基于高斯分布的状态预测方法,可实时地进行跟踪预测。其基本思想是,若有一组强而合理的假设,给出系统的历史测量值,则可以建立最大化这些早期测量值的后验概率的系统状态模型。即重复更新系统状态模型。
Kalman滤波器需要二个重要的假设(1)被建模的系统是线性的;即k时刻的系统状态可以用某个矩阵与k-1时刻的系统状态的乘积表示。(2)假设噪声是高斯分布的白噪声,即噪声与时间不相关。
Kalman算法流程:
首先,我们先要引入一个离散控制过程的系统。该系统可用一个线性随机微分方程(Linear Stochastic Difference equation)来描述:X(k)=A X(k-1)+B U(k)+W(k)再加上系统的测量值:Z(k)=H X(k)+V(k) 上两式子中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。A和B是系统参数,对于多模型系统,他们为矩阵。Z(k)是k时刻的测量值,H 是测量系统的参数,对于多测量系统,H为矩阵。W(k)和V(k)分别表示过程和测量的噪声。他们被假设成高斯白噪声(White Gaussian Noise),他们的covariance 分别是Q,R(这里我们假设他们不随系统状态变化而变化)。对于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。下面我们来用他们结合他们的covariances 来估算系统的最优化输出。
首先我们要利用系统的过程模型,来预测下一状态的系统。假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:X(k|k-1)=A X(k-1|k-1)+B U(k) ……….. (1)式(1)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。到现在为止,我们的系统结果已经更新了,可是,对应于X(k|k-1)的covariance还没更新。我们用P表示covariance:P(k|k-1)=A P(k-1|k-1) A’+Q ………(2)式(2)中,P(k|k-1)是X(k|k-1)对应的covariance,P(k-1|k-1)是X(k-1|k-1)对应的 covariance,A’表