光流的概念最早是由Gibson在1950年提出的。它是空间移动物体在像素观察平面中移动的瞬时速度。是一种计算物体在相邻帧间运动信息的方法。
一般来说,光流(Optical Flow)是物体在三维空间中的运动在二维像平面上的投影。它是由物体和相机的相对速度产生的,反映了物体在极小时间内对应的图像像素的运动方向和速度。
Lucas–Kanade方法(KLT)是一种基于光流原理的特征点跟踪算法。本文首先介绍光流的原理,然后介绍了KLT及其相关的KLT变体算法。
光流约束方程
假设I(x,y,t)为时刻t像素点(x,y)的像素值(亮度),该像素点在两个图像帧之间移动了Δx,Δy,Δt。因此我们可以得出相同亮度的结论:
假设运动很小,我们可以从泰勒级数推导一阶泰勒展开式:
因此,
其中(dx/dt, dy/dt) = (u, v)为待解像素的光流。
(∂I/∂x,∂I/∂y) = (I_x, I_y)是像素灰度空间微分,t = I_x是像素坐标点的时间灰度微分。
整理成矩阵形式:
该公式表明,同一坐标位置上的时间灰度微分是空间灰度微分与该位置上相对于观测者的速度的乘积。假设空间一致性,对于周围的多个点,有: