光流(Optical flow or optic flow)
它是一种运动模式,这种运动模式指的是一个物体、表面、边缘在一个视角下由一个观察者(比如眼睛、摄像头等)和背景之间形成的明显移动。
光流技术,如运动检测和图像分割,时间碰撞,运动补偿编码,三维立体视差,都是利用了这种边缘或表面运动的技术。

二维图像的移动相对于观察者而言是三维物体移动的在图像平面的投影。
有序的图像可以估计出二维图像的瞬时图像速率或离散图像转移。

光流算法
它评估了两幅图像的之间的变形,它的基本假设是体素和图像像素守恒,它假设一个物体的颜色在前后两帧没有巨大而明显的变化,基于这个思路,我们可以得到图像约束方程。
不同的光流算法解决了假定了不同附加条件的光流问题。

Lucas–Kanade算法
这个算法是最常见,最流行的。
它计算两帧在时间 从深度学习光流法 光流算法原理_二维深度学习光流法 光流算法原理_光流_02 之间每个像素点位置的移动。
由于它是基于图像信号的泰勒级数,这种方法称为差分,这就是对于空间和时间坐标使用偏导数。

图像约束方程可以写为
深度学习光流法 光流算法原理_二维_03
深度学习光流法 光流算法原理_二维_04 为在深度学习光流法 光流算法原理_约束方程_05位置的体素。

我们假设移动足够的小,那么对图像约束方程使用泰勒公式,
我们可以得到:
深度学习光流法 光流算法原理_二维_06
H.O.T. 指更高阶,在移动足够小的情况下可以忽略。

从这个方程中我们可以得到:
深度学习光流法 光流算法原理_二维_07

=>
深度学习光流法 光流算法原理_约束方程_08
最终可写为
深度学习光流法 光流算法原理_光流_09
深度学习光流法 光流算法原理_二维_10 分别是深度学习光流法 光流算法原理_深度学习光流法_11的光流向量中深度学习光流法 光流算法原理_深度学习光流法_12的组成,

深度学习光流法 光流算法原理_约束方程_13则是图像在(x ,y ,z ,t )这一点向相应方向的差分 ,

所以可以写成
深度学习光流法 光流算法原理_二维_14

从而得到方程
深度学习光流法 光流算法原理_深度学习光流法_15

这个方程有三个未知量深度学习光流法 光流算法原理_约束方程_16,尚不能被解决,这也就是所谓光流算法的光圈问题,那么要找到光流向量则需要另一套解决的方案。
而Lucas-Kanade算法是一个非迭代的算法:

假设流深度学习光流法 光流算法原理_约束方程_17在一个大小为深度学习光流法 光流算法原理_约束方程_18的小窗中是一个常数,
那么从像素 深度学习光流法 光流算法原理_二维_19 中可以得到下列一组方程
$$
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}

I_{x_n} V_x + I_{y_n} V_y + I_{z_n} V_z = − I_{t_n}
$$

三个未知数但是有多于三个的方程,这个方程组自然是个超定方程,也就是说方程组内有冗余,方程组可以表示为:
深度学习光流法 光流算法原理_约束方程_20

记作:
深度学习光流法 光流算法原理_光流_21
为了解决这个超定问题,我们采用最小二乘法:
深度学习光流法 光流算法原理_光流_22
所以可得
深度学习光流法 光流算法原理_深度学习光流法_23
最终可解
深度学习光流法 光流算法原理_二维_24
其中的求和是从1到n,
这也就是说寻找光流可以通过在四维上图像导数的分别累加得出。
我们还需要一个权重函数深度学习光流法 光流算法原理_光流_25

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