Lucas-Kanada光流假设:
- 场景中物体被跟踪的部分的亮度不变;
- 相邻帧之间的运动较小;
- 相邻的点保持相邻。
LK算法只需要每个感兴趣点周围小窗口的局部信息,但是较大的运动会将点移除这个小窗口,从而造成算法无法再找到这些点。金字塔的LK算法可以解决这个问题,即从金字塔的最高层(细节最少)开始向金字塔的最低层(丰富的细节)进行跟踪。跟踪图像金字塔允许小窗口部或较大的运动。
在开始跟踪前,首先要在初始帧中检测特征点,之后在下一帧中尝试跟踪这些点。你必须找到新的图像帧中这些点的位置,因此,你必须在特征点的先前位置附近进行搜索,以找到下一帧中它的新位置。这正是cv::calcOpticalFlowPyrLK函数所实现的工作。你输入两个连续的图像帧以及第一幅图像中检测到的特征点数组,该函数将返回一组新的特征点为位置。为了跟踪完整的序列,你需要在帧与帧之间重复这个过程,不可避免地你也会丢失其中一些点,于是被跟踪的特征点数目会减少。为了解决这个问题,我们可以不时地检测新的特征值。
calcOpticalFlowPyrLK( InputArray prevImg, InputArray nextImg,
InputArray