一 光流

光流的概念是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的相应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是因为场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。

其计算方法能够分为三类:

(1)基于区域或者基于特征的匹配方法;

(2)基于频域的方法;

(3)基于梯度的方法;

简单来说,光流是空间运动物体在观測成像平面上的像素运动的“瞬时速度”。

光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的“运动”。研究光流场的目的就是为了从图片序列中近似得到不能直接得到的运动场。

 光流法的前提如果:

(1)相邻帧之间的亮度恒定。

(2)相邻视频帧的取帧时间连续,或者,相邻帧之间物体的运动比較“微小”;

(3)保持空间一致性;即,同一子图像的像素点具有同样的运动

这里有两个概念须要解释:

运动场,事实上就是物体在三维真实世界中的运动;

光流场,是运动场在二维图像平面上的投影。

如上图所看到的。H中的像素点(x,y)在I中的移动到了(x+u,y+v)的位置,偏移量为(u,v)。

光流法用于目标检測的原理:给图像中的每一个像素点赋予一个速度矢量,这样就形成了一个运动矢量场。在某一特定时刻,图像上的点与三维物体上的点一一相应,这样的相应关系能够通过投影来计算得到。依据各个像素点的速度矢量特征,能够对图像进行动态分析。假设图像中没有运动目标。则光流矢量在整个图像区域是连续变化的。

当图像中有运动物体时。目标和背景存在着相对运动。运动物体所形成的速度矢量必定和背景的速度矢量有所不同。如此便能够计算出运动物体的位置。

须要提醒的是,利用光流法进行运动物体检測时。计算量较大,无法保证实时性和有用性。

光流法用于目标跟踪的原理:

(1)对一个连续的视频帧序列进行处理;

(2)针对每个视频序列。利用一定的目标检測方法。检測可能出现的前景目标;

(3)假设某一帧出现了前景目标,找到其具有代表性的关键特征点(能够随机产生,也能够利用角点来做特征点);

(4)对之后的随意两个相邻视频帧而言,寻找上一帧中出现的关键特征点在当前帧中的最佳位置,从而得到前景目标在当前帧中的位置坐标;

(5)如此迭代进行。便可实现目标的跟踪;

IxVx+IyVy+It=0;

对于二维的运动场。单靠一个像素无法确定其运动矢量(Vx,Vy)依据如果三, 我们能够使用当前像素的邻域像素加入很多其它约束条件;如经典的Horn-Schunck光流法所加的运动平滑约束。

同一时候。对于二维运动场,仅仅需包括两条或以上边缘则能够解系统方程,因此在进行光流法时,先选择好跟踪的特征点。如harris角点。


二 KLT

KLT属于光流法的一种。其前提如果与上一致


1)亮度恒定
2)时间连续或者是运动是“小运动”
3)空间一致,临近点有相似运动。保持相邻
  

非常直观的讲,如果推断一个视频的相邻两帧I、J在某局部窗体w上是一样的,则在窗体w内有:I(x, y, t) = J(x', y', t+τ)。亮度恒定的如果(如果1)即为了保证其等号成立不受亮度的影响,如果2是为了保证KLT可以找到点。如果3则为下面原因如果(即对于同一个窗体中,全部点的偏移量都相等):

  在窗体w上,全部(x, y)都往一个方向移动了(dx,  dy),从而得到(x', y'),即t时刻的(x, y)点在t+τ时刻为(x+dx, y+dy)。所以寻求匹配的问题可化为对下面的式子寻求最小值。或叫做最小化下面式子:

  用积分来表示上述式子,以上式子可等效为:

  这个式子的含义,即找到两副图像中,在W窗体中,I、J的差异。当中I以x-d/2为中心。J以x+d/2为中心,w/2为半径的一个矩形窗体间的差异,好吧,结合我们微积分的知识。函数ε(d)要取得最小值。这个极值点的导数一定为0,即

  

的值为0,由泰勒展开的性质:

能够得到:

于是,问题转化为:

当中:

从而,问题即为:

=>

即其等式可看作为:

当中,Z为一个2*2的矩阵,e为一个2*1的向量,

为了要使d可以得到解。则Z须要满足条件,即Z*Z'矩阵可逆,当中Z'为Z矩阵的转置(ZT)。在普通情况下,角点具有这种特点。


