简介
光流的概念是Gibson在1950年首先提出来的。
它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。
前提
- 相邻帧间亮度恒定
- 相邻帧间运动微小
- 相邻帧间像素点具有强相关性(空间一致性)
公式推导
由1:I(x,y,t)=I(x+dx,y+dy,t+dt)
由2:I(x,y,t)=I(x,y,t)+∂x∂IΔx+∂y∂IΔy+∂t∂IΔt+ϵ
其中ϵ是高阶无穷小,可以忽略不计
推导出:∂x∂IΔx+∂y∂IΔy+∂t∂IΔt=0
两边同除 dt:∂x∂IΔtΔx+∂y∂IΔtΔy+∂t∂I=0
设u,v为速度矢量,Ix,Iy为灰度的方向梯度,It为灰度的时间梯度,可得:Ixu+Iyv+It=0
超定方程,无法求解。
由3:在相邻像素点间存在强相关性,可得线性方程组
$$\left [
\begin{matrix}
I_x(p_1) & I_y(p_1)\\
... & ... \\
I_x(p_N) & I_y(p_N)
\end{matrix}
\right ]
\left [
\begin{matrix}
u \\ v
\end{matrix}
\right ] = -
\left [
\begin{matrix}
I_t(p_1) \\ ... \\ I_t(p_N)
\end{matrix}
\right ]$$
即:
A⋅d=b
(ATA)d=ATb
可得到Hessian矩阵ATA,使用最小二乘法求解d,即为光流矢量。
注:Hessian矩阵的特征值需要同时较大,否则最小二乘会遇到病态矩阵,此时取角点能够满足要求。