美文网首页
光流(Optical flow)-视频分析基础概念

光流(Optical flow)-视频分析基础概念

作者: zhenhuic | 来源:发表于2019-02-02 13:24 被阅读0次

光流的概念(Optical Flow)

光流是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。考虑下图(图片来自维基百科):

图中表示一个小球在连续5帧图像中的移动,箭头则表示小球的位移矢量。简单来说,光流是空间运动物体在观测成像平面上的像素运动的“瞬时速度”,光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的“运动”,研究光流场的目的就是为了从图片序列中近似得到不能直接得到的现实中的运动场。光流应用于诸多领域:

  • 基于运动的三维重建
  • 视频压缩
  • 视频稳像
  • 目标跟踪与行为识别等

在介绍光流的计算法之前有必要了解:光流之所以生效是依赖于这几个假设:

  1. 物体的像素强度不会在连续帧之间改变;
  2. 一张图像中相邻的像素具有相似的运动。

其实也很好理解,如果不满足以上条件,那么也找不到该像素在下一帧的位置,自然也无法计算出它的运动。

光流的计算方法

假设第一帧图像中的像素 I(x, y, t) 在时间 dt 后移动到第二帧图像的 (x+dx, y+dy) 处。根据上述第一条假设:灰度值不变,我们可以得到:

I(x, y, t) = I(x+dx, y+dy, t+dt)

对等号右侧进行泰勒级数展开,消去相同项,两边都除以 dt ,得到如下方程:

f_xu + f_yv +f_t = 0

其中:

f_x = \frac{\partial f}{\partial x};f_y = \frac{\partial f}{\partial y} \\ u = \frac{\partial x}{\partial t}; v = \frac{\partial y}{\partial t}

上面的等式叫做光流方程。其中 fxfy 的梯度,同样 ft 是时间方向的梯度。但(u, v) 是不知道的。我们不能在一个等式中求解两个未知数。有几个方法可以帮我们解决这个问题,其中的一个是 Lucas-Kanade 法 。

Lucas-Kanade 法

这里就要用到上面提到的第二个假设条件,领域内的所有像素点具有相同的运动。Lucas-Kanade法就是利用一个3x3的领域中的9个像素点具有相同的运动,就可以得到9个点的光流方程(即上述公式),用这些方程来求得(u, v) 这两个未知数,显然这是个约束条件过多的方程组,不能解得精确解,一个好的解决方法就是使用最小二乘来拟合。求解过程:

\left[\begin{matrix} u \\ v\end{matrix} \right] = \left[\begin{matrix} \sum_i f^2_{x_i} \ \sum_i f_{x_i} f_{y_i} \\ \sum_i f_{x_i} f_{y_i} \ \sum_i f^2_{y_i} \end{matrix} \right]^{-1} \left[\begin{matrix} -\sum_i f_{x_i} f_{t_i} \\ -\sum_i f_{x_i} f_{t_i} \end{matrix} \right]

这样我们跟踪一些点就能得到这些点的光流向量,但是这里还存在尺度空间的问题,简单来讲,直到现在我们还只是处理一些很小的运动,如果是大的运动那该怎么办?图像金字塔。在图像金字塔顶层,小的运动被移除,大的运动转换成了小的运动,这样就能跟踪到了原本大的运动,重复计算图像金字塔不同层的图像的光流,我们就得到了在不同尺度空间上的光流。

参考文献

维基百科Optical flow page
OpenCV-Python官方教材
https://blog.csdn.net/zouxy09/article/details/8683859

相关文章

  • 光流(Optical flow)-视频分析基础概念

    光流的概念(Optical Flow) 光流是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像...

  • Optical Flow Tracking光流追踪

    输入:图片序列文件夹地址输出:optical flow光流视频

  • 光流optical flow基本原理与实现

    光流optical flow基本原理与实现转载 光流(optical flow)是什么呢?名字很专业,感觉很陌生,...

  • 什么是optical flow

    1、optical flow (光流) 表示的是相邻两帧图像中每个像素的运动速度和运动方向。第t帧的时候A点的位置...

  • 使用光流法生成渐变动画

    使用光流法(Optical Flow)可以获得两张图的变化场,进而可以被用于生成两张图片的渐变动画。光流法是一种全...

  • Optical Flow

    原课程链接:https://www.cc.gatech.edu/~hays/compvision/维基百科定义:h...

  • Optical Flow介绍与代码实现

    Optical Flow介绍与代码实现 介绍 首先我们先来介绍一下Optical Flow是个什么东西, 在浏览器...

  • 稠密光流Optical Flow算法总结(附opencv pyt

    这篇文章是对Opencv 3.4.2中所有密集光流的算法进行总结。部分算法在opencv-contrib中提供,所...

  • 光流概念基础

    真实的三维空间中,描述物体运动状态的物理概念是运动场。三维空间中的每一个点,经过某段时间的运动之后会到达一个新的位...

  • Optical flow equation

    光流是指空间运动物体像素运动的瞬时速度,通过比较两帧之间同一个像素点的变化情况来推测物体运动情况的一种方法,因此如...

网友评论

      本文标题:光流(Optical flow)-视频分析基础概念

      本文链接:https://www.haomeiwen.com/subject/ewkodqtx.html