运动估计
光流法 (Optical Flow)
光流 (optical flow) 反映了由于时间间隔 dt 中的运动而导致的图像变化,光流场是跨 2D 图像的 对象点的 3D运动 的速度场 (velocity field)。
光流是像素级图像中亮度模式 (brightness pattern) 的运动。理想情况下,光流 = 运动场 (motion field)。
限制
但在以下情况下,光流不等于运动场
- 运动场存在但是没有光流产生。
- 没有运动场但是光照改变。
Horn&Schunck 全局方法 (global method)
如何估计从图像H到图像I中的像素运动?
- 查找像素对应 (pixel correspondences)
- 给定 H 中的像素,寻找 I 中相同颜色的附近像素 (nearby pixel of the same color)。
要这么做,是基于以下关键假设:
- 颜色恒定(color constancy): 图像 H 中的一个点 看起来和 图像 I 相同。对于灰度图来说,则是亮度恒定。
- 小幅度动作(small motion): 点不会移动的太远。
光流法约束等式 (Constrain Equation)
光流:速度 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)
全局方法和局部方法的比较
全局方法
- 如 Horn & Schunk 方法
- 全局方法使用全局约束,通常是平滑正则项(smoothing regularization term)。
- 平滑假设 (smooth assumption) 不适用于移动边界 (moving boundary),深度不连续性 (depth discontinuities)。
- 错误传播 (Error Propagation)
局部方法
- 如 Lucas & Kanade 方法
- 没有全局术语
- 将图像分为保持平滑假设的小区域
- 然而,在具有小的或没有空间梯度 (no spatial gradient) 的区域中的光流的估计成为不适定的问题(ill-pose problem)。
基于块的运动场 (Block-based Motion Field)
该方法将图像分割 (break image up) 为多个方块,并估计每个方块的转变(estimate translation)。
动作估计 (Motion Estimation - ME)
每个块一个运动矢量(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)最小。
动作估计算法
顺序或完全搜索 (Sequential or Full Search)
按顺序搜索在参考帧中的整个 (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 Logarithmic Search)
对数搜索: 一种计算不那么昂贵的版本,虽然次优,但通常仍然有效。
运动向量的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 Search)
该搜索可以受益于多层 (多分辨率) 方法 (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也可以按比例缩小,因此所需的操作次数大大减少。
三个方法运算时间对比
全局运动估计 (Global Motion Estimation)
相机运动
- 放大/缩小 (Zooming - in/out)
- 平移 (panning): 水平移动相机
- 倾斜 (tilting): 垂直移动相机
- Dolly: 前后移动整个相机
- Truck: 与小推车一样,只能从左向右移动相机
- 底座 (Pedestal): 将相机固定在一个位置时上下垂直移动相机
2D坐标转换 (2D Coordinate Transformations)
仿射运动模型 (Affine Motion Model)
每个像素在6个全局未知数中提供1个线性约束。
一组 (> 6) 关键点上的最小二乘最小化。
层运动估计 (Layer Motion Estimation)
该估计方式用多组重叠图层 (overlapping layers) 表示运动图像。层按照深度排序 (ordered in depth) 并相互遮挡 (occlude each other)。每层代表一个运动物体。
每一层包含三张图(three maps):
- 强度图 intensity map (或纹理图 texture map)
- Alpha图 (每个点的不透明度 opacity)
- 速度图 velocity map (随时间弯曲 warping over time)
运动分析中的运动场 (Motion Fields in Motion Analysis)
运动通常是四个基本元素的某种组合:
- 与相机保持恒定距离的平移 (translation at constant)。
- 相对于相机的深度平移(translation in depth)。
- 绕相机光轴 (camera optical axis) 以恒定距离旋转 (rotation at distance)。
- 垂直于相机光轴 (perpendicular to the camera optical axis) 的平面物体的旋转 (rotation of a planner object)。
四个基本运动的光流模式 (optical flow pattern)
- 一组平行运动矢量 (parallel motion vectors)。
- 一组具有共同扩展重点的矢量 (vectors having a common focus of expansion)。
- 一组同心运动矢量 (concentric motion vectors)。
- 从直线段开始的一组或多组矢量 (vectors starting from straight line segments)。
如果平移深度不是恒定的,则光流矢量不平行,并且其方向只有一个扩展焦点(focus of expansion - FOE)。
如果平移深度恒定 (constant depth),则FOE处于无限远。
如果图像中存在几个独立移动的对象,则每个运动都有其自己的FOE,如下图所示,其中摄像机在汽车中朝着道路上其他正在驶近的汽车移动。
应用
- 相互速度(Mutual Velocity):在运动的相机和运动的物体之间的相互速度。
- 运动深度或结构(Structure From Motion - SFM):从移动物体到摄像机的当前距离
- 碰撞预测 (Coliision Prediction):机器人与场景对象之间的潜在碰撞
- 图像对齐/配准 (Image Alignment/Regisration)
全局运动应用 (Global Motion Application)
- 视频稳定 (Video Stablization)
- 运动补偿 (Global motion compensation - GMC)