目标
在本章中,
- 我们将了解光流的概念及其使用Lucas-Kanade方法的估计。
- 我们将使用cv.calcOpticalFlowPyrLK()之类的函数来跟踪视频中的特征点。
- 我们将使用cv.calcOpticalFlowFarneback()方法创建一个密集的光流场。
光流
光流是由物体或照相机的运动引起的两个连续帧之间图像物体的视运动的模式。它是2D向量场,其中每个向量都是位移向量,表示点从第一帧到第二帧的运动。考虑下面的图片(图片提供:Wikipedia关于Optical Flow的文章)。
![dc70ed3509ed6f3970cdced4c264401b.png](https://i-blog.csdnimg.cn/blog_migrate/8017d2032bf1226cfa8e3a401949c8a6.jpeg)
它显示了一个球连续5帧运动。箭头显示其位移向量。光流在以下领域具有许多应用:
- 运动的结构
- 视频压缩
- 视频稳定...
光流基于以下几个假设进行工作:
- 在连续的帧之间,对象的像素强度不变。
- 相邻像素具有相似的运动。
考虑第一帧中的像素$I(x,y,t)$(在此处添加新维度:时间。之前我们只处理图像,因此不需要时间)。它在$dt$时间之后拍摄的下一帧中按距离$(dx,dy)$移动。因此,由于这些像素相同且强度不变,因此可以说
![5af0bd39759b22882ab68148e3b94a51.png](https://i-blog.csdnimg.cn/blog_migrate/4acbaf08ee39c4c9aee4c8f29b450d64.jpeg)
然后采用泰勒级数的右侧逼近,去掉常用项并除以$dt$得到下面的式子