转载自:https://blog.csdn.net/qq_41368247/article/details/82562165

光流法理论背景

1.什么是光流

光流(optical flow)是空间运动物体在观察成像平面上的像素运动的瞬时速度。

光流法是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。

通常将二维图像平面特定坐标点上的灰度瞬时变化率定义为光流矢量。

一言以概之:所谓光流就是瞬时速率,在时间间隔很小(比如视频的连续前后两帧之间)时,也等同于目标点的位移

2.光流的物理意义

一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。

当人的眼睛观察运动物体时,物体的景象在人眼的视网膜上形成一系列连续变化的图像,这一系列连续变化的信息不断“流过”视网膜(即图像平面),好像一种光的“流”,故称之为光流。光流表达了图像的变化,由于它包含了目标运动的信息,因此可被观察者用来确定目标的运动情况。

图(1)展示的便是三维空间内物体的运动在二维成像平面上的投影。得到的是一个描述位置变化的二维矢量,但在运动间隔极小的情况下,我们通常将其视为一个描述该点瞬时速度的二维矢量u=(u,v),称为光流矢量。

 图(1) 三维运动在二维平面内的投影

3.光流场

在空间中,运动可以用运动场描述,而在一个图像平面上,物体的运动往往是通过图像序列中不同图像灰度分布的不同体现的,从而,空间中的运动场转移到图像上就表示为光流场(optical flow field)。

光流场是一个二维矢量场,它反映了图像上每一点灰度的变化趋势,可看成是带有灰度的像素点在图像平面上运动而产生的瞬时速度场。它包含的信息即是各像点的瞬时运动速度矢量信息。

研究光流场的目的就是为了从序列图像中近似计算不能直接得到的运动场。光流场在理想情况下,光流场对应于运动场。

图(2)三维空间的矢量场及其在二维平面内的投影

图(3)现实场景的可视化光流场

三言以概之:所谓光流场就是很多光流的集合。

                     当我们计算出了一幅图片中每个图像的光流,就能形成光流场。

                     构建光流场是试图重现现实世界中的运动场,用以运动分析。

光流法基本原理

1.基本假设条件

(1)亮度恒定不变。即同一目标在不同帧间运动时,其亮度不会发生改变。这是基本光流法的假定(所有光流法变种都必须满足),用于得到光流法基本方程;

(2)时间连续或运动是“小运动”。即时间的变化不会引起目标位置的剧烈变化,相邻帧之间位移要比较小。同样也是光流法不可或缺的假定。

2.基本约束方程

考虑一个像素I(x,y,t)在第一帧的光强度(其中t代表其所在的时间维度)。它移动了 (dx,dy)的距离到下一帧,用了dt时间。因为是同一个像素点,依据上文提到的第一个假设我们认为该像素在运动前后的光强度是不变的,即:

将(1)式右端进行泰勒展开,得:

其中ε代表二阶无穷小项,可忽略不计。再将(2)代人(1)后同除dt,可得:

设u,v分别为光流分别为沿X轴与Y轴的速度矢量,得:

分别表示图像中像素点的灰度沿X,Y,T方向的偏导数。

综上,式(3)可以写为:

其中,Ix,Iy,It均可由图像数据求得,而(u,v)即为所求光流矢量。

约束方程只有一个,而方程的未知量有两个,这种情况下无法求得u和v的确切值。这种不确定性称为“孔径问题”。此时需要引入另外的约束条件,从不同的角度引入约束条件,导致了不同光流场计算方法。按照理论基础与数学方法的区别把它们分成四种:基于梯度(微分)的方法、基于匹配的方法、基于能量(频率)的方法、基于相位的方法和神经动力学方法。

3.几种光流估计算法的简介

1) 基于梯度的方法

基于梯度的方法又称为微分法,它是利用时变图像灰度(或其滤波形式)的时空微分(即时空梯度函数)来计算像素的速度矢量。

由于计算简单和较好的结果,该方法得到了广泛应用和研究。典型的代表是Horn-Schunck算法与Lucas-Kanade(LK)算法。

Horn-Schunck算法在光流基本约束方程的基础上附加了全局平滑假设,假设在整个图像上光流的变化是光滑的,即物体运动矢量是平滑的或只是缓慢变化的。