KLT 光流的更多相关文章

  1. 香港科技大学的VINS_MONO初试

    简介 VINS-Mono 是香港科技大学开源的一个VIO,我简单的测试了,发现效果不错.做个简单的笔记,详细的内容等我毕设搞完再弄. 代码主要分为前端(feature tracker),后端(slid ...

  2. pl-svo代码解读

    pl-svo是在svo的基础上结合点和线特征的半直接法视觉里程计 程序启动通过app文件夹下的run_pipeline.cpp主程序启动,其它的函数文件统一放在src文件夹下,我们先从run_pipe ...

  3. Trifo-VIO:Roubst and Efficient Stero Visual Inertial Odometry using Points and Lines论文笔记

    这是2018-IROS上的一篇文章,亮点是作者提出了Lines特征的VIO方案,还有就是提出一个新颖的回环检测,不是用传统的基于优化的方法或者BA,另外作者还发布了一个新的用于VIO的数据集.亮点主要 ...

  4. 代码解读 | VINS 视觉前端

    本文作者是计算机视觉life公众号成员蔡量力,由于格式问题部分内容显示可能有问题,更好的阅读体验,请查看原文链接:代码解读 | VINS 视觉前端 vins前端概述 在搞清楚VINS前端之前,首先要搞 ...

  5. 论文阅读:LIC-Fusion: LiDAR-Inertial-Camera Odometry

    本文提出了一种紧耦合的多传感器(雷达-惯导-相机)融合算法,将IMU测量.稀疏视觉特征.提取的激光点融合.提出的算法在时间和空间上对三个异步传感器进行在线校准,补偿校准发生的变化.贡献在于将检测和追踪 ...

  6. OpenCV图像处理与视频分析详解

    1.OpenCV4环境搭建 VS2017新建一个控制台项目 配置包含目录 配置库目录 配置链接器 配置环境变量 重新启动VS2017 2.第一个图像显示程序 main.cpp #include< ...

  7. 光流和KLT

    一 光流 光流的概念是Gibson在1950年首先提出来的. 它是空间运动物体在观察成像平面上的像素运动的瞬时速度.是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存 ...

  8. 目标跟踪之Lukas-Kanade光流法

    转载自:http://blog.csdn.net/u014568921/article/details/46638557 光流是图像亮度的运动信息描述.光流法计算最初是由Horn和Schunck于19 ...

  9. 目标跟踪之Lukas-Kanade光流法(转)

    光流是图像亮度的运动信息描述.光流法计算最初是由Horn和Schunck于1981年提出的,创造性地将二维速度场与灰度相联系,引入光流约束方程,得到光流计算的基本算法.光流计算基于物体移动的光学特性提 ...

随机推荐

  1. Vuex的全面用法总结

    1. vuex简介 vuex是专门用来管理vue.js应用程序中状态的一个插件.他的作用是将应用中的所有状态都放在一起,集中式来管理.需要声明的是,这里所说的状态指的是vue组件中data里面的属性. ...

  2. jQuery radio 选中提示

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. H5 canvas pc 端米字格 写字板

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. netstat -a 显示出你的计算机当前所开放的所有端口

    netstat -s -e 比较详细的显示你的网络资料,包括TCP.UDP.ICMP 和 IP的统计等 

  5. ALTER FUNCTION - 修改一个函数的定义

    SYNOPSIS ALTER FUNCTION name ( [ type [, ...] ] ) RENAME TO newname DESCRIPTION 描述 ALTER FUNCTION 修改 ...

  6. CAD参数绘制文字(com接口)

    在CAD设计时,需要绘制文字,用户可以设置设置绘制文字的高度等属性. 主要用到函数说明: _DMxDrawX::DrawText 绘制一个单行文字.详细说明如下: 参数 说明 DOUBLE dPosX ...

  7. RN code push自定义弹框

    最近在弄react native的code push热更新问题.开始是用的后台默默更新配置.由于微软服务器速度问题,经常遇到用户一直在下载中问题.而用户也不知道代码需要更新才能使用新功能,影响了正常业 ...

  8. react-native 手势操作和 react-naviagation 组件的手势返回功能的冲突解决

    上篇我们说到过在react-native触摸及手势事件 那么我在项目中遇到的问题是在react-navigation中的子页面,希望保留在ios中的效果:从左侧往右侧滑动为退出该页面. 但是希望我在滑 ...

  9. [模板] Splay

    欠了好久的Splay,以后就它了. 默写真不容易,过几天估计就忘了.. 整个Splay真的精妙,不拖泥带水那种.. 前驱后继之所以不能用rk转到根,是因为这个数不一定存在.. kth中<=老忘记 ...

  10. 在Linux中CSV转换成XLSX

    在linux中,把csv文件转换成excel表格(xlsx或者xls) $ echo -e 'surname,name,age\nCarlo,Smith,23\nJohn,Doe,46\nJane,D ...