光流场定义

场景中景物的运动会导致运动期间所获得的图像中景物处在不同的相对位置,这种位置的差别可以称之为视差,它对应景物运动反应在图像上的位移矢量。如果用视差除以时差,就得到速度矢量。一幅图像所有速度矢量构成一个矢量场,在很多情况下也可称为光流场

利用图像差可以获得运动轨迹,利用光流不能获得运动轨迹,但可以获得对图像有用的信息。光流分析可以用于解决各种运动问题——摄像机静止目标运动、摄像机运动目标静止、两者都运动。光流场刻画了物体运动的速度大小及方向,二维光流场包含了运动速度信息和时间相干信息。

稀疏光流与稠密光流

稀疏光流只计算某些特征明显的像素点的运动。稀疏光流估计最经典的算法是Lucas-Kanade method (KL)。
稠密光流计算图像上所有像素点的运动。稠密光流是 Farneback。
下图中作图为稀疏光流,右图为稠密光流。

怎么看稠密光流图

20230412205202
上图中左图为第1帧图像,中间为第二帧图像,右图为第三帧图像。
在光流图中,不同颜色表示不同的运动方向深浅表示运动的速度。其参考图如下所示:
20230412205322
所以可以知道视频中的右边米白色沙发大概是向右上角做平移。

中间流与双向流

视频插帧的目标是在两个相邻的视频帧 $I_{0}$ 和 $I_{1}$ 之间,生成中间时刻的视频帧 $I_{t} (0 < t < 1)$ 。在模型训练阶段,我们有 $I_{t}$ 的数据。
20230412205525

双向流

其中,我们令$I_{0}$到$I_{1}$的光流为$F_{0\rightarrow1}$,令$I_{1}$到$I_{0}$的光流为$F_{1\rightarrow0}$。$F_{0\rightarrow1}$和$F_{1\rightarrow0}$则被我们称之为双向流,即第一张图到第二张图的光流和第二张图到第一张图的光流。

中间流

假设我们现在已经有了中间插值的这张图片$I_{t}$,我们计算$I_{t}$到$I_{1}$的光流记为$F_{t\rightarrow1}$,计算$I_{t}$到$I_{0}$的光流记为$F_{t\rightarrow0}$,则$F_{t\rightarrow1}$和$F_{t\rightarrow0}$被我们称之为中间流,即中间帧图像到两边帧图像的光流。

光流估计插帧任务的常用方法

首先,估计双向光流,分别用$F_{0\rightarrow1}$和$F_{1\rightarrow0}$表示。为合成中间帧,有两种常见的策略:

  • 第一种策略可以应用前向变形,基于$F_{0\rightarrow1}$变形$I_{0}$并且基于$F_{1\rightarrow0}$变形$I_{1}$,然而前向变形可能导致变形图像出现“洞”;
  • 第二种策略是先近似中间流,即$F_{t\rightarrow1}$和$F_{t\rightarrow0}$,然后应用后向变形对输入帧采样,而为了近似中间流,可以从$F_{0\rightarrow1}$和$F_{1\rightarrow0}$ 中的相同网格坐标借用光流矢量,或者聚合通过同一位置的光流向量。