KLT光流跟踪demo

1、KLT光流

《1》、光流指运动物体在像素平面上的瞬时速度,它利用图像序列中像素在时间域上的变化以及相邻帧之间的关系来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。
《2》、KLT光流假设

1、相邻帧之间的亮度恒定;
2、相邻视频帧的取帧时间连续,或者相邻帧之间物体的运动比较“微小”;
3、保持空间一致性,既是领域像素有相似运动,保持相邻;

假设1保证目标不受亮度的影响
假设2保证在目标领域内能够找到对应的特征点;
假设3保证在同一个窗口内,所有点的位移相同;

klt在满足上面3个条件时工作较好,能用但其实跟踪不会太准,有很多改进方法,比较实用的有 TLD 算法。

2、KLT计算原理

  完整的论文推导公式
在这里插入图片描述
在这里插入图片描述

   来自维基的简洁KLT计算
在这里插入图片描述
  维基公式截图主要是为了好理解demo编码才加上的,实际和论文推导是一个意思。
demo中实际求解公式1向量(Vx,Vy)使用牛顿迭代法。demo使用牛顿法迭代一定次数后就认为得到了近似解。

3、klt demo的算法流程

《1》、计算Shi_Tomas角点;

    计算X,Y方向梯度幅值gradxx和gradyy,及X,Y方向梯度乘积gradxy;
    求取坐标点(x,y)处的2x2梯度幅值组成矩阵[gradxx  gradxy 的最小特征值
                                        gradxy  gradyy]
    特征值与阈值比较,若大于阈值则认为该点为强角点;

《2》、跟踪

   do
{
    w*h领域内计算两帧图像之间的像素差diff;
    w*h领域内计算两帧图像点(x,y)处,X,Y方向的梯度和;
    w*h领域内计算梯度幅值gradxx, gradyy及gradxy;
    w*h领域内分别计算x,y方向diff与对应方向的梯度乘积之和;
    求解速度Vx,Vy;
    根据速度更新跟踪坐标点;
} while(牛顿迭代法退出条件)

说明:
   a、shi_tomas角点与Harris角点差异主要是响应函数不同如下:来源
在这里插入图片描述

4、添加注释理解版 demo

效果:
在这里插入图片描述
画光流跟踪线(图中白色的线)不是很严谨,有些跟踪看上去就有点飘。有些非运动物体(窗户等)的角点一直存在,可以通过一些手段去掉,如高斯背景建模。速度挺慢的,demo不少地方都可以进行优化,但是暂时先不做了。

5、参考及看demo时会用到的一些链接

KLT光流:
   http://cecas.clemson.edu/~stb/klt/previous_versions.html
   http://cecas.clemson.edu/~stb/klt/birchfield-klt-derivation.pdf
   http://cseweb.ucsd.edu/classes/sp02/cse252/lucaskanade81.pdf
   https://blog.csdn.net/irobot_davinci/article/details/29635199
   https://zh.wikipedia.org/wiki/卢卡斯-卡纳德方法
Tomas角点检测:https://blog.csdn.net/tuwenqi2013/article/details/83041318
双线性差值:http://www.cnblogs.com/xpvincent/archive/2013/03/15/2961448.html

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值