光流的概念是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。其计算方法可以分为三类:
(1)基于区域或者基于特征的匹配方法;(L-K的方法)
(2)基于频域的方法;
(3)基于梯度的方法;
简单来说,光流是空间运动物体在观测成像平面上的像素运动的“瞬时速度”。光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的“运动”。研究光流场的目的就是为了从图片序列中近似得到不能直接得到的运动场。
光流法的前提假设:
(1)相邻帧之间的亮度恒定;
(2)相邻视频帧的取帧时间连续,或者,相邻帧之间物体的运动比较“微小”;
(3)保持空间一致性;即,同一子图像的像素点具有相同的运动。
维基百科上:
![](https://img-my.csdn.net/uploads/201211/16/1353056316_7355.jpg)
![](https://img-my.csdn.net/uploads/201211/16/1353056319_4066.jpg)
因为如果只是测量一个像素的光流,上面的I()有两个未知数,不恩能够求出准确值,只能知道光流的大致方向,也就是所谓的孔径现象(学习Opnecv有很好的解释),所以选取这个像素周围的点一并计算,也就是上面这个矩阵的作用了。
求出最小值,就是光流的方向与大小。L-K的作用便在于此,增加了这么一个约束条件。
什么是图像金字塔?
首先要介绍下金字塔,金字塔分为i(即intval)层和o(octave)组
①首先输入一幅图像I
②然后在这幅图像上应用高斯模糊,这样就形成了第0组的第0层
③通过对该图像继续进行高斯模糊,形成第二层,直至到达相应的层数比如说5层(如果需要多少层数不知道可以再问)
④形成第0组之后,接下来通过对原图像缩小两倍,然后继续进行高斯模糊,步骤同①-③所示,不过模糊的参数sigma改变
通过以上过程就完成了金字塔的建立过程。
接下来建立高斯差分金字塔
①将每一组中的相邻层的图像相减,这样就形成多幅图像,就这样就建立了第0组的n层图像
②接下来通过①的方法处理第1组的相邻的图像,形成第1组的n层图像
重复①和②完成建立高斯差分金字塔。
所谓的降采样就是降低图像的大小为其原来的两倍(采用的算法可以是最近邻插值来进行)
使用图像金字塔的目的在于:减轻由小而连贯的运动假设引起的问题,首先在金字塔顶层计算光流,然后在上一次估计的座位下一次的起始点。进一步估计。