举出几种光流方法,说明LK光流的建模方式?
光流方法是用于估计图像序列中像素点运动的技术,广泛应用于计算机视觉和视频处理领域。以下是几种常见的光流方法:
-
Lucas-Kanade (LK) 方法:
- 一种基于局部窗口的光流估计方法,假设在小的窗口内像素运动是一致的。
-
Horn-Schunck 方法:
- 一种全局方法,通过最小化整个图像的光流场的平滑性来估计运动,对于平滑和连续的运动场估计非常有效。
-
Farneback 方法:
- 这种方法基于多尺度的多项式展开来估计光流,能够提供比较稠密的光流估计。
-
DeepFlow、FlowNet 等深度学习方法:
- 利用深度学习架构来直接从数据中学习光流估计,提供了高精度的光流预测。
LK光流的建模方式
Lucas-Kanade (LK) 光流方法基于几个关键假设:
-
亮度恒定性:
- 假设像素的亮度在时间间隔内保持不变。即使图像中的物体在移动,相同的物体在不同时间的图像帧中的亮度应相同。
-
小运动:
- 像素在连续的图像帧间移动的距离是小的,这使得运动可以通过图像的一阶泰勒展开近似。
-
空间一致性:
- 在小的邻域内,相邻像素具有相似的运动。
基于这些假设,LK光流模型可以描述为:
[
I
x
u
+
I
y
v
+
I
t
=
0
I_x u + I_y v + I_t = 0
Ixu+Iyv+It=0
]
其中,(
I
x
I_x
Ix) 和 (
I
y
I_y
Iy) 是图像在x和y方向的梯度,(
I
t
I_t
It) 是时间梯度,(
u
u
u) 和 (
v
v
v) 是x和y方向的速度分量。
为了解决这个模型,LK 方法通常在一个小窗口内应用加权最小二乘法,其中权重通常取决于像素到窗口中心的距离。通过求解正规方程组,可以得到对应的速度分量 (u) 和 (v):
[
[
∑
w
I
x
2
∑
w
I
x
I
y
∑
w
I
x
I
y
∑
w
I
y
2
]
[
u
v
]
=
−
[
∑
w
I
x
I
t
∑
w
I
y
I
t
]
\begin{bmatrix} \sum w I_x^2 & \sum w I_x I_y \\ \sum w I_x I_y & \sum w I_y^2 \end{bmatrix} \begin{bmatrix} u \\ v \end{bmatrix} = -\begin{bmatrix} \sum w I_x I_t \\ \sum w I_y I_t \end{bmatrix}
[∑wIx2∑wIxIy∑wIxIy∑wIy2][uv]=−[∑wIxIt∑wIyIt]
]
这个正规方程可以通过逆矩阵解析求解,得到每个窗口内像素的运动估计。LK方法由于其简单性和效率,在实际应用中非常流行,尤其适合于高分辨率视频或实时应用场景。
https://www.youtube.com/watch?v=6wMoHgpVUn8
光流约束方程的求得
1. 光流法的基本假设
光流法基于一个基本假设,即一个像素点的灰度值在时间上是连续的。因此,对于时间 KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲ t ) 和 (
t
+
Δ
t
t + \Delta t
t+Δt ) 两个时间点,一个像素点的灰度值 ( KaTeX parse error: Can't use function '\)' in math mode at position 12: I(x, y, t) \̲)̲ 和 \( I(x + \De… ) 之间的关系可以表示为:
[
I
(
x
,
y
,
t
)
≈
I
(
x
+
Δ
x
,
y
+
Δ
y
,
t
+
Δ
t
)
I(x, y, t) \approx I(x + \Delta x, y + \Delta y, t + \Delta t)
I(x,y,t)≈I(x+Δx,y+Δy,t+Δt) ]
2. 泰勒展开
为了将这个非线性方程线性化,我们对右侧进行泰勒展开式,在点 (
(
x
,
y
,
t
)
(x, y, t)
(x,y,t) ) 处展开,忽略高阶项。泰勒展开式如下:
[
I
(
x
+
Δ
x
,
y
+
Δ
y
,
t
+
Δ
t
)
=
I
(
x
,
y
,
t
)
+
∂
I
∂
x
Δ
x
+
∂
I
∂
y
Δ
y
+
∂
I
∂
t
Δ
t
+
higher order terms
I(x + \Delta x, y + \Delta y, t + \Delta t) = I(x, y, t) + \frac{\partial I}{\partial x} \Delta x + \frac{\partial I}{\partial y} \Delta y + \frac{\partial I}{\partial t} \Delta t + \text{higher order terms}
I(x+Δx,y+Δy,t+Δt)=I(x,y,t)+∂x∂IΔx+∂y∂IΔy+∂t∂IΔt+higher order terms
]
其中,( ∂ I ∂ x \frac{\partial I}{\partial x} ∂x∂I )、( ∂ I ∂ y \frac{\partial I}{\partial y} ∂y∂I ) 和 ( ∂ I ∂ t \frac{\partial I}{\partial t} ∂t∂I ) 分别是图像灰度值在 ( x )、( y ) 和 ( t ) 方向上的偏导数。
3. 忽略高阶项
忽略高阶项,我们得到:
[
I
(
x
+
Δ
x
,
y
+
Δ
y
,
t
+
Δ
t
)
≈
I
(
x
,
y
,
t
)
+
∂
I
∂
x
Δ
x
+
∂
I
∂
y
Δ
y
+
∂
I
∂
t
Δ
t
I(x + \Delta x, y + \Delta y, t + \Delta t) \approx I(x, y, t) + \frac{\partial I}{\partial x} \Delta x + \frac{\partial I}{\partial y} \Delta y + \frac{\partial I}{\partial t} \Delta t
I(x+Δx,y+Δy,t+Δt)≈I(x,y,t)+∂x∂IΔx+∂y∂IΔy+∂t∂IΔt
]
根据光流法的假设,两个时间点的像素灰度值近似相等:
[
I
(
x
,
y
,
t
)
≈
I
(
x
+
Δ
x
,
y
+
Δ
y
,
t
+
Δ
t
)
I(x, y, t) \approx I(x + \Delta x, y + \Delta y, t + \Delta t)
I(x,y,t)≈I(x+Δx,y+Δy,t+Δt)
]
将这个近似代入上式,我们有:
[
I
(
x
,
y
,
t
)
≈
I
(
x
,
y
,
t
)
+
∂
I
∂
x
Δ
x
+
∂
I
∂
y
Δ
y
+
∂
I
∂
t
Δ
t
I(x, y, t) \approx I(x, y, t) + \frac{\partial I}{\partial x} \Delta x + \frac{\partial I}{\partial y} \Delta y + \frac{\partial I}{\partial t} \Delta t
I(x,y,t)≈I(x,y,t)+∂x∂IΔx+∂y∂IΔy+∂t∂IΔt
]
4. 消去常数项
为了消去常数项 ( I(x, y, t) ),我们将左边的 ( I(x, y, t) ) 移到右边:
[
0
≈
∂
I
∂
x
Δ
x
+
∂
I
∂
y
Δ
y
+
∂
I
∂
t
Δ
t
0 \approx \frac{\partial I}{\partial x} \Delta x + \frac{\partial I}{\partial y} \Delta y + \frac{\partial I}{\partial t} \Delta t
0≈∂x∂IΔx+∂y∂IΔy+∂t∂IΔt
]
5. 引入光流分量
假设像素点在 ( x ) 和 ( y ) 方向上的位移速度分别为 ( u ) 和 ( v ),即:
[
Δ
x
=
u
Δ
t
\Delta x = u \Delta t
Δx=uΔt
]
[
Δ
y
=
v
Δ
t
\Delta y = v \Delta t
Δy=vΔt
]
将这些代入上式,我们得到:
[
0
≈
∂
I
∂
x
u
Δ
t
+
∂
I
∂
y
v
Δ
t
+
∂
I
∂
t
Δ
t
0 \approx \frac{\partial I}{\partial x} u \Delta t + \frac{\partial I}{\partial y} v \Delta t + \frac{\partial I}{\partial t} \Delta t
0≈∂x∂IuΔt+∂y∂IvΔt+∂t∂IΔt
]
6. 消去 ( Δ t \Delta t Δt )
因为 (
Δ
t
\Delta t
Δt ) 是常数,且假设 (
Δ
t
≠
0
\Delta t \neq 0
Δt=0 ),可以将 (
Δ
t
\Delta t
Δt ) 消去,得到:
[
0
≈
∂
I
∂
x
u
+
∂
I
∂
y
v
+
∂
I
∂
t
0 \approx \frac{\partial I}{\partial x} u + \frac{\partial I}{\partial y} v + \frac{\partial I}{\partial t}
0≈∂x∂Iu+∂y∂Iv+∂t∂I
]
这就是光流约束方程(Optical Flow Constraint Equation, OFCE):
[
I
x
u
+
I
y
v
+
I
t
=
0
I_x u + I_y v + I_t = 0
Ixu+Iyv+It=0
]
其中:
- ( I x = ∂ I ∂ x I_x = \frac{\partial I}{\partial x} Ix=∂x∂I )
- ( I y = ∂ I ∂ y I_y = \frac{\partial I}{\partial y} Iy=∂y∂I )
- ( I t = ∂ I ∂ t I_t = \frac{\partial I}{\partial t} It=∂t∂I )
7. 总结
通过以上步骤,我们利用泰勒展开式将非线性的像素灰度变化关系线性化,得到光流约束方程,并通过最小二乘法求解光流分量 ( u ) 和 ( v )。
最小二乘法在光流法中的应用主要体现在光流计算的基本原理上,特别是在求解光流场时的方程组。以下是光流法中最小二乘法的具体应用步骤:
最小二乘法求解光流
在实际应用中,一个像素点附近的多个像素点都会满足上述光流约束方程。为了求解光流分量 ( u ) 和 ( v ),我们通常在一个局部窗口内使用所有像素点的光流约束方程,通过最小二乘法进行求解。
假设在窗口内有 ( n ) 个像素点,对于每个像素点,我们都有一个光流约束方程:
[
I
x
i
u
+
I
y
i
v
+
I
t
i
=
0
(
i
=
1
,
2
,
.
.
.
,
n
)
I_{xi} u + I_{yi} v + I_{ti} = 0 \quad (i = 1, 2, ..., n)
Ixiu+Iyiv+Iti=0(i=1,2,...,n)
]
这些方程可以用矩阵形式表示为:
[
A
(
u
v
)
=
b
A \begin{pmatrix} u \\ v \end{pmatrix} = b
A(uv)=b
]
其中,矩阵 ( A ) 和向量 ( b ) 的形式为:
[
A
=
(
I
x
1
I
y
1
I
x
2
I
y
2
⋮
⋮
I
x
n
I
y
n
)
,
b
=
(
−
I
t
1
−
I
t
2
⋮
−
I
t
n
)
A = \begin{pmatrix} I_{x1} & I_{y1} \\ I_{x2} & I_{y2} \\ \vdots & \vdots \\ I_{xn} & I_{yn} \end{pmatrix}, \quad b = \begin{pmatrix} -I_{t1} \\ -I_{t2} \\ \vdots \\ -I_{tn} \end{pmatrix}
A=
Ix1Ix2⋮IxnIy1Iy2⋮Iyn
,b=
−It1−It2⋮−Itn
]
4. 最小二乘法解
目标函数
我们通过最小化误差平方和来求解 ( u ) 和 ( v )。目标函数为:
[
J
(
u
,
v
)
=
∑
i
=
1
n
(
I
x
i
u
+
I
y
i
v
+
I
t
i
)
2
J(u, v) = \sum_{i=1}^n (I_{xi} u + I_{yi} v + I_{ti})^2
J(u,v)=i=1∑n(Ixiu+Iyiv+Iti)2
]
用矩阵表示,则目标函数为:
[
J
(
u
,
v
)
=
∥
A
(
u
v
)
−
b
∥
2
J(u, v) = \| A \begin{pmatrix} u \\ v \end{pmatrix} - b \|^2
J(u,v)=∥A(uv)−b∥2
]
最小化误差平方和
为了最小化 ( J ),我们对 ( J ) 求导并设导数为零。目标是找到使得 ( J ) 最小的 ( u ) 和 ( v )。
[
∂
J
∂
u
=
0
\frac{\partial J}{\partial u} = 0
∂u∂J=0 ]
[
∂
J
∂
v
=
0
\frac{\partial J}{\partial v} = 0
∂v∂J=0 ]
正规方程
求导数并设为零,得到正规方程:
[
A
T
(
A
(
u
v
)
−
b
)
=
0
A^T (A \begin{pmatrix} u \\ v \end{pmatrix} - b) = 0
AT(A(uv)−b)=0 ]
展开后得到:
[
A
T
A
(
u
v
)
=
A
T
b
A^T A \begin{pmatrix} u \\ v \end{pmatrix} = A^T b
ATA(uv)=ATb ]
求解正规方程
如果 (
A
T
A
A^T A
ATA ) 是可逆的,则可以解得:
[
(
u
v
)
=
(
A
T
A
)
−
1
A
T
b
\begin{pmatrix} u \\ v \end{pmatrix} = (A^T A)^{-1} A^T b
(uv)=(ATA)−1ATb ]
其中:
- ( A T A^T AT ) 是 ( A A A ) 的转置矩阵
- ( ( A T A ) − 1 (A^T A)^{-1} (ATA)−1 ) 是 ( A T A A^T A ATA ) 的逆矩阵
实际应用
在实际应用中,为了确保 ( A T A A^T A ATA ) 是可逆的,通常会选择合适的窗口大小和像素点数。对于一些稀疏或特定图像区域,可能需要进行额外的处理(如加入正则化项)以保证解的稳定性。
总结
通过最小二乘法,我们将光流约束方程转化为一个线性方程组,并通过正规方程求解得到光流分量 ( u ) 和 ( v )。这一过程在图像运动检测、视频稳定等应用中具有重要意义。
什么是正规方程
正规方程(Normal Equations)是最小二乘法(Least Squares Method)中用来求解线性回归问题的一种方法。它通过构造一个线性方程组来找到最佳拟合参数。下面详细解释正规方程的概念和推导过程。
背景
假设我们有一组线性方程,表示为矩阵形式:
[
A
x
=
b
A \mathbf{x} = \mathbf{b}
Ax=b ]
其中:
- ( KaTeX parse error: Can't use function '\)' in math mode at position 3: A \̲)̲ 是一个 \( m \time…)
- ( x \mathbf{x} x ) 是一个 ( n × 1 n \times 1 n×1 ) 的参数向量
- ( b \mathbf{b} b ) 是一个 ( m × 1 m \times 1 m×1 ) 的观测值向量
在最小二乘法中,我们的目标是找到参数向量 (
x
\mathbf{x}
x ),使得误差平方和最小,即:
[
min
x
∥
A
x
−
b
∥
2
\min_{\mathbf{x}} \| A \mathbf{x} - \mathbf{b} \|^2
minx∥Ax−b∥2 ]
推导正规方程
我们通过以下步骤来推导正规方程:
-
构造目标函数:定义误差平方和为目标函数 ( J ( x ) J(\mathbf{x}) J(x) ):
[ J ( x ) = ∥ A x − b ∥ 2 J(\mathbf{x}) = \| A \mathbf{x} - \mathbf{b} \|^2 J(x)=∥Ax−b∥2 ] -
展开目标函数:
[ J ( x ) = ( A x − b ) T ( A x − b ) J(\mathbf{x}) = (A \mathbf{x} - \mathbf{b})^T (A \mathbf{x} - \mathbf{b}) J(x)=(Ax−b)T(Ax−b) ] -
求目标函数的梯度:为了找到最小值,我们对目标函数 ( J ( x ) J(\mathbf{x}) J(x) ) 对 ( x \mathbf{x} x ) 求导并设为零。首先,我们对 ( J ( x ) J(\mathbf{x}) J(x) ) 求梯度:
[ ∇ J ( x ) = 2 A T ( A x − b ) \nabla J(\mathbf{x}) = 2 A^T (A \mathbf{x} - \mathbf{b}) ∇J(x)=2AT(Ax−b) ] -
设梯度为零:
[ ∇ J ( x ) = 0 \nabla J(\mathbf{x}) = 0 ∇J(x)=0 ]
[ 2 A T ( A x − b ) = 0 2 A^T (A \mathbf{x} - \mathbf{b}) = 0 2AT(Ax−b)=0 ] -
得到正规方程:简化后得到正规方程:
[ A T A x = A T b A^T A \mathbf{x} = A^T \mathbf{b} ATAx=ATb ]
求解正规方程
正规方程 (
A
T
A
x
=
A
T
b
A^T A \mathbf{x} = A^T \mathbf{b}
ATAx=ATb ) 是一个线性方程组,我们可以通过矩阵求逆来求解参数向量 (
x
\mathbf{x}
x )(前提是 (
A
T
A
A^T A
ATA ) 是可逆的):
[
x
=
(
A
T
A
)
−
1
A
T
b
\mathbf{x} = (A^T A)^{-1} A^T \mathbf{b}
x=(ATA)−1ATb ]
例子
考虑一个简单的线性回归问题:给定一组数据点 ( (x_i, y_i) ),我们希望找到一条直线 ( y = ax + b ) 来最小化预测值和实际值之间的误差平方和。
-
构造矩阵 ( A ) 和向量 ( \mathbf{b} ):
[ A = ( 1 x 1 1 x 2 ⋮ ⋮ 1 x m ) , b = ( y 1 y 2 ⋮ y m ) A = \begin{pmatrix} 1 & x_1 \\ 1 & x_2 \\ \vdots & \vdots \\ 1 & x_m \end{pmatrix}, \quad \mathbf{b} = \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{pmatrix} A= 11⋮1x1x2⋮xm ,b= y1y2⋮ym ] -
解正规方程 ( A T A x = A T b A^T A \mathbf{x} = A^T \mathbf{b} ATAx=ATb ):
[ A T A = ( m ∑ i = 1 m x i ∑ i = 1 m x i ∑ i = 1 m x i 2 ) , A T b = ( ∑ i = 1 m y i ∑ i = 1 m x i y i ) A^T A = \begin{pmatrix} m & \sum_{i=1}^m x_i \\ \sum_{i=1}^m x_i & \sum_{i=1}^m x_i^2 \end{pmatrix}, \quad A^T \mathbf{b} = \begin{pmatrix} \sum_{i=1}^m y_i \\ \sum_{i=1}^m x_i y_i \end{pmatrix} ATA=(m∑i=1mxi∑i=1mxi∑i=1mxi2),ATb=(∑i=1myi∑i=1mxiyi) ] -
求解参数 ( x = ( a , b ) \mathbf{x} = (a, b) x=(a,b) ):
[ x = ( A T A ) − 1 A T b \mathbf{x} = (A^T A)^{-1} A^T \mathbf{b} x=(ATA)−1ATb ]
通过这些步骤,我们可以找到最佳拟合的参数 ( a ) 和 ( b )。
总结
正规方程是通过最小化误差平方和来求解线性回归问题的一种方法。它通过构造一个线性方程组并求解该方程组来找到最佳拟合参数。在某些情况下(如数据矩阵 ( A ) 的列数远小于行数),正规方程是一个有效的求解方法。# 举出几种光流方法,说明LK光流的建模方式?
光流方法是用于估计图像序列中像素点运动的技术,广泛应用于计算机视觉和视频处理领域。以下是几种常见的光流方法:
-
Lucas-Kanade (LK) 方法:
- 一种基于局部窗口的光流估计方法,假设在小的窗口内像素运动是一致的。
-
Horn-Schunck 方法:
- 一种全局方法,通过最小化整个图像的光流场的平滑性来估计运动,对于平滑和连续的运动场估计非常有效。
-
Farneback 方法:
- 这种方法基于多尺度的多项式展开来估计光流,能够提供比较稠密的光流估计。
-
DeepFlow、FlowNet 等深度学习方法:
- 利用深度学习架构来直接从数据中学习光流估计,提供了高精度的光流预测。
LK光流的建模方式
Lucas-Kanade (LK) 光流方法基于几个关键假设:
-
亮度恒定性:
- 假设像素的亮度在时间间隔内保持不变。即使图像中的物体在移动,相同的物体在不同时间的图像帧中的亮度应相同。
-
小运动:
- 像素在连续的图像帧间移动的距离是小的,这使得运动可以通过图像的一阶泰勒展开近似。
-
空间一致性:
- 在小的邻域内,相邻像素具有相似的运动。
基于这些假设,LK光流模型可以描述为:
[
I
x
u
+
I
y
v
+
I
t
=
0
I_x u + I_y v + I_t = 0
Ixu+Iyv+It=0
]
其中,(
I
x
I_x
Ix) 和 (
I
y
I_y
Iy) 是图像在x和y方向的梯度,(
I
t
I_t
It) 是时间梯度,(
u
u
u) 和 (
v
v
v) 是x和y方向的速度分量。
为了解决这个模型,LK 方法通常在一个小窗口内应用加权最小二乘法,其中权重通常取决于像素到窗口中心的距离。通过求解正规方程组,可以得到对应的速度分量 (u) 和 (v):
[
[
∑
w
I
x
2
∑
w
I
x
I
y
∑
w
I
x
I
y
∑
w
I
y
2
]
[
u
v
]
=
−
[
∑
w
I
x
I
t
∑
w
I
y
I
t
]
\begin{bmatrix} \sum w I_x^2 & \sum w I_x I_y \\ \sum w I_x I_y & \sum w I_y^2 \end{bmatrix} \begin{bmatrix} u \\ v \end{bmatrix} = -\begin{bmatrix} \sum w I_x I_t \\ \sum w I_y I_t \end{bmatrix}
[∑wIx2∑wIxIy∑wIxIy∑wIy2][uv]=−[∑wIxIt∑wIyIt]
]
这个正规方程可以通过逆矩阵解析求解,得到每个窗口内像素的运动估计。LK方法由于其简单性和效率,在实际应用中非常流行,尤其适合于高分辨率视频或实时应用场景。
https://www.youtube.com/watch?v=6wMoHgpVUn8
光流约束方程的求得
1. 光流法的基本假设
光流法基于一个基本假设,即一个像素点的灰度值在时间上是连续的。因此,对于时间 KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲ t ) 和 (
t
+
Δ
t
t + \Delta t
t+Δt ) 两个时间点,一个像素点的灰度值 ( KaTeX parse error: Can't use function '\)' in math mode at position 12: I(x, y, t) \̲)̲ 和 \( I(x + \De… ) 之间的关系可以表示为:
[
I
(
x
,
y
,
t
)
≈
I
(
x
+
Δ
x
,
y
+
Δ
y
,
t
+
Δ
t
)
I(x, y, t) \approx I(x + \Delta x, y + \Delta y, t + \Delta t)
I(x,y,t)≈I(x+Δx,y+Δy,t+Δt) ]
2. 泰勒展开
为了将这个非线性方程线性化,我们对右侧进行泰勒展开式,在点 (
(
x
,
y
,
t
)
(x, y, t)
(x,y,t) ) 处展开,忽略高阶项。泰勒展开式如下:
[
I
(
x
+
Δ
x
,
y
+
Δ
y
,
t
+
Δ
t
)
=
I
(
x
,
y
,
t
)
+
∂
I
∂
x
Δ
x
+
∂
I
∂
y
Δ
y
+
∂
I
∂
t
Δ
t
+
higher order terms
I(x + \Delta x, y + \Delta y, t + \Delta t) = I(x, y, t) + \frac{\partial I}{\partial x} \Delta x + \frac{\partial I}{\partial y} \Delta y + \frac{\partial I}{\partial t} \Delta t + \text{higher order terms}
I(x+Δx,y+Δy,t+Δt)=I(x,y,t)+∂x∂IΔx+∂y∂IΔy+∂t∂IΔt+higher order terms
]
其中,( ∂ I ∂ x \frac{\partial I}{\partial x} ∂x∂I )、( ∂ I ∂ y \frac{\partial I}{\partial y} ∂y∂I ) 和 ( ∂ I ∂ t \frac{\partial I}{\partial t} ∂t∂I ) 分别是图像灰度值在 ( x )、( y ) 和 ( t ) 方向上的偏导数。
3. 忽略高阶项
忽略高阶项,我们得到:
[
I
(
x
+
Δ
x
,
y
+
Δ
y
,
t
+
Δ
t
)
≈
I
(
x
,
y
,
t
)
+
∂
I
∂
x
Δ
x
+
∂
I
∂
y
Δ
y
+
∂
I
∂
t
Δ
t
I(x + \Delta x, y + \Delta y, t + \Delta t) \approx I(x, y, t) + \frac{\partial I}{\partial x} \Delta x + \frac{\partial I}{\partial y} \Delta y + \frac{\partial I}{\partial t} \Delta t
I(x+Δx,y+Δy,t+Δt)≈I(x,y,t)+∂x∂IΔx+∂y∂IΔy+∂t∂IΔt
]
根据光流法的假设,两个时间点的像素灰度值近似相等:
[
I
(
x
,
y
,
t
)
≈
I
(
x
+
Δ
x
,
y
+
Δ
y
,
t
+
Δ
t
)
I(x, y, t) \approx I(x + \Delta x, y + \Delta y, t + \Delta t)
I(x,y,t)≈I(x+Δx,y+Δy,t+Δt)
]
将这个近似代入上式,我们有:
[
I
(
x
,
y
,
t
)
≈
I
(
x
,
y
,
t
)
+
∂
I
∂
x
Δ
x
+
∂
I
∂
y
Δ
y
+
∂
I
∂
t
Δ
t
I(x, y, t) \approx I(x, y, t) + \frac{\partial I}{\partial x} \Delta x + \frac{\partial I}{\partial y} \Delta y + \frac{\partial I}{\partial t} \Delta t
I(x,y,t)≈I(x,y,t)+∂x∂IΔx+∂y∂IΔy+∂t∂IΔt
]
4. 消去常数项
为了消去常数项 ( I(x, y, t) ),我们将左边的 ( I(x, y, t) ) 移到右边:
[
0
≈
∂
I
∂
x
Δ
x
+
∂
I
∂
y
Δ
y
+
∂
I
∂
t
Δ
t
0 \approx \frac{\partial I}{\partial x} \Delta x + \frac{\partial I}{\partial y} \Delta y + \frac{\partial I}{\partial t} \Delta t
0≈∂x∂IΔx+∂y∂IΔy+∂t∂IΔt
]
5. 引入光流分量
假设像素点在 ( x ) 和 ( y ) 方向上的位移速度分别为 ( u ) 和 ( v ),即:
[
Δ
x
=
u
Δ
t
\Delta x = u \Delta t
Δx=uΔt
]
[
Δ
y
=
v
Δ
t
\Delta y = v \Delta t
Δy=vΔt
]
将这些代入上式,我们得到:
[
0
≈
∂
I
∂
x
u
Δ
t
+
∂
I
∂
y
v
Δ
t
+
∂
I
∂
t
Δ
t
0 \approx \frac{\partial I}{\partial x} u \Delta t + \frac{\partial I}{\partial y} v \Delta t + \frac{\partial I}{\partial t} \Delta t
0≈∂x∂IuΔt+∂y∂IvΔt+∂t∂IΔt
]
6. 消去 ( Δ t \Delta t Δt )
因为 (
Δ
t
\Delta t
Δt ) 是常数,且假设 (
Δ
t
≠
0
\Delta t \neq 0
Δt=0 ),可以将 (
Δ
t
\Delta t
Δt ) 消去,得到:
[
0
≈
∂
I
∂
x
u
+
∂
I
∂
y
v
+
∂
I
∂
t
0 \approx \frac{\partial I}{\partial x} u + \frac{\partial I}{\partial y} v + \frac{\partial I}{\partial t}
0≈∂x∂Iu+∂y∂Iv+∂t∂I
]
这就是光流约束方程(Optical Flow Constraint Equation, OFCE):
[
I
x
u
+
I
y
v
+
I
t
=
0
I_x u + I_y v + I_t = 0
Ixu+Iyv+It=0
]
其中:
- ( I x = ∂ I ∂ x I_x = \frac{\partial I}{\partial x} Ix=∂x∂I )
- ( I y = ∂ I ∂ y I_y = \frac{\partial I}{\partial y} Iy=∂y∂I )
- ( I t = ∂ I ∂ t I_t = \frac{\partial I}{\partial t} It=∂t∂I )
7. 总结
通过以上步骤,我们利用泰勒展开式将非线性的像素灰度变化关系线性化,得到光流约束方程,并通过最小二乘法求解光流分量 ( u ) 和 ( v )。
最小二乘法在光流法中的应用主要体现在光流计算的基本原理上,特别是在求解光流场时的方程组。以下是光流法中最小二乘法的具体应用步骤:
最小二乘法求解光流
在实际应用中,一个像素点附近的多个像素点都会满足上述光流约束方程。为了求解光流分量 ( u ) 和 ( v ),我们通常在一个局部窗口内使用所有像素点的光流约束方程,通过最小二乘法进行求解。
假设在窗口内有 ( n ) 个像素点,对于每个像素点,我们都有一个光流约束方程:
[
I
x
i
u
+
I
y
i
v
+
I
t
i
=
0
(
i
=
1
,
2
,
.
.
.
,
n
)
I_{xi} u + I_{yi} v + I_{ti} = 0 \quad (i = 1, 2, ..., n)
Ixiu+Iyiv+Iti=0(i=1,2,...,n)
]
这些方程可以用矩阵形式表示为:
[
A
(
u
v
)
=
b
A \begin{pmatrix} u \\ v \end{pmatrix} = b
A(uv)=b
]
其中,矩阵 ( A ) 和向量 ( b ) 的形式为:
[
A
=
(
I
x
1
I
y
1
I
x
2
I
y
2
⋮
⋮
I
x
n
I
y
n
)
,
b
=
(
−
I
t
1
−
I
t
2
⋮
−
I
t
n
)
A = \begin{pmatrix} I_{x1} & I_{y1} \\ I_{x2} & I_{y2} \\ \vdots & \vdots \\ I_{xn} & I_{yn} \end{pmatrix}, \quad b = \begin{pmatrix} -I_{t1} \\ -I_{t2} \\ \vdots \\ -I_{tn} \end{pmatrix}
A=
Ix1Ix2⋮IxnIy1Iy2⋮Iyn
,b=
−It1−It2⋮−Itn
]
4. 最小二乘法解
目标函数
我们通过最小化误差平方和来求解 ( u ) 和 ( v )。目标函数为:
[
J
(
u
,
v
)
=
∑
i
=
1
n
(
I
x
i
u
+
I
y
i
v
+
I
t
i
)
2
J(u, v) = \sum_{i=1}^n (I_{xi} u + I_{yi} v + I_{ti})^2
J(u,v)=i=1∑n(Ixiu+Iyiv+Iti)2
]
用矩阵表示,则目标函数为:
[
J
(
u
,
v
)
=
∥
A
(
u
v
)
−
b
∥
2
J(u, v) = \| A \begin{pmatrix} u \\ v \end{pmatrix} - b \|^2
J(u,v)=∥A(uv)−b∥2
]
最小化误差平方和
为了最小化 ( J ),我们对 ( J ) 求导并设导数为零。目标是找到使得 ( J ) 最小的 ( u ) 和 ( v )。
[
∂
J
∂
u
=
0
\frac{\partial J}{\partial u} = 0
∂u∂J=0 ]
[
∂
J
∂
v
=
0
\frac{\partial J}{\partial v} = 0
∂v∂J=0 ]
正规方程
求导数并设为零,得到正规方程:
[
A
T
(
A
(
u
v
)
−
b
)
=
0
A^T (A \begin{pmatrix} u \\ v \end{pmatrix} - b) = 0
AT(A(uv)−b)=0 ]
展开后得到:
[
A
T
A
(
u
v
)
=
A
T
b
A^T A \begin{pmatrix} u \\ v \end{pmatrix} = A^T b
ATA(uv)=ATb ]
求解正规方程
如果 (
A
T
A
A^T A
ATA ) 是可逆的,则可以解得:
[
(
u
v
)
=
(
A
T
A
)
−
1
A
T
b
\begin{pmatrix} u \\ v \end{pmatrix} = (A^T A)^{-1} A^T b
(uv)=(ATA)−1ATb ]
其中:
- ( A T A^T AT ) 是 ( A A A ) 的转置矩阵
- ( ( A T A ) − 1 (A^T A)^{-1} (ATA)−1 ) 是 ( A T A A^T A ATA ) 的逆矩阵
实际应用
在实际应用中,为了确保 ( A T A A^T A ATA ) 是可逆的,通常会选择合适的窗口大小和像素点数。对于一些稀疏或特定图像区域,可能需要进行额外的处理(如加入正则化项)以保证解的稳定性。
总结
通过最小二乘法,我们将光流约束方程转化为一个线性方程组,并通过正规方程求解得到光流分量 ( u ) 和 ( v )。这一过程在图像运动检测、视频稳定等应用中具有重要意义。
什么是正规方程
正规方程(Normal Equations)是最小二乘法(Least Squares Method)中用来求解线性回归问题的一种方法。它通过构造一个线性方程组来找到最佳拟合参数。下面详细解释正规方程的概念和推导过程。
背景
假设我们有一组线性方程,表示为矩阵形式:
[
A
x
=
b
A \mathbf{x} = \mathbf{b}
Ax=b ]
其中:
- ( KaTeX parse error: Can't use function '\)' in math mode at position 3: A \̲)̲ 是一个 \( m \time…)
- ( x \mathbf{x} x ) 是一个 ( n × 1 n \times 1 n×1 ) 的参数向量
- ( b \mathbf{b} b ) 是一个 ( m × 1 m \times 1 m×1 ) 的观测值向量
在最小二乘法中,我们的目标是找到参数向量 (
x
\mathbf{x}
x ),使得误差平方和最小,即:
[
min
x
∥
A
x
−
b
∥
2
\min_{\mathbf{x}} \| A \mathbf{x} - \mathbf{b} \|^2
minx∥Ax−b∥2 ]
推导正规方程
我们通过以下步骤来推导正规方程:
-
构造目标函数:定义误差平方和为目标函数 ( J ( x ) J(\mathbf{x}) J(x) ):
[ J ( x ) = ∥ A x − b ∥ 2 J(\mathbf{x}) = \| A \mathbf{x} - \mathbf{b} \|^2 J(x)=∥Ax−b∥2 ] -
展开目标函数:
[ J ( x ) = ( A x − b ) T ( A x − b ) J(\mathbf{x}) = (A \mathbf{x} - \mathbf{b})^T (A \mathbf{x} - \mathbf{b}) J(x)=(Ax−b)T(Ax−b) ] -
求目标函数的梯度:为了找到最小值,我们对目标函数 ( J ( x ) J(\mathbf{x}) J(x) ) 对 ( x \mathbf{x} x ) 求导并设为零。首先,我们对 ( J ( x ) J(\mathbf{x}) J(x) ) 求梯度:
[ ∇ J ( x ) = 2 A T ( A x − b ) \nabla J(\mathbf{x}) = 2 A^T (A \mathbf{x} - \mathbf{b}) ∇J(x)=2AT(Ax−b) ] -
设梯度为零:
[ ∇ J ( x ) = 0 \nabla J(\mathbf{x}) = 0 ∇J(x)=0 ]
[ 2 A T ( A x − b ) = 0 2 A^T (A \mathbf{x} - \mathbf{b}) = 0 2AT(Ax−b)=0 ] -
得到正规方程:简化后得到正规方程:
[ A T A x = A T b A^T A \mathbf{x} = A^T \mathbf{b} ATAx=ATb ]
求解正规方程
正规方程 (
A
T
A
x
=
A
T
b
A^T A \mathbf{x} = A^T \mathbf{b}
ATAx=ATb ) 是一个线性方程组,我们可以通过矩阵求逆来求解参数向量 (
x
\mathbf{x}
x )(前提是 (
A
T
A
A^T A
ATA ) 是可逆的):
[
x
=
(
A
T
A
)
−
1
A
T
b
\mathbf{x} = (A^T A)^{-1} A^T \mathbf{b}
x=(ATA)−1ATb ]
例子
考虑一个简单的线性回归问题:给定一组数据点 ( (x_i, y_i) ),我们希望找到一条直线 ( y = ax + b ) 来最小化预测值和实际值之间的误差平方和。
-
构造矩阵 ( A ) 和向量 ( \mathbf{b} ):
[ A = ( 1 x 1 1 x 2 ⋮ ⋮ 1 x m ) , b = ( y 1 y 2 ⋮ y m ) A = \begin{pmatrix} 1 & x_1 \\ 1 & x_2 \\ \vdots & \vdots \\ 1 & x_m \end{pmatrix}, \quad \mathbf{b} = \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{pmatrix} A= 11⋮1x1x2⋮xm ,b= y1y2⋮ym ] -
解正规方程 ( A T A x = A T b A^T A \mathbf{x} = A^T \mathbf{b} ATAx=ATb ):
[ A T A = ( m ∑ i = 1 m x i ∑ i = 1 m x i ∑ i = 1 m x i 2 ) , A T b = ( ∑ i = 1 m y i ∑ i = 1 m x i y i ) A^T A = \begin{pmatrix} m & \sum_{i=1}^m x_i \\ \sum_{i=1}^m x_i & \sum_{i=1}^m x_i^2 \end{pmatrix}, \quad A^T \mathbf{b} = \begin{pmatrix} \sum_{i=1}^m y_i \\ \sum_{i=1}^m x_i y_i \end{pmatrix} ATA=(m∑i=1mxi∑i=1mxi∑i=1mxi2),ATb=(∑i=1myi∑i=1mxiyi) ] -
求解参数 ( x = ( a , b ) \mathbf{x} = (a, b) x=(a,b) ):
[ x = ( A T A ) − 1 A T b \mathbf{x} = (A^T A)^{-1} A^T \mathbf{b} x=(ATA)−1ATb ]
通过这些步骤,我们可以找到最佳拟合的参数 ( a ) 和 ( b )。
总结
正规方程是通过最小化误差平方和来求解线性回归问题的一种方法。它通过构造一个线性方程组并求解该方程组来找到最佳拟合参数。在某些情况下(如数据矩阵 ( A ) 的列数远小于行数),正规方程是一个有效的求解方法。