对于假设(1),我们可以得到:
I
(
x
,
y
,
t
)
=
I
(
x
+
u
,
y
+
v
,
t
+
Δ
t
)
I(x,y,t)=I(x+u,y+v,t+ \Delta _t)
I(x,y,t)=I(x+u,y+v,t+Δt) 对等式右边进行泰勒展开,即的:
I
(
x
+
u
,
y
+
v
,
t
+
Δ
t
)
=
I
(
x
,
y
,
t
)
+
I
x
′
u
+
I
y
′
v
+
I
t
′
Δ
t
I(x+u,y+v,t+\Delta _t)=I(x,y,t)+I'_xu+I'_yv+I'_t\Delta_t
I(x+u,y+v,t+Δt)=I(x,y,t)+Ix′u+Iy′v+It′Δt 也就是说
I
(
x
,
y
,
t
)
+
I
x
′
u
+
I
y
′
v
+
I
t
′
Δ
t
=
I
(
x
,
y
,
t
)
I(x,y,t)+I'_xu+I'_yv+I'_t\Delta_t=I(x,y,t)
I(x,y,t)+Ix′u+Iy′v+It′Δt=I(x,y,t) 所以:
I
x
′
u
+
I
y
′
v
+
I
t
′
Δ
t
=
0
I'_xu+I'_yv+I'_t\Delta_t=0
Ix′u+Iy′v+It′Δt=0,即
[
I
x
′
,
I
y
′
]
[
u
,
v
]
T
=
−
Δ
I
t
[I'_x,I'_y][u,v]^T=-\Delta I_t
[Ix′,Iy′][u,v]T=−ΔIt
式中,
I
x
′
,
I
y
′
I'_x,I'_y
Ix′,Iy′分别表示在像素点
(
x
,
y
)
(x,y)
(x,y)处,图像的亮度在
x
,
y
x,y
x,y方向的偏导数,亦即图像亮度的梯度。
I
t
′
I'_t
It′是图像亮度对时间的偏导数,而
I
t
′
Δ
t
I'_t \Delta_t
It′Δt表示的是两张图片(一般是相邻帧)之间
(
x
,
y
)
(x,y)
(x,y)坐标位置像素点亮度的变化量,可以表示为
Δ
I
t
=
I
t
′
Δ
t
\Delta I_t = I'_t\Delta _t
ΔIt=It′Δt。
u
,
v
u,v
u,v即为待估计的光流值。
I
x
′
,
I
y
′
,
Δ
I
t
I'_x,I'_y,\Delta I_t
Ix′,Iy′,ΔIt均可以通过对图像进行直接计算得到。而
u
,
v
u,v
u,v的求取仅有一个方程无法完成求解。
对于假设(2), 在取定邻域内的所有像素值均满足等式
I
x
′
u
+
I
y
′
v
+
I
t
′
Δ
t
=
0
I'_xu+I'_yv+I'_t\Delta_t=0
Ix′u+Iy′v+It′Δt=0,由此我们可以将矩阵进行扩充得到:
[
I
x
′
(
1
)
I
y
′
(
1
)
I
x
′
(
2
)
I
y
′
(
2
)
.
.
.
.
.
.
I
x
′
(
n
)
I
y
′
(
n
)
]
[
u
,
v
]
T
=
[
−
Δ
I
t
(
1
)
−
Δ
I
t
(
2
)
.
.
.
−
Δ
I
t
(
n
)
]
\left [ \begin{array}{l} I^{'(1)}_x & I^{'(1)}_y \\ I^{'(2)}_x & I^{'(2)}_y \\ ...&...\\ I^{'(n)}_x & I^{'(n)}_y \\ \end{array} \right] [u,v]^T= \left[ \begin{array}{l} -\Delta I^{(1)}_t \\ -\Delta I^{(2)}_t \\ ...\\ -\Delta I^{(n)}_t \\ \end{array} \right]
⎣⎡Ix′(1)Ix′(2)...Ix′(n)Iy′(1)Iy′(2)...Iy′(n)⎦⎤[u,v]T=⎣⎡−ΔIt(1)−ΔIt(2)...−ΔIt(n)⎦⎤
即:
A
x
=
b
Ax=b
Ax=b。对于这组等式,可以使用最小二乘法
(
x
=
(
A
T
A
)
−
1
A
T
b
)
(x=(A^TA)^{-1}A^Tb)
(x=(ATA)−1ATb)近似估计的得到
[
u
,
v
]
[u,v]
[u,v]的解。但需要注意的是
(
A
T
A
)
(A^TA)
(ATA)需要时可逆的。
论文中作者使用欧式距离来定义
L
o
s
s
Loss
Loss,称这种误差为
E
P
E
(
E
n
d
−
P
o
i
n
t
−
E
r
r
o
r
)
EPE(End-Point-Error)
EPE(End−Point−Error)
2.FlowNet2.0
论文地址:https://arxiv.org/abs/1612.01925
主要优化策略:网络的堆叠
后续FlowNet的输入不仅仅是两张图片(
I
m
a
g
e
1
Image1
Image1和
I
m
a
g
e
2
Image2
Image2),还包括前一个网络输入的光流估计Flow,和一张Warped图,再加一张亮度误差(Brightness Error)。其中Warped图为将估计的光流作用在
I
m
a
g
e
2
Image2
Image2上,即为使用估计的每个像素偏移,偏移
I
m
a
g
e
2
Image2
Image2的每一个像素,使其与
I
m
a
g
e
1
Image1
Image1对齐。虽然作用了光流偏移,由于光流估计的不够准确,Warped图和
I
m
a
g
e
1
Image1
Image1依然存在一定的偏差,
I
m
a
g
e
1
Image1
Image1的亮度减去Warped图的亮度,即可得到亮度误差(BrightnessError)图。
目前,光流估计当然也靠上了cv界的顶流
T
r
a
n
s
f
o
r
m
e
r
Transformer
Transformer,
F
l
o
w
F
o
r
m
e
r
(
A
T
r
a
n
s
f
o
r
m
e
r
A
r
c
h
i
t
e
c
t
u
r
e
f
o
r
O
p
t
i
c
a
l
F
l
o
w
)
FlowFormer(A Transformer Architecture for Optical Flow)
FlowFormer(ATransformerArchitectureforOpticalFlow)成为了目前的SOTA。