基于此思想,大量的改进算法不断提出。Nagel采用有条件的平滑约束,即通过加权矩阵的控制对梯度进行不同平滑处理;Black和Anandan针对多运动的估计问题,提出了分段平滑的方法。

2) 基于匹配的方法

基于匹配的光流计算方法包括基于特征和区域的两种。

基于特征的方法不断地对目标主要特征进行定位和跟踪,对目标大的运动和亮度变化具有鲁棒性。存在的问题是光流通常很稀疏,而且特征提取和精确匹配也十分困难。

基于区域的方法先对类似的区域进行定位,然后通过相似区域的位移计算光流。这种方法在视频编码中得到了广泛的应用。然而,它计算的光流仍不稠密。另外,这两种方法估计亚像素精度的光流也有困难,计算量很大。

3)基于能量的方法

基于能量的方法又称为基于频率的方法,在使用该类方法的过程中,要获得均匀流场的准确的速度估计,就必须对输入的图像进行时空滤波处理,即对时间和空间的整合,但是这样会降低光流的时间和空间分辨率。基于频率的方法往往会涉及大量的计算,另外,要进行可靠性评价也比较困难。

4)基于相位的方法

基于相位的方法是由Fleet和Jepson提出的,Fleet和Jepson最先提出将相位信息用于光流计算的思想。当我们计算光流的时候,相比亮度信息,图像的相位信息更加可靠,所以利用相位信息获得的光流场具有更好的鲁棒性。基于相位的光流算法的优点是:对图像序列的适用范围较宽,而且速度估计比较精确,但也存在着一些问题:第一,基于相位的模型有一定的合理性,但是有较高的时间复杂性;第二,基于相位的方法通过两帧图像就可以计算出光流,但如果要提高估计精度,就需要花费一定的时间;第三,基于相位的光流计算法对图像序列的时间混叠是比较敏感的。

5)神经动力学方法

神经动力学方法是利用神经网络建立的视觉运动感知的神经动力学模型,它是对生物视觉系统功能与结构比较直接的模拟。

尽管光流计算的神经动力学方法还很不成熟,然而对它的研究却具有极其深远的意义。随着生物视觉研究的不断深入,神经方法无疑会不断完善,也许光流计算乃至计算机视觉的根本出路就在于神经机制的引入。神经网络方法是光流技术的一个发展方向

3.稠密光流与稀疏光流

除了根据原理的不同来区分光流法外,还可以根据所形成的光流场中二维矢量的疏密程度将光流法分为稠密光流与稀疏光流两种。

稠密光流

稠密光流是一种针对图像或指定的某一片区域进行逐点匹配的图像配准方法,它计算图像上所有的点的偏移量,从而形成一个稠密的光流场。通过这个稠密的光流场,可以进行像素级别的图像配准。

Horn-Schunck算法以及基于区域匹配的大多数光流法都属于稠密光流的范畴。

图(4) 基于区域匹配方法生成稠密光流场图例

由于光流矢量稠密,所以其配准后的效果也明显优于稀疏光流配准的效果。但是其副作用也是明显的,由于要计算每个点的偏移量,其计算量也明显较大,时效性较差。

稀疏光流

与稠密光流相反,稀疏光流并不对图像的每个像素点进行逐点计算。它通常需要指定一组点进行跟踪,这组点最好具有某种明显的特性,例如Harris角点等,那么跟踪就会相对稳定和可靠。稀疏跟踪的计算开销比稠密跟踪小得多。

上文提到的基于特征的匹配方法是典型的属于稀疏光流的算法。

图(5) 基于特征匹配方法生成稀疏光流场图例

Lucas-Kanade(LK)光流法

LK光流法于1981年提出,最初是用于求稠密光流的,由于算法易于应用在输入图像的一组点上,而成为求稀疏光流的一种重要方法。

LK光流法在原先的光流法两个基本假设的基础上,增加了一个“空间一致”的假设,即所有的相邻像素有相似的行动。也即在目标像素周围m×m的区域内,每个像素均拥有相同的光流矢量。以此假设解决式  无法求解的问题。

