三个假设条件

  • 亮度恒定
    像素点移动前后亮度值不变
    第一帧的像素$I(x,y,t)$,在$dt$时间内移动了$(dx,dy)$的距离,因为像素点不变且亮度不变,所以
    $$
    I(x,y,t)=I(x+dx,y+dy,t+dt) \tag{1}
    $$
  • 短距离移动

    [!note] 空间一致性 KLT法
    周围的像素点都保持相同的移动距离

光流法基本原理

基本约束方程

对(1)式右端进行泰勒展开,得:
$$
I(x+dx,y+dy,t+dt)=I(x,y,z)+\frac{\partial I}{\partial x}dx+\frac{\partial I}{\partial y}dy+\frac{\partial I}{\partial t}dt+\varepsilon \tag{2}
$$
其中,$\varepsilon$代表二阶无穷小项,可忽略不计。将(2)带入(1)都同除$dt$,可得:
$$
\frac{\partial I}{\partial x}\frac{d x}{d t}+\frac{\partial I}{\partial y}\frac{dy}{d t}+\frac{\partial I}{\partial t}\frac{d t}{d t}=0 \tag{3}
$$
设$u,v$分别为光流沿$x$轴,$y$轴的速度向量,得:
$$
u=\frac{dx}{dt},v=\frac{dy}{dt} \tag{4}
$$
令$I_x=\frac{\partial I}{\partial x},I_y=\frac{\partial I}{\partial y},I_t=\frac{\partial I}{\partial t}$分别为图像中像素点的灰度沿$x,y,t$方向的偏导数。
综上,式(3)可以写为:
$$
I_xu+I_yv+I_t=0 \tag{5}
$$
其中,$I_x,I_y,I_t$均可由图像数据求得,而$(u,v)$即为所求光流矢量。

约束方程只有一个,而方程的未知量有两个,这种情况下无法求得u和v的确切值。此时需要引入另外的约束条件,从不同的角度引入约束条件,导致了不同光流场计算方法。按照理论基础与数学方法的区别把它们分成5种:==基于梯度(微分)的方法==、==基于匹配的方法==、==基于能量(频率)的方法==、==基于相位的方法==和==神经动力学方法==。

基于梯度的方法

基于梯度的方法又称为微分法,它是利用时变图像灰度(或其滤波形式)的时空微分(即时空梯度函数)来计算像素的速度矢量。
由于计算简单和较好的结果,该方法得到了广泛应用和研究。典型的代表是Horn-Schunck算法与Lucas-Kanade(LK)算法。
Horn-Schunck算法在光流基本约束方程的基础上附加了==全局平滑假设==,假设在整个图像上光流的变化是光滑的,即物体运动矢量是平滑的或只是缓慢变化的。
基于此思想,大量的改进算法不断提出 。Nagel采用有条件的平滑约束,即通过加权矩阵的控制对梯度进行不同平滑处理;Black和Anandan针对多运动的估计问题,提出了分段平滑的方法。

基于匹配的方法

==基于匹配的光流计算方法包括基于特征和区域的两种。==
基于特征的方法不断地对目标主要特征进行定位和跟踪,对目标大的运动和亮度变化具有鲁棒性。存在的问题是光流通常很稀疏,而且特征提取和精确匹配也十分困难。
基于区域的方法先对类似的区域进行定位,然后通过相似区域的位移计算光流。这种方法在视频编码中得到了广泛的应用。然而,它计算的光流仍不稠密。另外,这两种方法估计亚像素精度的光流也有困难,计算量很大。

基于能量的方法

基于能量的方法又称为基于频率的方法,在使用该类方法的过程中,要获得均匀流场的准确的速度估计,就必须对输入的图像进行时空滤波处理,即对时间和空间的整合,但是这样会降低光流的时间和空间分辨率。基于频率的方法往往会涉及大量的计算,另外,要进行可靠性评价也比较困难。

基于相位的方法

基于相位的方法是由Fleet和Jepson提出的,Fleet和Jepson最先提出将相位信息用于光流计算的思想。当我们计算光流的时候,相比亮度信息,图像的相位信息更加可靠,所以利用相位信息获得的光流场具有更好的鲁棒性。
基于相位的光流算法的==优点==是:对图像序列的适用范围较宽,而且速度估计比较精确,但也存在着一些问题:

  • 基于相位的模型有一定的合理性,但是有较高的时间复杂性;
  • 基于相位的方法通过两帧图像就可以计算出光流,但如果要提高估计精度,就需要花费一定的时间;
  • 基于相位的光流计算法对图像序列的时间混叠是比较敏感的。

神经动力学方法

