1. 光流的概念
•空间运动物体在观察成像平面上的像素运动的瞬时速度
2. 光流法的原理
•利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息,即光流
光流的分类:稠密光流与稀疏光流(Lucus-Kanade算法)
3. L-K光流
Lucas-Kanada最初于1981年提出,该算法假设在一个小的空间邻域内运动矢量保持恒定,使用加权最小二乘法估计光流。由于该算法应用于输入图像的一组点上时比较方便,因此被广泛应用于稀疏光流场。
4. 三个假设
假设一:场景中物体被跟踪的部分亮度保持不变
假设二:运动相对于帧率是缓慢、连贯的数学表达指的是在上连续,可导
假设三:相邻的点保持近邻δ邻域内所有像素点的速度(U,V)相等
由假设二,对假设一应用偏微分链式法则,则得到L-K算法核心的数学描述公式:
5. 图像金字塔的引入L-K算法
对于大多数30Hz摄像机,大而不连贯的运动较多,所以LK光流法在实际中的跟踪效果不好,通常一个大的窗口来捕获大的运动,但往往违背运动连贯的假设,故引入图像金字塔。
在图像金字塔的最高层计算光流,用得到的运动估计结果作为下一层金字塔的起始点,重复这个过程直到到达金字塔的最底层。这样将不满足运动假设的可能性降到最小从而实现对更快和更长的运动的跟踪。
为什么要用金字塔?因为lk算法的约束条件即:小速度,亮度不变以及区域一致性都是较强的假设,并不很容易得到满足。如当物体运动速度较快时,假设不成立,那么后续的假设就会有较大的偏差,使得最终求出的光流值有较大的误差。
考虑物体的运动速度较大时,算法会出现较大的误差。那么就希望能减少图像中物体的运动速度。一个直观的方法就是,缩小图像的尺寸。假设当图像为400×400时,物体速度为[16 16],那么图像缩小为200×200时,速度变为[8,8]。缩小为100*100时,速度减少到[4,4]。所以在源图像缩放了很多以后,原算法又变得适用了。所以光流可以通过生成 原图像的金字塔图像,逐层求解,不断精确来求得。简单来说上层金字塔(低分辨率)中的一个像素可以代表下层的两个。
首先要先建立金字塔
金字塔跟踪
总体来讲,金字塔特征跟踪算法描述如下:首先,光流和仿射变换矩阵在最高一层的图像上计算出;将上一层的计算结果作为初始值传递给下一层图像,这一层的图像在这个初始值的基础上,计算这一层的光流和仿射变化矩阵;再将这一层的光流和仿射矩阵作为初始值传递给下一层图像,直到传递给最后一层,即原始图像层,这一层计算出来的光流和仿射变换矩阵作为最后的光流和仿射变换矩阵的结果。