KLT(Kanade-Lucas-Tomasi )跟踪算法
前言
研究目标跟踪的算法种类颇多,主要可分为两大类:一类是传统的目标跟踪算法,包括粒子滤波(pf)、Mean Shift及KLT算法(或称Lucas光流法);另一大类是基于深度学习的跟踪算法。本文将介绍KLT(Kanade-Lucas-Tomasi)跟踪算法,它属于光流法的一种。
光流法
光流(Optical flow) 其实是指空间运动物体在观察成像平面上的像素运动的 瞬时速度。
它利用了图像序列中像素强度在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。
那么简单来说,光流其实就是瞬时速率,在时间间隔很小(前后连续相邻两帧)时等同于目标点的位移。
前提假设:
1.相邻帧之间的亮度恒定;
2.相邻帧之间物体的运动比较“微小”;
3.保持空间一致性;即,相邻像素点具有相同的运动
可参考光流数学原理,得到光流方程推导过程最终结果尽现数学之美!the beauty of math^_^
KLT
光流法的一种,假设条件基本与上述一致。
假设条件
(1)亮度恒定 → 保证不受亮度的影响
(2)时间连续或者运动位移小 → 保证KLT算法能够找到点
(3)空间一致性,邻近点有相似运动,保持相邻 → 在同一个窗口中,所有点的偏移量都相等
主要步骤
(1)在第一帧检测Harris角点
(2)在连续帧之间每一个角点通过平移或仿射进行运动估计
(3)连接连续帧中的运动向量,得到每一个角点的轨迹
(4)对于各特征点,在各帧中判断其跟踪的好坏。有些特征可以移除(比如去除掉那些被遮挡的或者无法准确跟踪的),可以周期性(如每隔5帧)加入一些新的特征
(5)使用步骤1-3追踪新和旧的角点
对于角点相关内容,可以参考大神写的这个:Harris角点检测原理详解
不适用场景
针对于假设条件来说,光流法有不适用场景,如下:
1.光流法对光线具有很高敏感性, 光线变化极易影响识别效。实际光流场并不一定反映了目标点的实际运动情况,比如“有运动无光流”、“有光流无运动”的情况。
2.目标运动速度过快时,传统光流法也不适用。
…