神经动力学方法是利用神经网络建立的视觉运动感知的神经动力学模型,它是对生物视觉系统功能与结构比较直接的模拟。
尽管光流计算的神经动力学方法还很不成熟,然而对它的研究却具有极其深远的意义。随着生物视觉研究的不断深入,神经方法无疑会不断完善,也许光流计算乃至计算机视觉的根本出路就在于神经机制的引入。神经网络方法是光流技术的一个发展方向。

稠密光流与稀疏光流

除了根据原理的不同来区分光流法外,还可以根据所形成的光流场中二维矢量的疏密程度将光流法分为稠密光流与稀疏光流两种。

稠密光流

稠密光流是一种针对图像或指定的某一片区域进行==逐点==匹配的图像配准方法,它==计算图像上所有的点的偏移量==,从而形成一个稠密的光流场。通过这个稠密的光流场,可以进行像素级别的图像配准。
Horn-Schunck算法以及基于区域匹配的大多数光流法都属于稠密光流的范畴。
由于光流矢量稠密,所以其配准后的效果也明显优于稀疏光流配准的效果。但是其副作用也是明显的,由于要计算每个点的偏移量,其计算量也明显较大,时效性较差。

稀疏光流

与稠密光流相反,稀疏光流并不对图像的每个像素点进行逐点计算。它通常需要==指定一组点进行跟踪==,这组点最好具有某种明显的特性,例如Harris角点等,那么跟踪就会相对稳定和可靠。稀疏跟踪的计算开销比稠密跟踪小得多。
上文提到的基于特征的匹配方法是典型的属于稀疏光流的算法。

KLT光流法

KLT光流法在原先的光流法两个基本假设的基础上,增加了一个“==空间一致”的假设==,即所有的相邻像素有相似的行动。也即在目标像素周围m×m的区域内,每个像素均拥有相同的光流矢量。以此解决式(5)无法求解的问题。
假设流$(V_x,V_y,V_z)$在一个大小为$m\times m \times m$的小窗中时一个常数,那么从像素$1,2,\cdots,n=m^3$中可以得到下列一组方程:
$$
\begin{cases} I_{x_1}V_x + I_{y_1}V_y + I_{z_1}V_z = -I_{t_1} \ I_{x_2}V_x + I_{y_2}V_y + I_{z_2}V_z = -I_{t_2} \ \vdots \ I_{x_n}V_x + I_{y_n}V_y + I_{z_n}V_z = -I_{t_n} \end{cases} \tag{6}
$$
改为矩阵形式表示:
$$
\begin{bmatrix} I_{x1} & I_{y1} & I_{z1}\ I_{x2} & I_{y2} & I_{z2}\ \vdots & \vdots & \vdots\ I_{xn} & I_{yn} & I_{zn} \end{bmatrix} \begin{bmatrix} V_x\ V_y\ V_z \end{bmatrix} = \begin{bmatrix} -I_{t1}\ -I_{t2}\ \vdots\ -I_{tn} \end{bmatrix} \tag{7}
$$
记作:
$$
A\vec{v} = -\boldsymbol{b} \tag{8}
$$
为了解决这个超定问题,采用[[最小二乘法解超定方程组]]:
$$
\boldsymbol{A}^T \boldsymbol{A} \vec{v} = \boldsymbol{A}^T (-\boldsymbol{b}) \tag{9}
$$
$$
\vec{v} = \left( \boldsymbol{A}^T \boldsymbol{A} \right)^{-1} \boldsymbol{A}^T \left( -\boldsymbol{b} \right) \tag{10}
$$
得到:
$$
\begin{bmatrix} V_x \ V_y \ V_z \end{bmatrix} = \begin{bmatrix} \sum I_{x_i}^2 & \sum I_{x_i}I_{y_i} & \sum I_{x_i}I_{z_i} \ \sum I_{x_i}I_{y_i} & \sum I_{y_i}^2 & \sum I_{y_i}I_{z_i} \ \sum I_{x_i}I_{z_i} & \sum I_{y_i}I_{z_i} & \sum I_{z_i}^2 \end{bmatrix}^{-1} \begin{bmatrix} -\sum I_{x_i}I_{t_i} \ -\sum I_{y_i}I_{t_i} \ -\sum I_{z_i}I_{t_i} \end{bmatrix} \tag{11}
$$
其中的求和是从1到$n$。
这也就是说寻找光流可以通过在四维上图像导数的分别累加得出,需要通过一个==权重函数==$w(i,j,k),i,j,k\in[1,m]$来突出窗口中心点的坐标。==高斯函数==非常合适。

[!summary]
这个算法的不足在于它不能产生一个密度很高的流向量,例如在运动的边缘和黑大的同质区域中的微小移动方面流信息会很快的褪去。它的优点在于有噪声存在的鲁棒性还是可以的。