运动场与光流法
Reference:
- Emanuele Trucco,Alessandro Verri 《Introductory techniques for 3-D computer_vision》
- 7. Motion
1. 刚体运动场
1.1 定义
运动场(Motion Field)是图像点的速度的二维矢量场,由观察摄像机与观测场景之间的相对运动引起。
运动场可以被看成是三维速度矢量在图像平面上的映射(为了可视化这个向量场,想象它在图像上的三维速度矢量)。
1.2 基础
令
P
=
[
X
,
Y
,
Z
]
T
\mathbf{P}=[X,Y,Z]^T
P=[X,Y,Z]T 是在通常相机参考系上的一个
3
D
3D
3D 点。映射中心在原点上,光轴为
Z
Z
Z 轴,
f
f
f 表示焦距。根据针孔模型可知,一个场景点
P
\mathbf{P}
P 在图像中的点
p
\mathbf{p}
p 为:
p
=
f
P
Z
\mathbf{p}=f\frac{\mathbf{P}}{Z}
p=fZP
因为
p
p
p 在坐标系的第三项永远等于
f
f
f,我们将其写成
p
=
[
x
,
y
]
T
\mathbf{p}=[x,y]^T
p=[x,y]T 来替代
p
=
[
x
,
y
,
f
]
T
\mathbf{p}=[x,y,f]^T
p=[x,y,f]T。场景点
P
\mathbf{P}
P 与相机间的相对运动可以描述为:
V
=
−
T
−
ω
×
P
\mathbf{V}=-\mathbf{T}-\omega \times \mathbf{P}
V=−T−ω×P
公式推导将在第二节中展开(2.1)。因为这里是相机,即坐标系在做运动,所以符号上均为负。
在这里
T
\mathbf{T}
T 表示运动的平移分量,
ω
\boldsymbol{\omega}
ω 为角速度。当运动为刚体的,对于任意的
P
\mathbf{P}
P 来说
T
\mathbf{T}
T 和
ω
\mathbf{\omega}
ω 相同的(对于同一刚体上的点来说)。分量可写为:
V
x
=
−
T
x
−
ω
y
Z
+
ω
z
Y
V
y
=
−
T
y
−
ω
z
X
+
ω
x
Z
V
z
=
−
T
z
−
ω
x
Y
+
ω
y
X
V_x = -T_x-\omega_yZ+\omega_zY\\ V_y = -T_y-\omega_zX+\omega_xZ\\ V_z = -T_z-\omega_xY+\omega_yX
Vx=−Tx−ωyZ+ωzYVy=−Ty−ωzX+ωxZVz=−Tz−ωxY+ωyX
1.3 运动场的基础方程
为了获得在空间中的速度
P
\mathbf{P}
P 和在图像中相对应的速度
p
\mathbf{p}
p 的关系,我们对公式
p
=
f
P
Z
\mathbf{p}=f\frac{\mathbf{P}}{Z}
p=fZP 求时间倒数,得运动场
v
\mathbf{v}
v:
v
=
f
Z
V
−
V
z
P
Z
2
\mathbf{v} = f\frac{Z\mathbf{V}-V_z\mathbf{P}}{Z^2}
v=fZ2ZV−VzP
将 1.2 中的
V
x
V_x
Vx,
V
y
V_y
Vy 代入,得
v
x
v_x
vx,
v
y
v_y
vy:
v
x
=
T
z
x
−
T
x
f
Z
−
ω
y
f
+
ω
z
y
+
ω
x
x
y
f
−
ω
y
x
2
f
v
y
=
T
z
y
−
T
y
f
Z
+
ω
x
f
−
ω
z
x
−
ω
y
x
y
f
+
ω
x
y
2
f
\begin{aligned} &v_{x}=\frac{T_{z} x-T_{x} f}{Z}-\omega_{y} f+\omega_{z} y+\frac{\omega_{x} x y}{f}-\frac{\omega_{y} x^{2}}{f} \\ &v_{y}=\frac{T_{z} y-T_{y} f}{Z}+\omega_{x} f-\omega_{z} x-\frac{\omega_{y} x y}{f}+\frac{\omega_{x} y^{2}}{f} \end{aligned}
vx=ZTzx−Txf−ωyf+ωzy+fωxxy−fωyx2vy=ZTzy−Tyf+ωxf−ωzx−fωyxy+fωxy2
注意运动场是两个分量的和(平移+旋转):
运动场的平移分量为,
v
x
T
=
T
z
x
−
T
x
f
Z
,
v
y
T
=
T
z
y
−
T
y
f
Z
v_{x}^T=\frac{T_{z} x-T_{x} f}{Z}, v_{y}^T=\frac{T_{z} y-T_{y} f}{Z}
vxT=ZTzx−Txf,vyT=ZTzy−Tyf
运动场的旋转分量为,
v
x
ω
=
−
ω
y
f
+
ω
z
y
+
ω
x
x
y
f
−
ω
y
x
2
f
,
v
y
ω
=
ω
x
f
−
ω
z
x
−
ω
y
x
y
f
+
ω
x
y
2
f
v_{x}^{\omega}=-\omega_{y} f+\omega_{z} y+\frac{\omega_{x} x y}{f}-\frac{\omega_{y} x^{2}}{f}, v_{y}^{\omega}=\omega_{x} f-\omega_{z} x-\frac{\omega_{y} x y}{f}+\frac{\omega_{x} y^{2}}{f}
vxω=−ωyf+ωzy+fωxxy−fωyx2,vyω=ωxf−ωzx−fωyxy+fωxy2
因为沿着光轴的运动场分量恒等于 0,应该用 v = [ v x , v y ] T \mathbf{v}=[v_x, v_y]^T v=[vx,vy]T 来替代 v = [ v x , v y , 0 ] T \mathbf{v}=[v_x, v_y, 0]^T v=[vx,vy,0]T。
要注意的是,在最后这两对方程中,分量分别取决于角速度 ω \boldsymbol{\omega} ω 和深度 Z Z Z,它们是解耦合的(分离开)。这里就揭露了运动场的一个很重要的性质:运动场中依赖角速度的那部分并不携带有关深度的信息。
1.4 特殊情况:纯平移
假设观测相机和场景间没有旋转分量,即
ω
=
0
\boldsymbol{\omega}=0
ω=0,则:
v
x
=
T
z
x
−
T
x
f
Z
,
v
y
=
T
z
y
−
T
y
f
Z
v_{x}=\frac{T_{z} x-T_{x} f}{Z}, v_{y}=\frac{T_{z} y-T_{y} f}{Z}
vx=ZTzx−Txf,vy=ZTzy−Tyf
在一般情况下
T
z
≠
0
T_z\neq0
Tz=0,有一点
p
0
=
[
x
0
,
y
0
]
T
\boldsymbol{p_0}=[x_0,y_0]^T
p0=[x0,y0]T,则根据针孔成像原理(该点固定且唯一):
x
0
=
f
T
x
/
T
z
,
y
0
=
f
T
y
/
T
z
x_0=fT_x/T_z, y_0=fT_y/T_z
x0=fTx/Tz,y0=fTy/Tz
代入上式,得:
v
x
=
(
x
−
x
0
)
T
z
Z
,
v
y
=
(
y
−
y
0
)
T
z
Z
v_x=(x-x_0)\frac{T_z}{Z}, v_y=(y-y_0)\frac{T_z}{Z}
vx=(x−x0)ZTz,vy=(y−y0)ZTz
可以看出运动场的纯平移是径向的,它包含了从一个共同的原点 p 0 \boldsymbol{p_0} p0 径直发散出来的向量,这个点是平移方向的消失点。
- 当
T
z
<
0
T_z<0
Tz<0,向量点远离
p
0
\boldsymbol{p_0}
p0,
p
0
\boldsymbol{p_0}
p0 被称为延伸焦点(
focus of expansion
,即 FOE),如图(a); - 当
T
z
>
0
T_z>0
Tz>0,向量点朝向
p
0
\boldsymbol{p_0}
p0,
p
0
\boldsymbol{p_0}
p0 被称为收缩焦点(focus of contraction),如图(b)。
另外, v = v ( p ) \boldsymbol{v}=\boldsymbol{v}(\boldsymbol{p}) v=v(p) 的长度与 p \boldsymbol{p} p 和 p 0 \boldsymbol{p_0} p0 之间的距离成正比,与三维点 P \boldsymbol{P} P 的深度成反比。
特殊情况下,如果
T
z
=
0
T_z=0
Tz=0,公式变成了:
v
x
=
−
f
T
x
Z
,
v
y
=
−
f
T
y
Z
v_x=-f\frac{T_x}{Z}, v_y=-f\frac{T_y}{Z}
vx=−fZTx,vy=−fZTy
这时所有的运动场向量都是平行的,如上图©所示。
VP 和 FOE 的区别
纯平移运动时,FOE 为消失点。
2. 二维刚体运动运动学
即使刚体是由无数个粒子组成的,这些粒子的运动受到约束,使该物体在运动过程中仍然是刚体。特别地,二维刚体仅有的自由度是平移和旋转。
考虑一个二维刚体,它围绕点
O
′
O'
O′ 以角速度
ω
\omega
ω 旋转,同时,点
O
′
O'
O′ 相对于以
O
O
O 为原点的固定参照系
x
x
x 和
y
y
y 运动。
为了确定物体中点
P
P
P 的运动,我们搭建了第二套坐标轴
x
′
y
′
x'y'
x′y′,与
x
y
xy
xy 平行,其中原点在
O
′
O'
O′:
r
P
=
r
O
′
+
r
P
′
v
P
=
v
O
′
+
(
v
P
)
O
′
a
P
=
a
O
′
+
(
a
P
)
O
′
\mathbf{r}_P = \mathbf{r}_{O'}+\mathbf{r}'_P\\ \mathbf{v}_P = \mathbf{v}_{O'}+(\mathbf{v}_P)_{O'}\\ \mathbf{a}_P = \mathbf{a}_{O'}+(\mathbf{a}_P)_{O'}
rP=rO′+rP′vP=vO′+(vP)O′aP=aO′+(aP)O′
在这里,
- r P \mathbf{r}_P rP, v P \mathbf{v}_P vP 和 a P \mathbf{a}_P aP 分别为在点 O O O 观测到的点 P P P 的位置、速度和加速度向量;
- r O ′ \mathbf{r}_{O'} rO′ 为点 O ′ O' O′ 的位置向量;
- r P ′ \mathbf{r}'_P rP′, ( v P ) O ′ (\mathbf{v}_P)_{O'} (vP)O′ 和 ( a P ) O ′ (\mathbf{a}_P)_{O'} (aP)O′ 分别为在点 O ′ O' O′ 观测到的点 P P P 的位置、速度和加速度向量。
相对于点
O
′
O'
O′,所有点在刚体中都可以被描述为一个圆形轨道(
r
P
′
\mathbf{r}'_P
rP′为定值),这样可以很容易的算出速度:
(
v
P
)
O
′
=
r
P
′
θ
˙
=
r
ω
\left(v_{P}\right)_{O^{\prime}}=r_{P}^{\prime} \dot{\theta}=r \omega
(vP)O′=rP′θ˙=rω
写成向量形式:
(
v
P
)
O
′
=
ω
×
r
P
′
\left(\boldsymbol{v}_{P}\right)_{O^{\prime}}=\boldsymbol{\omega} \times \boldsymbol{r}_{P}^{\prime}
(vP)O′=ω×rP′
其中
ω
\boldsymbol{\omega}
ω 是角速度向量。加速度有一个周向分量和一个径向分量,
(
(
a
P
)
O
′
)
θ
=
r
P
′
θ
¨
=
r
P
′
ω
˙
,
(
(
a
P
)
O
′
)
r
=
−
r
P
′
θ
˙
2
=
−
r
P
′
ω
2
\left(\left(a_{P}\right)_{O^{\prime}}\right)_{\theta}=r_{P}^{\prime} \ddot{\theta}=r_{P}^{\prime} \dot{\omega}, \quad\left(\left(a_{P}\right)_{O^{\prime}}\right)_{r}=-r_{P}^{\prime} \dot{\theta}^{2}=-r_{P}^{\prime} \omega^{2}
((aP)O′)θ=rP′θ¨=rP′ω˙,((aP)O′)r=−rP′θ˙2=−rP′ω2
注意
ω
\boldsymbol{\omega}
ω 和
ω
˙
\dot\boldsymbol{\omega}
ω˙ 垂直于平面运动(也就是
ω
\boldsymbol{\omega}
ω 可以改变大小而不是速度),可以将加速度向量写成:
(
a
P
)
O
′
=
ω
˙
×
r
P
′
+
ω
×
(
ω
×
r
P
′
)
\left(\boldsymbol{a}_{P}\right)_{O^{\prime}}=\dot{\boldsymbol{\omega}} \times \boldsymbol{r}_{P}^{\prime}+\boldsymbol{\omega} \times\left(\boldsymbol{\omega} \times \boldsymbol{r}_{P}^{\prime}\right)
(aP)O′=ω˙×rP′+ω×(ω×rP′)
已知对于任意三个向量
A
\boldsymbol{A}
A,
B
\boldsymbol{B}
B 和
C
\boldsymbol{C}
C,有
A
×
(
B
×
C
)
=
(
A
⋅
C
)
B
−
(
A
⋅
B
)
C
\boldsymbol{A} \times(\boldsymbol{B} \times \boldsymbol{C})=(\boldsymbol{A} \cdot \boldsymbol{C}) \boldsymbol{B}-(\boldsymbol{A} \cdot \boldsymbol{B}) \boldsymbol{C}
A×(B×C)=(A⋅C)B−(A⋅B)C。因此
ω
×
(
ω
×
r
P
′
)
=
(
ω
⋅
r
P
′
)
ω
−
ω
2
r
P
′
=
−
ω
2
r
P
′
\boldsymbol{\omega} \times\left(\boldsymbol{\omega} \times \boldsymbol{r}_{P}^{\prime}\right)=\left(\boldsymbol{\omega} \cdot \boldsymbol{r}_{P}^{\prime}\right) \boldsymbol{\omega}-\omega^{2} \boldsymbol{r}_{P}^{\prime}=-\omega^{2} \boldsymbol{r}_{P}^{\prime}
ω×(ω×rP′)=(ω⋅rP′)ω−ω2rP′=−ω2rP′。最终,得到公式:
v
P
=
v
O
′
+
ω
×
r
P
′
a
P
=
a
O
′
+
ω
˙
×
r
P
′
+
ω
×
(
ω
×
r
P
′
)
\begin{aligned} &\boldsymbol{v}_{P}=\boldsymbol{v}_{O^{\prime}}+\boldsymbol{\omega} \times \boldsymbol{r}_{P}^{\prime} \\ &\boldsymbol{a}_{P}=\boldsymbol{a}_{O^{\prime}}+\dot{\boldsymbol{\omega}} \times \boldsymbol{r}_{P}^{\prime}+\boldsymbol{\omega} \times\left(\boldsymbol{\omega} \times \boldsymbol{r}_{P}^{\prime}\right) \end{aligned}
vP=vO′+ω×rP′aP=aO′+ω˙×rP′+ω×(ω×rP′)
2.1 公式推导
光流假设之一:小运动----->(简化为)小旋转
- 假设在时间 t t t 时,点的 3D 位置为 P P P;
- 那么在时间 t + 1 t+1 t+1 时,点的 3D 位置为 R P + T RP+T RP+T。
现在考虑较短的时间段(如两个视频帧之间的时间= 1/30秒)。可以假设在这段时间内旋转一个小角度。做一个小的角度近似,重写位移。在极限(无穷小的时间周期),就可以得到速度。
已知:
R
z
,
ψ
=
[
c
o
s
ψ
−
s
i
n
ψ
0
s
i
n
ψ
c
o
s
ψ
0
0
0
1
]
,
R
y
,
θ
=
[
c
o
s
θ
0
s
i
n
θ
0
1
0
−
s
i
n
θ
0
c
o
s
θ
]
,
R
x
,
ϕ
=
[
1
0
0
0
c
o
s
ϕ
−
s
i
n
ϕ
0
s
i
n
ϕ
c
o
s
ϕ
]
\begin{aligned} \mathbf{R}_{z, \psi} &=\left[\begin{array}{ccc} cos \psi & -sin \psi & 0 \\ sin \psi & cos \psi & 0 \\ 0 & 0 & 1 \end{array}\right], \mathbf{R}_{y, \theta} &=\left[\begin{array}{ccc} cos \theta & 0 & sin \theta \\ 0 & 1 & 0 \\ -sin \theta & 0 & cos \theta \end{array}\right], \mathbf{R}_{x, \phi}=\left[\begin{array}{ccc} 1 & 0 & 0 \\ 0 & cos \phi & -sin \phi \\ 0 & sin \phi & cos \phi \end{array}\right] \end{aligned}
Rz,ψ=⎣⎡cosψsinψ0−sinψcosψ0001⎦⎤,Ry,θ=⎣⎡cosθ0−sinθ010sinθ0cosθ⎦⎤,Rx,ϕ=⎣⎡1000cosϕsinϕ0−sinϕcosϕ⎦⎤
相乘得
z
y
x
zyx
zyx 形式的转换矩阵:
R
b
n
(
Θ
)
:
=
R
z
,
ψ
R
y
,
θ
R
x
,
ϕ
R
b
n
(
Θ
)
−
1
=
R
n
b
(
Θ
)
=
R
x
,
ϕ
⊤
R
y
,
θ
⊤
R
z
,
ψ
⊤
R
b
n
(
Θ
)
=
[
c
o
s
ψ
c
o
s
θ
−
s
i
n
ψ
c
o
s
ϕ
+
c
o
s
ψ
s
i
n
θ
s
i
n
ϕ
s
i
n
ψ
s
i
n
ϕ
+
c
o
s
ψ
c
o
s
ϕ
s
i
n
θ
s
i
n
ψ
c
o
s
θ
c
o
s
ψ
c
o
s
ϕ
+
s
i
n
ϕ
s
i
n
θ
s
i
n
ψ
−
c
o
s
ψ
s
i
n
ϕ
+
s
i
n
θ
s
i
n
ψ
c
o
s
ϕ
−
s
i
n
θ
c
o
s
θ
s
i
n
ϕ
c
o
s
θ
c
o
s
ϕ
]
\begin{array}{l} \mathbf{R}_{b}^{n}(\Theta):=\mathbf{R}_{z, \psi} \mathbf{R}_{y, \theta} \mathbf{R}_{x, \phi} \quad \mathbf{R}_{b}^{n}(\Theta)^{-1}=\mathbf{R}_{n}^{b}(\Theta)=\mathbf{R}_{x, \phi}^{\top} \mathbf{R}_{y, \theta}^{\top} \mathbf{R}_{z, \psi}^{\top} \\ \mathbf{R}_{b}^{n}(\Theta)=\left[\begin{array}{ccc} \mathrm{cos} \psi \mathrm{cos} \theta & -\mathrm{sin} \psi \mathrm{cos} \phi+\mathrm{cos} \psi \mathrm{sin} \theta \mathrm{sin} \phi & \mathrm{sin} \psi \mathrm{sin} \phi+\mathrm{cos} \psi \mathrm{cos} \phi \mathrm{sin} \theta \\ \mathrm{sin} \psi \mathrm{cos} \theta & \mathrm{cos} \psi \mathrm{cos} \phi+\mathrm{sin} \phi \mathrm{sin} \theta \mathrm{sin} \psi & -\mathrm{cos} \psi \mathrm{sin} \phi+\mathrm{sin} \theta \mathrm{sin} \psi \mathrm{cos} \phi \\ -\mathrm{sin} \theta & \mathrm{cos} \theta \mathrm{sin} \phi & \mathrm{cos} \theta \mathrm{cos} \phi \end{array}\right] \end{array}
Rbn(Θ):=Rz,ψRy,θRx,ϕRbn(Θ)−1=Rnb(Θ)=Rx,ϕ⊤Ry,θ⊤Rz,ψ⊤Rbn(Θ)=⎣⎡cosψcosθsinψcosθ−sinθ−sinψcosϕ+cosψsinθsinϕcosψcosϕ+sinϕsinθsinψcosθsinϕsinψsinϕ+cosψcosϕsinθ−cosψsinϕ+sinθsinψcosϕcosθcosϕ⎦⎤
在小角度情况下:
c
o
s
(
x
)
≈
1
,
s
i
n
(
x
)
≈
x
,
s
i
n
(
x
)
c
o
s
(
y
)
≈
0
cos(x)\approx1, \quad sin(x)\approx x, \quad sin(x)cos(y)\approx0
cos(x)≈1,sin(x)≈x,sin(x)cos(y)≈0
因此,上面矩阵中的小角度近似可简化为:
R
≈
[
1
−
ψ
θ
ψ
1
−
ϕ
−
θ
ϕ
1
]
=
I
+
[
0
−
ψ
θ
ψ
0
−
ϕ
−
θ
ϕ
0
]
=
I
+
S
R \approx\left[\begin{array}{ccc} 1 & -\psi & \theta \\ \psi & 1 & -\phi \\ -\theta & \phi & 1 \end{array}\right]=I+\left[\begin{array}{ccc} 0 & -\psi & \theta \\ \psi & 0 & -\phi \\ -\theta & \phi & 0 \end{array}\right]=I+S
R≈⎣⎡1ψ−θ−ψ1ϕθ−ϕ1⎦⎤=I+⎣⎡0ψ−θ−ψ0ϕθ−ϕ0⎦⎤=I+S
在小角度近似的条件下,可得位移:
d
i
s
p
l
a
c
e
m
e
n
t
=
R
P
+
T
−
P
=
(
I
+
S
)
P
+
T
−
P
=
S
P
+
T
displacement = RP + T - P = (I+S)P + T - P = SP+T
displacement=RP+T−P=(I+S)P+T−P=SP+T
注意,
S
P
=
[
ϕ
,
θ
,
ψ
]
T
×
P
SP=[\phi, \theta, \psi]^T\times P
SP=[ϕ,θ,ψ]T×P
在极限下,位移变成了速度:
V
=
T
+
ω
×
P
V=T+\omega\times P
V=T+ω×P
其中 ω = [ ω x , ω y , ω z ] T \omega=[\omega_x, \omega_y, \omega_z]^T ω=[ωx,ωy,ωz]T,这里的 T T T 与上面的公式不同 ---- 不是位移而是速度。
这里的符号取正负都可以,它取决于你想要认为运动是由于摄像机还是由于场景。
3. 运动场和光流
运动场(Motion Field): 三维相对矢量在二维图像平面上的投影
光流(Optical Flow): 在图像中观察到的亮度图案(brightness patterns)的二维位移
现在将问题转变为:从图像序列来估计运动场,即从空间和时间上的图像变化来估计运动场
3.1 图像亮度一致性方程
在大多数情况下,运动物体的视亮度保持不变,即
E
(
x
,
y
,
t
)
=
E
(
x
+
u
,
y
+
v
,
t
+
1
)
E(x,y,t)=E(x+u,y+v,t+1)
E(x,y,t)=E(x+u,y+v,t+1):
图像亮度
E
E
E,应该被看做图像平面的空间坐标
x
x
x,
y
y
y 和时间的函数,也就是
E
=
E
(
x
,
y
,
t
)
E=E(x,y,t)
E=E(x,y,t)。已知亮度一致性:
d
E
d
t
=
0
\frac{dE}{dt}=0
dtdE=0,通过链式法则求导得:
d
E
(
x
(
t
)
,
y
(
t
)
,
t
)
d
t
=
∂
E
∂
x
d
x
d
t
+
∂
E
∂
y
d
y
d
t
+
∂
E
∂
t
=
0.
\frac{d E(x(t), y(t), t)}{d t}=\frac{\partial E}{\partial x} \frac{d x}{d t}+\frac{\partial E}{\partial y} \frac{d y}{d t}+\frac{\partial E}{\partial t}=0 .
dtdE(x(t),y(t),t)=∂x∂Edtdx+∂y∂Edtdy+∂t∂E=0.
图像亮度的偏空间导数只是空间图像梯度的分量, ∇ E \nabla E ∇E 和时间导数 d x / d t dx/dt dx/dt, d y / d t dy/dt dy/dt—两个均为运动场 v \boldsymbol{v} v 分量。
上式可以重写为以下式子,其中下标
t
t
t 代表关于时间的偏微分:
(
∇
E
)
T
v
+
E
t
=
0
(\nabla E)^T\boldsymbol{v}+E_t=0
(∇E)Tv+Et=0
3.2 孔径问题(The Aperture Problem)
孔径问题 指在运动估计中无法通过单个算子(计算某个像素值变化的操作,如:梯度)准确无误地评估物体的运行轨迹。原因是每一个算子只能处理它所负责局部区域的像素值变化,然而同一种像素值变化可能是由物体的多种运行轨迹导致。
运动场也是如此,它只能得到其空间图像梯度方向的分量
v
n
\boldsymbol{v_n}
vn,该分量为垂直分量,因为空间图像梯度与沿图像光强保持不变的空间方向是垂直的。由上式
(
∇
E
)
T
v
+
E
t
=
0
(\nabla E)^T\boldsymbol{v}+E_t=0
(∇E)Tv+Et=0 可得:
−
E
t
∥
∇
E
∥
=
(
∇
E
)
⊤
v
∥
∇
E
∥
=
v
n
-\frac{E_{t}}{\|\nabla E\|}=\frac{(\nabla E)^{\top} \mathbf{v}}{\|\nabla E\|}=\boldsymbol{v_{n}}
−∥∇E∥Et=∥∇E∥(∇E)⊤v=vn


图中的黑线和灰线相同图像线在连续两帧下的不同位置。在(a)中通过小孔径 v n \boldsymbol{v_{n}} vn 所感知到的像速度只是(b)中显示的真实像速度 v \boldsymbol{v} v 的像梯度的平行分量。
3.3 光流一致性方程的有效性
已知一致性方程是在亮度不变性下得到的结论。现在要评估这个平行分量怎么样,此时引入估计的方程与真实值之间的差 Δ v \Delta v Δv。为此,需要引入一个成像模型,它与场景中的照明以及表面反射率有关。
Lambertian 模型:每个表面点从所有的观察方向看都有相同的亮度。
为了这个讨论的目的,我们将条件限制在了一个 Lambertian surface
S
S
S,由一个点光源在无限远离相机处照明----这样就可以忽略掉光度畸变(photometric distortion),这样我们可以将图像亮度
E
E
E(image brightness1) 写成:
E
=
ρ
I
T
n
E=\rho \boldsymbol{I}^T\boldsymbol{n}
E=ρITn
其中 ρ \rho ρ 为表面反射率(surface albedo),与表面的材料有关; I \boldsymbol{I} I 为发光亮度(illumination1)的光强和方向(入射光方向和总量); n \boldsymbol{n} n 为点 P \boldsymbol{P} P 在表面 S S S 的单位法向量。
将等式两边对时间求导。右侧只有表面法向量与时间有关:
d
n
d
t
=
ω
×
n
\frac{d \mathbf{n}}{dt}=\omega \times \mathbf{n}
dtdn=ω×n
求导后等式变为了(左侧同
(
∇
E
)
T
v
+
E
t
=
0
(\nabla E)^T\boldsymbol{v}+E_t=0
(∇E)Tv+Et=0获得方式):
∇
E
⊤
v
+
E
t
=
ρ
I
⊤
(
ω
×
n
)
\nabla E^{\top} \mathbf{v}+E_{t}=\rho \mathbf{I}^{\top}(\omega \times \mathbf{n})
∇E⊤v+Et=ρI⊤(ω×n)
通过3.3中的方程可以得到,真实值与估计出来的差值为:
∣
Δ
v
∣
=
ρ
∣
I
⊤
ω
×
n
∣
∥
∇
E
∥
|\Delta v|=\rho \frac{\left|\mathbf{I}^{\top} \omega \times \mathbf{n}\right|}{\|\nabla E\|}
∣Δv∣=ρ∥∇E∥∣∣I⊤ω×n∣∣
可以发现,即使在简化版 Lambertian 反射的假设下, Δ v \Delta v Δv 仅在做纯运动或刚体运动发光方向平行于角速度时为0。另外需要注意的是,在空间梯度大小增加时,估计差 Δ v \Delta v Δv 降低。这表明,具有高空间图像梯度的点的位置,在该位置上的运动场可以通过图像亮度一致性得到最好的估计结果。
在一般情况下, ∣ Δ v ∣ |\Delta v| ∣Δv∣ 不可能恒为0,图像亮度的视运动总是不等于运动场。为了避免混淆,我们把视运动称为光流。
3.4 总结
光流定义:光流是一个受制于函数: ( ∇ E ) T v + E t = 0 (\nabla E)^T\boldsymbol{v}+E_t=0 (∇E)Tv+Et=0 的矢量场,它粗略地定义为图像亮度图案的视运动。
光流是运动场的近似,可以从时变图像序列中计算得到。
在简化的假设下:
- Lambertian surface;
- 无穷远的逐点光源;
- 无光度失真
这种近似得到的误差:
- 在点有高空间梯度时,误差较小;
- 只在平移运动或任何刚体运动的照明方向平行于角速度时,误差为零;