光流法(optical flow)简介相关推荐

  1. 计算机视觉--光流法(optical flow)简介

    光流法理论背景 1.什么是光流 光流(optical flow)是空间运动物体在观察成像平面上的像素运动的瞬时速度. 光流法是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前 ...

  2. 目标追踪——光流法optical flow

    光流法简介 光流 光流法 光流的物理意义 光流场 光流法基本原理 金字塔方法 基于光流的运动目标检测(前景检测)算法 实现原理 光流 光流(optical flow)是空间运动物体在观察成像平面上的像 ...

  3. 光流法 Optical Flow

    最近调研目标跟踪,看到一个光流法,测试了一下它的效果,挺好玩的,这里对找到的资料简单整理总结一下. 对于光流法的介绍,可以参看如下博客http://blog.csdn.net/zouxy09/arti ...

  4. 光流法optical flow

    光流(optical flow),字面意思描述的是图像中像素强度的流动.光流法的目的是根据图像中像素点的灰度值强度变化估计出物体移动速度与方向. 光流法的假设 首先,光流估计指的是利用时间上相邻的两帧 ...

  5. 光流(optical flow) 光流法(optical flow method) 光流场(optical flow field)

    光流是空间运动物体在观测成像面上的像素运动的瞬时速度.光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的"运动",即研究图像灰度在时间上的变化与景象中物 ...

  6. 光流(optical flow)基础概念以及典型算法

    光流(optical flow)基础概念以及典型算法 文章目录 光流(optical flow)基础概念以及典型算法 什么是光流? 一.传统经典光流算法: Lucas-Kanade 二.基于神经网络的 ...

  7. opencv求两张图像光流_光流(optical flow)和openCV中实现

    转载请注明出处! ! ! 光流(optical flow)和openCV中实现 光流的概念: 是Gibson在1950年首先提出来的. 它是空间运动物体在观察成像平面上的像素运动的瞬时速度.是利用图像 ...

  8. 【OpenCV】OpenCV3的第二天——光流法(Optial Flow)运动目标检测

    基于特征点的跟踪算法大致可以分为两个步骤: 1)探测当前帧的特征点: 2)通过当前帧和下一帧灰度比较,估计当前帧特征点在下一帧的位置: 3)过滤位置不变的特征点,余下的点就是目标了. 特征点包括: 1 ...

  9. 光流分析 Optical Flow Lucas-Kanade 算法 DOF Dense Optical Flow

    光流跟踪算法对车位进行跟踪 概念 光流是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相 ...

最新文章

  1. 使用Xcode修改iOS项目工程名和路径名
  2. 开源桌面系统及设计图、下载地址
  3. 单向链表的有关操作(链式存储结构)
  4. sklearn.feature_extraction.text.CountVectorizer 学习
  5. androidsettitle方法_在Android应用程序中,Toolbar.setTitle方法无效-应用程序名称显示为标题...
  6. 一行Java代码实现获取上传文件的后缀名
  7. java 父类 超类_Java超类-java.lang.object
  8. 表的转置 行转列: DECODE(Oracle) 和 CASE WHEN 的异同点
  9. flink 检查点_Flink检查点和恢复
  10. 聊一聊SpringCloudNetflix的五大组件(神兽)
  11. 图书馆管理系统项目思路
  12. 用jquery或js实现三个div自动循环轮播
  13. BZOJ 1066[SCOI2007]蜥蜴
  14. Android 设计模式实战之关于封装计费代码库的策略模式详谈
  15. iP138版 离线iP数据库ip.txt导入Mysql示例
  16. 颈椎病的康复锻炼方法
  17. 利用mammoth.js将doc文档转为html
  18. 计算机编程课程顺序_您可以在2月开始免费在线编程和计算机科学课程
  19. 友盟推送_java后台集成和使用
  20. 自编码器的原始形式和各种变体

热门文章

  1. oracle vm virtualbox 增加硬盘空间,virtualbox增大虚拟磁盘空间的方法
  2. centos7 selinux开启下启动mysql失败:Can‘t change dir to
  3. distinct合并结果集---以及SQL中distinct的用法
  4. C# U8调用OpenAPI
  5. java实现图片放大缩小:
  6. C++ 哈希表基本用法
  7. 远去的传说:安全软件群雄混战史
  8. 树莓派配置自动连接wifi,ip自动发送到163邮箱
  9. 购物管理系统(管理员,客户)
  10. 移动端App开发的三种开发技术对比