光流
将连续帧之间每个像素的表观运动表示为向量场的技术。是视频分析、运动检测和视频稳定的基础技术。
光流估计两帧或多帧时间连续图像之间每个像素的 2D 运动向量,捕获场景中物体和相机的运动方式。它是视频分析的基本构建模块,提供逐像素或逐特征的运动信息供下游算法用于跟踪、分割和预测。
光流计算基于亮度恒定假设:像素的强度在短时间间隔内的帧间不变。此假设产生光流约束方程 Ix*u + Iy*v + It = 0,其中 Ix、Iy 是空间梯度,It 是时间梯度,(u, v) 是待估计的流向量。
- Lucas-Kanade 方法:假设局部窗口内流动均匀,通过最小二乘法求解。在跟踪特征点处产生稀疏光流。在 OpenCV 中实现为
cv2.calcOpticalFlowPyrLK(),是实时点跟踪的标准方法 - Farneback 方法:用二次多项式近似每个像素的邻域以估计稠密光流场。
cv2.calcOpticalFlowFarneback()为帧中每个像素返回流向量 - 深度学习方法:FlowNet、PWC-Net 和 RAFT 等基于 CNN 和 Transformer 的方法在精度上显著超越经典方法。RAFT 使用相关体积的迭代精修,在 Sintel 和 KITTI 基准上达到最先进水平
应用涵盖运动检测 (结合背景减除)、视频稳定 (补偿相机抖动)、帧插值 (生成慢动作的中间帧)、动作识别和自动驾驶 (估计周围运动)。实时部署利用 GPU 实现和针对推理速度优化的轻量架构。