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

光流的概念(Optical Flow)

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

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

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

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

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

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

光流的计算方法

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

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

其中:

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

Lucas-Kanade 法

为了将光流估计进行建模,Lucas-Kanade做了两个重要的假设,分别是亮度不变假设和邻域光流相似假设。

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

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

深度学习方法

ICCV2015提出的FlowNet是最早使用深度学习CNN解决光流估计问题的方法,并且在CVPR2017,同一团队提出了改进版本FlowNet2.0。FlowNet2.0 是2015年以来光流估计邻域引用最高的论文。

3.2.1 FlowNet

作者尝试使用深度学习End-to-End的网络模型解决光流估计问题,如图3-2-1,该模型的输入为待估计光流的两张图像,输出即为图像每个像素点的光流。我们从Loss的设计,训练数据集和网络设计来分析FlowNet。

图3-2-1 深度学习End-to-End 光流估计模型

对于Loss的设计,如果给定每个像素groundtruth的光流,那么对于每个像素,loss可以定义为预测的光流(2维向量)和groundtruth之间的欧式距离,称这种误差为EPE(End-Point-Error),如图

图3-2-2 End Point Error

对于训练数据集,由于稠密光流的groundtruth为图像每个像素的光流值,人工标注光流值几乎不可能。因此,作者设计了一种生成的方式,得到包括大量样本的训练数据集FlyingChairs。其生成方式为对图像做仿射变换生成对应的图像。为了模拟图像中存在多种运动,比如相机在移动,同时图像中的人或物体也在移动。作者将虚拟的椅子叠加到背景图像中,并且背景图和椅子使用不同的仿射变换得到对应的另一张图,如图3-2-3。

FlyingChairs数据集生成

Optical Flow Estimation using a Spatial Pyramid Network-Spynet

摘要:我们通过结合深度学习和经典空间金字塔结构的方式来计算光流。通过使用每个金字塔级别的光流评估warp图像和更新光流,这种方法以一个粗到精的方式评估图像中的大运动。不同于在每个金字塔层级最小化对象函数。我们在每个层级训练网络,以计算光流更新。不像最近的FlowNet光流网络,本网络不需要处理大运动,由网络中的金字塔层级处理大运动。这有几个优点:(1)在模型参数上我们的SpyNet更简单,比FlowNet小96%,这使得网络在嵌入式应用领域非常高效。(2)因为每个层级的光流比较小(小于一个pixel),对一对warp图像应用卷积方法是合适的。(3)不像FlowNet,本网络学习的卷积滤波器与传统的时空滤波器相似,这让我们能够洞察到网络的内部以及如何提升它。在多个数据集上的结果显示我们的方法比FlowNet更加高效。

paper地址:https://arxiv.org/abs/1611.00850

主要贡献点
(1)结合深度学习与传统由粗到精(coarse-to-fine)金字塔结构评估光流;

  (2) 提出一个新的模型SpyNet,比FlowNet更快,参数量少96%;

(3)在公共数据集(Sintel, KITTI和MiddleBurry)上,SPyNet实现了比FlowNet更低的错误率。
————————————————
版权声明:本文为CSDN博主「善plusplus」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010087277/article/details/111593541


作者:zhenhuic
链接:https://www.jianshu.com/p/e9bf8c11091a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: bounding box是指在图像中定位物体或区域的矩形框。而是指描述图像中像素在不同时间或帧之间的运动向量。 将bounding box作为optical flow输入可以通过以下步骤实现: 首先,根据任务的需求,在图像中选择目标物体或区域,并用bounding box进行标注。 然后,利用计算机视觉算法,例如基于深度学习的目标检测算法,对图像中的目标进行检测和定位。该算法将输入图像和bounding box作为输入,并输出目标检测结果。 接下来,对于每一帧图像中的bounding box,利用算法计算目标区域的运动向量。算法能够分析相邻帧之间的像素变化,并计算出物体在图像中的运动情况。 最后,根据算法计算出的运动向量,可以进一步分析目标物体的运动轨迹、速度和加速度等运动信息。这些信息可以应用于许多计算机视觉任务,例如运动跟踪、行为分析视频压缩等。 通过将bounding box作为optical flow输入,可以更加准确地分析目标物体的运动情况,并为后续的任务提供更丰富的信息。这种方法在许多视觉任务中具有广泛的应用,例如视频监控、自动驾驶和虚拟现实等领域。 ### 回答2: bounding box(边界框)在计算机视觉领域中常用于表示物体在图像中的位置和范围。而optical flow)是一种用于估计图像中像素运动的技术。 将bounding box作为optical flow的输入意味着我们希望通过来估计给定物体在图像中的运动。通过监测bounding box的运动,我们可以了解物体的位移、速度和方向等运动信息。 在这种方法中,首先需要使用目标检测算法或手工标注的方式得到bounding box的位置。然后,我们可以使用算法对bounding box中的像素进行跟踪和分析,以获取物体的运动信息。 使用bounding box作为optical flow输入的好处是,只需对感兴趣的区域进行计算,减少了计算量,提高了计算效率。而且,通过对物体运动的分析,我们可以获得更精确的物体运动信息,有助于在视觉跟踪和行为分析等领域中的应用。 然而,bounding box作为optical flow输入也存在一些挑战和限制。首先,bounding box的准确性对的计算结果有很大的影响,如果bounding box的位置不准确,可能会导致计算出的运动结果不准确。此外,如果物体发生较大的旋转、遮挡或形变等情况,bounding box的边界可能无法完整地包围物体,从而影响的计算和分析结果。 综上所述,bounding box作为optical flow的输入可以用来估计给定物体在图像中的运动。但在使用时需要注意bounding box的准确性和在特定情况下的局限性。 ### 回答3: bounding box作为optical flow的输入,是指在目标跟踪或目标检测任务中,使用bounding box来框定目标区域,并将该区域作为输入,进行计算。 是一种用于分析图像中像素运动的技术。它能够通过比较相邻帧中的像素位置变化,推测像素的运动方向和速度。为了准确地计算,需要选择合适的输入区域。而bounding box提供了一个有效的方式来定义并限制计算的区域,以便准确地追踪目标的运动。 具体而言,使用bounding box作为的输入可以带来以下优势: 1. 限定区域:bounding box可以将计算限定在目标区域内,从而排除其他背景区域的干扰。这样可以提高的计算精度和效率。 2. 快速目标跟踪:可以用于目标跟踪任务,而bounding box提供了目标的初始位置信息。通过计算,可以根据目标的运动轨迹对目标进行跟踪,并及时更新bounding box的位置。 3. 目标检测准确性:可以用于目标检测任务,通过计算不同帧之间的变化,可以检测出目标的运动。而bounding box则可以用来获取目标在当前帧中的位置,从而进一步提高目标检测的准确性。 总之,使用bounding box作为optical flow的输入,可以更好地限定计算的区域,提高的计算精度和效率,同时也可以用于目标跟踪和目标检测任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值