Lucas-Kanade光流算法通过假设像素的变化速度与其临近像素的变化一致来增加约束条件,并利用最小二乘法来计算光流【学习本文内容前,需要先了解光流的基础知识】。构建目标函数如下:
E
=
∑
p
′
n
e
a
r
p
g
(
p
′
)
(
u
I
p
x
′
+
v
I
p
y
′
+
I
t
)
2
E = \sum_{p^{\prime}\ near\ p}g(p^{\prime})(uI_{p^{\prime}_{x}} + vI_{p^{\prime}_{y}} + I_{t})^2
E=p′ near p∑g(p′)(uIpx′+vIpy′+It)2
其中,
p
′
p^{\prime}
p′表示像素
p
p
p附近的像素(包括像素
p
p
p本身),它们共享速度
(
u
,
v
)
(u,v)
(u,v)。
g
(
p
′
)
g(p^{\prime})
g(p′)表示权重函数,限定每个临近像素
p
′
p^{\prime}
p′对像素
p
p
p的影响,常用的权重函数有高斯函数。对于计算目标函数
E
E
E取得最小值时
u
u
u和
v
v
v的取值,可采用梯度下降法:
{
u
:
=
u
−
α
∂
E
∂
u
v
:
=
v
−
α
∂
E
∂
v
\begin{cases} u := u - \alpha\frac{\partial{E}}{\partial{u}} \\ v := v - \alpha\frac{\partial{E}}{\partial{v}} \end{cases}
{u:=u−α∂u∂Ev:=v−α∂v∂E
其中,
∂
E
∂
u
\frac{\partial{E}}{\partial{u}}
∂u∂E和
∂
E
∂
v
\frac{\partial{E}}{\partial{v}}
∂v∂E的计算式如下:
∂
E
∂
u
=
∑
p
′
n
e
a
r
p
2
g
(
p
′
)
(
u
I
p
x
′
2
+
v
I
p
y
′
I
p
x
′
+
I
t
I
p
x
′
)
∂
E
∂
v
=
∑
p
′
n
e
a
r
p
2
g
(
p
′
)
(
u
I
p
x
′
I
p
y
′
+
v
I
p
y
′
2
+
I
t
I
p
y
′
)
\frac{\partial{E}}{\partial{u}} = \sum_{p^{\prime}\ near\ p}2g(p^{\prime})(uI_{p^{\prime}_{x}}^2 + vI_{p^{\prime}_{y}}I_{p^{\prime}_{x}} + I_{t}I_{p^{\prime}_{x}}) \\ \frac{\partial{E}}{\partial{v}} = \sum_{p^{\prime}\ near\ p}2g(p^{\prime})(uI_{p^{\prime}_{x}}I_{p^{\prime}_{y}} + vI_{p^{\prime}_{y}}^2 + I_{t}I_{p^{\prime}_{y}})
∂u∂E=p′ near p∑2g(p′)(uIpx′2+vIpy′Ipx′+ItIpx′)∂v∂E=p′ near p∑2g(p′)(uIpx′Ipy′+vIpy′2+ItIpy′)
扩展
Lucas和Kanade在1981年发表的论文 A n I t e r a t i v e I m a g e R e g i s t r a t i o n T e c h n i q u e w i t h a n A p p l i c a t i o n t o S t e r e o V i s i o n An\ Iterative\ Image\ Registration\ Technique\ with\ an\ Application\ to\ Stereo\ Vision An Iterative Image Registration Technique with an Application to Stereo Vision中指出,此算法还可以用于计算图像间的旋转、缩放、裁剪、对比度和亮度的变化。
令
F
(
p
)
F(p)
F(p)和
G
(
p
)
G(p)
G(p)分别为图像一和图像二,
p
p
p表示像素。图像间的旋转、缩放和裁剪的关系可以构建如下表达式:
G
(
p
)
=
F
(
p
+
h
)
A
G(p) = F(p + h)A
G(p)=F(p+h)A
注:原文中的公式是 G ( p ) = F ( p A + h ) G(p) = F(pA + h) G(p)=F(pA+h)。不过,我认为 G ( p ) = F ( p + h ) A G(p) = F(p + h)A G(p)=F(p+h)A表达更合适。
其中,
A
A
A为矩阵,表示图像
F
F
F和图像
G
G
G之间的线形变化,例如:旋转矩阵。
h
h
h表示光流
(
u
,
v
)
(u,v)
(u,v)。可构建目标函数如下:
E
=
∑
p
′
n
e
a
r
p
[
F
(
p
+
h
)
A
−
G
(
p
)
]
2
E = \sum_{p^{\prime}\ near\ p}[F(p + h)A - G(p)]^2
E=p′ near p∑[F(p+h)A−G(p)]2
图像间的对比度和亮度变化关系可以构建如下表达式:
G
(
p
)
=
α
F
(
p
)
+
β
G(p) = \alpha F(p) + \beta
G(p)=αF(p)+β
其中,
α
\alpha
α表示图像对比度变化,
β
\beta
β表示图像亮度变化。至此,可构建新的目标函数来同时计算图像间的旋转、缩放、裁剪、对比度和亮度的变化。如下:
E
=
∑
p
′
n
e
a
r
p
[
F
(
p
+
h
)
A
−
(
α
F
(
p
)
+
β
)
]
2
E = \sum_{p^{\prime}\ near\ p}[F(p + h)A - (\alpha F(p) + \beta)]^2
E=p′ near p∑[F(p+h)A−(αF(p)+β)]2