转载请注明出处!
!
!
光流(optical flow)和openCV中实现
光流的概念:
是Gibson在1950年首先提出来的。
它是空间运动物体在观察成像平面上的像素运动的瞬时速度。是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的相应关系,从而计算出相邻帧之间物体的运动信息的一种方法。
一般而言。光流是因为场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。
当人的眼睛观察运动物体时,物体的景象在人眼的视网膜上形成一系列连续变化的图像。这一系列连续变化的信息不断“流过”视网膜(即图像平面)。好像一种光的“流”,故称之为光流(optical flow)。光流表达了图像的变化,因为它包括了目标运动的信息。因此可被观察者用来确定目标的运动情况。
看以下的图。它展示了一个小球在5个连续的帧中的运动。箭头上的数字代表不同的帧。那个红色小球的运动构成了光流。
操作:
给你一个图上的一系列点,在另外一张图上找到与前面一些列点同样的点。
或者给你图I1上的点[ux, uy]T。找到I2上的点[ux
+ δx, uy + δy]T。最小化ε:
上面增加Wx表示一块区域,一般跟踪一个区域的点。
在图形学应用中。在多张图上跟踪点(特征)是一项主要的操作:在一张图上找到一个对象,观察对象怎样移动。
基于特征点的跟踪算法大致能够分为两个步骤:
1)探測当前帧的特征点;
2)通过当前帧和下一帧灰度比較,预计当前帧特征点在下一帧的位置;
3)过滤位置不变的特征点,余下的点就是目标了。
特征点能够是Harris角点,也能够是边缘点等等。
考虑一个像素
在第一帧的光强度(这里添加了一个维度时间。前面的时候我们仅仅是处理图像。所以没有必要时间。如今须要添加这个维度)。它移动了
的距离到一下帧。用了