一般而言,LK光流用于特征点的跟踪,即前一帧中的关键像素到当前帧所对应的位置
LK光流会有一些假设:
- 灰度不变假设:即真实世界的一个确定的点,反应到像素级别,其灰度是不变的
- 微扰不变假设:即时间的微小扰动不会引起像素的剧烈变化
- 空间一致假设:相同表面相邻的点具有相似的运动,像素级别时他们也比较接近
基于前两个假设,便有如下约束方程
I
(
x
,
y
,
z
)
=
I
(
x
+
δ
x
,
y
+
δ
y
,
z
+
δ
z
)
I(x,y,z)=I(x+\delta x,y+\delta y,z+\delta z)
I(x,y,z)=I(x+δx,y+δy,z+δz)
其中 I ( x , y , z ) I(x,y,z) I(x,y,z)是指在 z z z时刻,坐标 ( x , y ) (x,y) (x,y)的灰度值
对约束方程做一阶泰勒展开可得
I ( x + δ x , y + δ y , z + δ z ) = I ( x , y , z ) + ∂ I ∂ x δ x + ∂ I ∂ y δ y + ∂ I ∂ z δ z + R I(x+\delta x,y+\delta y,z+\delta z)=I(x,y,z)+\frac{\partial I}{\partial x}\delta x+\frac{\partial I}{\partial y}\delta y+\frac{\partial I}{\partial z}\delta z + R I(x+δx,y+δy,z+δz)=I(x,y,z)+∂x∂Iδx+∂y∂Iδy+∂z∂Iδz+R
其中 R R R是高阶余项,视为0
易得
∂
I
∂
x
δ
x
+
∂
I
∂
y
δ
y
+
∂
I
∂
z
δ
z
=
0
\frac{\partial I}{\partial x}\delta x+\frac{\partial I}{\partial y}\delta y+\frac{\partial I}{\partial z}\delta z = 0
∂x∂Iδx+∂y∂Iδy+∂z∂Iδz=0
两边除以
δ
z
\delta z
δz,有
∂
I
∂
x
δ
x
δ
z
+
∂
I
∂
y
δ
y
δ
z
+
∂
I
∂
z
=
0
\frac{\partial I}{\partial x}\frac{\delta x}{\delta z}+\frac{\partial I}{\partial y}\frac{\delta y}{\delta z}+\frac{\partial I}{\partial z} = 0
∂x∂Iδzδx+∂y∂Iδzδy+∂z∂I=0
其中 δ x δ z \frac{\delta x}{\delta z} δzδx和 δ y δ z \frac{\delta y}{\delta z} δzδy为像素点沿 x x x和 y y y方向的速度(位移对时间的导数)
简写成 I x v x + I y v y + I z = 0 I_xv_x+I_yv_y+I_z=0 Ixvx+Iyvy+Iz=0
化作矩阵形式
( I x I y ) ( v x v y ) = − I z \left(\begin{matrix} I_x & I_y \end{matrix}\right) \left(\begin{matrix} v_x \\ v_y \end{matrix}\right) = -I_z (IxIy)(vxvy)=−Iz
利用第三假设,可以假设在一个
m
×
m
m\times m
m×m的窗口内,光流是一个恒定的值,即
I
x
1
v
x
+
I
y
1
v
y
=
−
I
z
1
.
.
.
I
x
m
2
v
x
+
I
y
m
2
v
y
=
−
I
z
m
2
\begin{matrix}I_{x_1}v_x+I_{y_1}v_y=-I_{z_1} \\ ... \\ I_{x_{m^2}}v_x+I_{y_{m^2}}v_y=-I_{z_{m^2}} \end{matrix}
Ix1vx+Iy1vy=−Iz1...Ixm2vx+Iym2vy=−Izm2
利用最小二乘可以直接得到解