一、基于特征点的目标跟踪的一般步骤

(1)探测当前帧的特征点

(2)通过当前帧和下一帧的灰度比较,估计当前帧特征点在下一帧的位置

(3)过滤位置不变的特征点,余下的点就是目标了

基于特征点的目标跟踪算法和1,2两个步骤有关,特征点可以是Harris角点,也可以是边缘点等等,第二步估计特征点的位置也有很多方法,比如光流法,卡尔曼滤波法。下面介绍是改进的Hariis角点来提取特征点,用Lucas-Kanade光流法实现目标跟踪。

二、光流法

光流法将二维速度场与灰度联系,引入光流约束方程,得到光流计算的基本算法。它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。光流是空间运动物体在观测成像平面上的像素运动的“瞬时速度”。

1.光流法的假设条件:

(1)亮度恒定,同一个点在随着时间的变化过程中该点的亮度不会发生任何变化。这是光流法的基本假设,所有的光流法都必须满足这个基本条件,用于得到光流法的基本方程。

(2)小运动,这个也必须满足,指的是随着时间的变化,特征点的位置不会发生剧烈的变化,这样灰度才能对位置求偏导,只有小运动的情况下才能使用前后帧之间单位位置的变化引起的灰度变化取近似灰度对位置的偏导数。目标在帧间的运动比较小。

(3)空间一致,一个场景上的近邻的点投影到图像上也是近邻点,而且邻近点的速度一致,这是Lucas-Kanade光流法特有的假设,假定了特征点的邻域内做相似运动,然后可以建立N多个方程求取x,y方向的速度,N就是特征点邻域的总个数,包括特征点本身。

2.方程求解

多个方程来求解两个未知变量,又是线性方程,很容易就想到使用最小二乘法,其中,最小误差平方和为最优化指标。

3.针对目标运动速度快的时候,小运动的假设没办法成立,所以采用多尺度来解决这个问题,。

(1)对每一帧都建立一个高斯金字塔,最大尺度图片在最顶层,原始图片在底层。

(2)从顶层开始估计下一帧的位置作为下一层的初始位置,沿着金字塔向下搜索,重复估计动作,直到到达金字塔的底层。

4.公式化

(1)第一点假设:亮度恒定,被跟踪的部分像素不随时间变化而变化,则:

f(x,t) = I(x(t),t) = I(x(t+dt),t+dt);

cmd怎么运行opencv中的光流示例 opencv 光流法_特征点


(2)第二点假设:时间连续,相邻帧之间的运动较小。

cmd怎么运行opencv中的光流示例 opencv 光流法_光流法_02

cmd怎么运行opencv中的光流示例 opencv 光流法_光流法_03