光流(Optical Flow)

1.基本原理
光流法是利用图像序列中的像素在时间域上的变化、相邻帧之间的相关性来找到的上一帧跟当前帧间存在的对应关系,计算出相邻帧之间物体的运动信息的一种方法。

  • 基本假设
    亮度不变假设:同一个空间点的像素灰度值,在各个图像中是固定不变的。
    微小运动假设:同一空间点在连续帧间的运动较小

  • 数学表达
    光流(Optical Flow)_第1张图片
    从不同的角度引入约束条件,导致了不同光流场计算方法。按照理论基础与数学方法的区别把它们分成四种:基于梯度的方法、基于匹配的方法、基于相位的方法和神经动力学方法。
    梯度法:
    梯度法又称为微分法,即对图像上饿各个像素点的亮度值分别进行时域和空域的微分处理,即可得到每个像素点的速度情况。基于梯度法,Horn和Schunck提出全局平滑假设,也即HS算法;Lucas和Kanade提出LK提出局部平滑假设,也即LK算法。
    匹配法:
    基于匹配的光流计算方法包括基于特征和区域的两种。
    基于特征的方法不断地对目标主要特征进行定位和跟踪,对目标大的运动和亮度变化具有鲁棒性。存在的问题是光流通常很稀疏,而且特征提取和精确匹配也十分困难。
    基于区域的方法先对类似的区域进行定位,然后通过相似区域的位移计算光流。这种方法在视频编码中得到了广泛的应用。然而,它计算的光流仍不稠密。另外,这两种方法估计亚像素精度的光流也有困难,计算量很大。
    相位法:
    基于相位的方法是由Fleet和Jepson提出的,Fleet和Jepson最先提出将相位信息用于光流计算的思想。当我们计算光流的时候,相比亮度信息,图像的相位信息更加可靠,所以利用相位信息获得的光流场具有更好的鲁棒性。基于相位的光流算法的优点是:对图像序列的适用范围较宽,而且速度估计比较精确,但也存在着一些问题:第一,基于相位的模型有一定的合理性,但是有较高的时间复杂性;第二,基于相位的方法通过两帧图像就可以计算出光流,但如果要提高估计精度,就需要花费一定的时间;第三,基于相位的光流计算法对图像序列的时间混叠是比较敏感的。
    神经动力学法:
    神经动力学方法通过神经网络实现对光强的自适应、识别并提高边缘的对比度和计算边缘的运动速度。首先,通过反馈作用使得神经元之间具有相互的抑制作用,进而实现光强的自适应目的;然后利用一个周边反馈网络通过周边信号的反馈使得边缘信息得以强化;最后,求解动力学方程完成光流计算。
    由于此方法是通过周边信号的反馈起作用的,因此他只能得到物体边缘的光流信息,而无法对整个运动物体的光流场进行捕捉,但其运行速度较快。
    2.光流场的分类

  • 稠密光流

稠密光流是一种针对图像或指定的某一片区域进行逐点匹配的图像配准方法,它计算图像上所有的点的偏移量,从而形成一个稠密的光流场。通过这个稠密的光流场,可以进行像素级别的图像配准。Horn-Schunck算法以及基于区域匹配的大多数光流法都属于稠密光流的范畴。但是其计算量较大,因此实时性较差。

  • 稀疏光流

与稠密光流相反,稀疏光流并不对图像的每个像素点进行逐点计算。它通常需要指定一组点进行跟踪,这组点最好具有某种明显的特性,例如Harris角点等,那么跟踪就会相对稳定和可靠。稀疏跟踪的计算开销比稠密跟踪小得多。
稀疏光流法中LK算法是最为常用的一种。

你可能感兴趣的:(OpenCV)