光流法介绍参看:光流法—光流场估计概念
预备知识:梯度法
最早的基于梯度的光流计算方法是于1980年发表的。这个算法的基本原理如下所述:假定 ( x , y , t ) (x,y,t) (x,y,t)是时刻 t t t在图像位置 ( x , y ) (x,y) (x,y)的灰度值。 u ( x , y ) u(x,y) u(x,y)和 v ( x , y ) v(x,y) v(x,y)是光流在位置 ( x , y ) (x,y) (x,y)的 x x x和 y y y方向的分量。如果我们假设在时刻 t + δ t t+\delta t t+δt,在位置 ( x + δ x , y + δ y ) (x+\delta x,y+\delta y) (x+δx,y+δy)的灰度值保持不变,那么如下等式成立:
I ( x + u δ t , y + v δ t , t + δ t ) = I ( x , y , t ) I(x+u\delta t,y+v\delta t,t+\delta t)=I(x,y,t) I(x+uδt,y+vδt,t+δt)=I(x,y,t)
其中, δ x = u δ t , δ y = v δ t \delta x=u\delta t,\delta y=v\delta t δx=uδt,δy=vδt. δ t \delta t δt代表一个小的时间间隔。接下来,利用泰勒公式展开等式的左侧如下:
I ( x , y , t ) + δ x ∂ I ∂ x + δ y ∂ I ∂ y + δ t ∂ I ∂ t + e = I ( x , y , t ) I(x,y,t)+\delta x\frac{\partial I}{\partial x}+\delta y\frac{\partial I}{\partial y}+\delta t\frac{\partial I}{\partial t}+e=I(x,y,t) I(x,y,t)+δx∂x∂I+δy∂y∂I+δt∂t∂I+e=I(x,y,t)
这里 e e e表示 δ x \delta x δx, δ y \delta y δy和 δ t \delta t δt中的二阶和高阶项。消掉左侧和右侧的 I ( x , y , t ) I(x,y,t) I(x,y,t)相同项,并忽略掉 e e e值。对上式分别除 δ t \delta t δt并整理,有:
∂ I ∂ x δ x ∂ t + ∂ I ∂ y δ y ∂ t + ∂ I ∂ t δ t ∂ t = 0 \frac{\partial I}{\partial x}\frac{\delta x}{\partial t}+\frac{\partial I}{\partial y}\frac{\delta y}{\partial t}+\frac{\partial I}{\partial t}\frac{\delta t}{\partial t}=0 ∂x∂I∂tδx+∂y∂I∂tδy+∂t∂I∂tδt=0
令 u ( x , y ) = δ x ∂ t , v ( x , y ) = δ y ∂ t u(x,y)=\frac{\delta x}{\partial t},v(x,y)=\frac{\delta y}{\partial t} u(x,y)=∂tδx,v(x,y)=∂tδy,则有:
I x u ( x , y ) + I y v ( x , y ) + I t = 0 I_x u(x,y)+I_y v(x,y)+I_t=0 Ixu(x,y)+Iyv(x,y)+It=0
这里,倒数 I x , I y , I t I_x,I_y,I_t Ix,Iy,It可以计算图像灰度差得来。上式显然是一个基本用于推断光流方程的约束,但是实际上要同时计算 u ( x , y ) , v ( x , y ) u(x,y),v(x,y) u(x,y),v(x,y),一个方程是不够的,因此很多方法都在致力于寻找方程的边界条件,下边几种方法也是在该方程基础上增加约束求解光流方程的。
HS光流法
HS光流计算基于物体移动的光学特性的两个假设:
- 运动物体的灰度在很短的间隔时间内保持不变
- 给定邻域内的速度向量场变化是缓慢的
由梯度法知:
该式子就是光流约束方程,它反映了灰度与速度的一个对应关系,但是一个式子中有两个变量: u u u 和 v v v,显然不能将速度解出,因此需要引入一个新的条件:光流的全局平滑约束条件
即 u u u 和 v v v 随着像素点移动而发生的改变是缓慢的,局部区域的变化不大,尤其是在目标做无变形刚体运动时,局部区域速度的空间变化率为0。
因此,引入以下速度平滑项:
对于所有的像素点,需要满足上式和最小,综合光流约束条件和速度平滑约束条件,可建立以下的极小化方程:
式中的 α 是平滑权重系数,表示速度光滑项所占的权重。
可以用欧拉-拉格朗日方程求解
∂ L ∂ u − ∂ ∂ x ∂ L ∂ u x − ∂ ∂ y ∂ L ∂ u y = 0 ∂ L ∂ v − ∂ ∂ x ∂ L ∂ v x − ∂ ∂ y ∂ L ∂ v y = 0 \frac{\partial L}{\partial u}-\frac{\partial}{\partial x}\frac{\partial L}{\partial u_x}-\frac{\partial}{\partial y}\frac{\partial L}{\partial u_y}=0 \\ \frac{\partial L}{\partial v}-\frac{\partial}{\partial x}\frac{\partial L}{\partial v_x}-\frac{\partial}{\partial y}\frac{\partial L}{\partial v_y}=0 ∂u∂L−∂x∂∂ux∂L−∂y∂∂uy∂L=0∂v∂L−∂x∂∂vx∂L−∂y∂∂vy∂L=0
得:
I
x
(
I
x
u
+
I
y
v
+
I
t
)
−
α
2
Δ
u
=
0
I
y
(
I
x
u
+
I
y
v
+
I
t
)
−
α
2
Δ
v
=
0
I_x(I_xu+I_yv+I_t)-\alpha ^2 \Delta u=0 \\ I_y(I_xu+I_yv+I_t)-\alpha ^2 \Delta v=0
Ix(Ixu+Iyv+It)−α2Δu=0Iy(Ixu+Iyv+It)−α2Δv=0
式中,拉普拉斯算子可以用某一点的速度与其周围速度平均值之差来近似,有:
化简得:
求解可以使用迭代的方法,使用第 k k k步的 u , v u,v u,v来计算 k + 1 k+1 k+1步的 u , v u,v u,v。
Lucas-Kanada方法
由梯度法知有下列式子成立, V x V_x Vx等同于上式的 u u u, V y V_y Vy等同于上式的 v v v
LK方法假设以下条件成立:
- 亮度恒定
- 时间连续或者运动是小运动
- 空间一致,临近点有相似的运动
那么可与选取图像的多个邻域,每个邻域中的点都满足上述方程,这样可以得到一系列方法:
写成矩阵形式:
通过最小二乘法求解得光流场:
Pyramidal LK方法
但是对于LK方法中,需要计算矩阵的逆,一些时候方程的选取会造成解的不稳定,另一方面,假设图像亮度恒定、运动较小这个条件是很苛刻的,所以在此基础上,Pyramidal LK采用金字塔形式作出了改良:
低采样率代表图像的粗计算过程,用来识别较大的运动;高采样率代表图像的经计算过程,用来识别较小的运动;对应运动向量的计算过程实际上就是先找出大的运动向量在逐渐细化,计算小的运动向量,并能够通过小的运动量纠正大的运动量的计算偏差。
计算公式为: