光流 (optical flow) 反映了由于时间间隔 dt 中的运动而导致的图像变化,光流场是跨 2D 图像的 对象点的 3D运动 的速度场 (velocity field)。
光流是像素级图像中亮度模式 (brightness pattern) 的运动。理想情况下,光流 = 运动场 (motion field)。
要这么做,是基于以下关键假设:
光流:速度 Velocities(u, v),用其替代x, y的变化而代表移动。
假设两个图像中同样点的亮度保持不变:
假设小幅度动作: (RHS的泰勒展开至一阶)
最终得到约束等式
注意: (u,v)必须位于一条直线上。我们可以使用梯度运算符进行计算。但是,(u,v) 不能在此约束下唯一地找到!
约束表示:确定了由矢量(,)表示的梯度方向上的流分量 (flow component)。平行于边缘 parallel to an edge(即垂直于梯度方向 perpendicular to the gradient direction)的流分量未知。
接着,公式化光流中的约束误差。
还有其他约束需要被考虑,即平滑度约束 (smoothness constraine),通常,运动场在图像中平滑变化。因此,我们要惩罚偏离平滑度的问题。
我们需要在每个图像点中找到最小化以下公式的 (u, v):
如果一个物体移动大大多于一个像素点,那么光流法很有可能检测不到。我们的一个解决方法是降低画面分辨率 (reduce the resolution)。
粗粒度到细粒度的光流估计(Coarse-to-fine Optical Flow Estimation)
该方法将图像分割 (break image up) 为多个方块,并估计每个方块的转变(estimate translation)。
每个块一个运动矢量(Motion Vector - MV), (u,v)。 MV搜索通常仅限于较小的近邻 (small immediate neighbourhood) - 水平和垂直位移 (horizontal and vertical displacement) 范围 [-p,p]。 这使得搜索窗口大小为 (2p + 1) x (2p + 1)
两个块之间的差异通过其平均绝对差异 (Mean Absolute Difference - MAD) 进行衡量。
ME搜索的目标是找到一个向量(i, j)作为运动向量 MV = (u, v),这样使得MAD(i, j)最小。
按顺序搜索在参考帧中的整个 (2p + 1) x (2p + 1) 窗口 (也称为完全搜索 full search)。将以窗口内每个位置为中心的块与目标帧中的块逐像素进行比较,然后计算其各自的MAD。提供最少 MAD 的向量 (i,j) 被指定为目标帧中该块的MV (u,v)。
顺序搜索的运算成本很高 - 假设每个像素比较都需要操作 (求和,绝对值,加法), 则获得单个块的运动矢量的成本为 (2p + 1) x (2p + 1) x N2 x 3 => O(p2N2)
对数搜索: 一种计算不那么昂贵的版本,虽然次优,但通常仍然有效。
运动向量的2D对数搜索过程需要多次迭代,类似于二分搜索 (binary search)。最初,搜索窗口(search window)只有9个位置用作基于MAD的搜索种子 (seeds for a MAD-based search),其被标记成1。
在找到产生最小MAD (minimum MAD) 的区域之后,将新的搜索区域的中心移到该区域,并将步长 step-size(偏移 offset)减少到一半。
在下次迭代中,将九个新位置标记为2,并以此类推。
如图,MV是从最中间的被标记为1的点指向右上角标记为3的点的向量。
该搜索可以受益于多层 (多分辨率) 方法 (hierarchical/multiresolution approach),其中可以从分辨率大大降低的图像 (image with a significantly reduced resolution) 中获得运动矢量的初始估计。
三级分层搜索 (three-level hierarchical search),其中原始图像位于级别0 (Level 0),通过从先前级别下采样2倍 (down-sampling by a factor of 2) 来获得级别1和级别2的图像,并在级别2进行初始搜索。
由于块的大小较小,并且p也可以按比例缩小,因此所需的操作次数大大减少。
相机运动
每个像素在6个全局未知数中提供1个线性约束。
一组 (> 6) 关键点上的最小二乘最小化。
该估计方式用多组重叠图层 (overlapping layers) 表示运动图像。层按照深度排序 (ordered in depth) 并相互遮挡 (occlude each other)。每层代表一个运动物体。
每一层包含三张图(three maps):
运动通常是四个基本元素的某种组合:
四个基本运动的光流模式 (optical flow pattern)
如果平移深度不是恒定的,则光流矢量不平行,并且其方向只有一个扩展焦点(focus of expansion - FOE)。
如果平移深度恒定 (constant depth),则FOE处于无限远。
如果图像中存在几个独立移动的对象,则每个运动都有其自己的FOE,如下图所示,其中摄像机在汽车中朝着道路上其他正在驶近的汽车移动。