Bootstrap

一文理清LK光流

举出几种光流方法,说明LK光流的建模方式?

光流方法是用于估计图像序列中像素点运动的技术,广泛应用于计算机视觉和视频处理领域。以下是几种常见的光流方法:

  1. Lucas-Kanade (LK) 方法

    • 一种基于局部窗口的光流估计方法,假设在小的窗口内像素运动是一致的。
  2. Horn-Schunck 方法

    • 一种全局方法,通过最小化整个图像的光流场的平滑性来估计运动,对于平滑和连续的运动场估计非常有效。
  3. Farneback 方法

    • 这种方法基于多尺度的多项式展开来估计光流,能够提供比较稠密的光流估计。
  4. 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} [wIx2wIxIywIxIywIy2][uv]=[wIxItwIyIt]
]

这个正规方程可以通过逆矩阵解析求解,得到每个窗口内像素的运动估计。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)+xIΔx+yIΔy+tIΔt+higher order terms
]

其中,( ∂ I ∂ x \frac{\partial I}{\partial x} xI )、( ∂ I ∂ y \frac{\partial I}{\partial y} yI ) 和 ( ∂ I ∂ t \frac{\partial I}{\partial t} tI ) 分别是图像灰度值在 ( 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)+xIΔx+yIΔy+tIΔ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)+xIΔx+yIΔy+tIΔ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 0xIΔx+yIΔy+tIΔ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 0xIuΔt+yIvΔt+tIΔ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} 0xIu+yIv+tI
]

这就是光流约束方程(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=xI )
  • ( I y = ∂ I ∂ y I_y = \frac{\partial I}{\partial y} Iy=yI )
  • ( I t = ∂ I ∂ t I_t = \frac{\partial I}{\partial t} It=tI )

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= Ix1Ix2IxnIy1Iy2Iyn ,b= It1It2Itn
]

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=1n(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)b2
]

最小化误差平方和

为了最小化 ( J ),我们对 ( J ) 求导并设导数为零。目标是找到使得 ( J ) 最小的 ( u ) 和 ( v )。

[ ∂ J ∂ u = 0 \frac{\partial J}{\partial u} = 0 uJ=0 ]
[ ∂ J ∂ v = 0 \frac{\partial J}{\partial v} = 0 vJ=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 minxAxb2 ]

推导正规方程

我们通过以下步骤来推导正规方程:

  1. 构造目标函数:定义误差平方和为目标函数 ( J ( x ) J(\mathbf{x}) J(x) ):
    [ J ( x ) = ∥ A x − b ∥ 2 J(\mathbf{x}) = \| A \mathbf{x} - \mathbf{b} \|^2 J(x)=Axb2 ]

  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)=(Axb)T(Axb) ]

  3. 求目标函数的梯度:为了找到最小值,我们对目标函数 ( 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(Axb) ]

  4. 设梯度为零
    [ ∇ 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(Axb)=0 ]

  5. 得到正规方程:简化后得到正规方程:
    [ 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 ) 来最小化预测值和实际值之间的误差平方和。

  1. 构造矩阵 ( 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= 111x1x2xm ,b= y1y2ym ]

  2. 解正规方程 ( 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=(mi=1mxii=1mxii=1mxi2),ATb=(i=1myii=1mxiyi) ]

  3. 求解参数 ( 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光流的建模方式?

光流方法是用于估计图像序列中像素点运动的技术,广泛应用于计算机视觉和视频处理领域。以下是几种常见的光流方法:

  1. Lucas-Kanade (LK) 方法

    • 一种基于局部窗口的光流估计方法,假设在小的窗口内像素运动是一致的。
  2. Horn-Schunck 方法

    • 一种全局方法,通过最小化整个图像的光流场的平滑性来估计运动,对于平滑和连续的运动场估计非常有效。
  3. Farneback 方法

    • 这种方法基于多尺度的多项式展开来估计光流,能够提供比较稠密的光流估计。
  4. 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} [wIx2wIxIywIxIywIy2][uv]=[wIxItwIyIt]
]

这个正规方程可以通过逆矩阵解析求解,得到每个窗口内像素的运动估计。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)+xIΔx+yIΔy+tIΔt+higher order terms
]

其中,( ∂ I ∂ x \frac{\partial I}{\partial x} xI )、( ∂ I ∂ y \frac{\partial I}{\partial y} yI ) 和 ( ∂ I ∂ t \frac{\partial I}{\partial t} tI ) 分别是图像灰度值在 ( 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)+xIΔx+yIΔy+tIΔ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)+xIΔx+yIΔy+tIΔ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 0xIΔx+yIΔy+tIΔ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 0xIuΔt+yIvΔt+tIΔ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} 0xIu+yIv+tI
]

这就是光流约束方程(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=xI )
  • ( I y = ∂ I ∂ y I_y = \frac{\partial I}{\partial y} Iy=yI )
  • ( I t = ∂ I ∂ t I_t = \frac{\partial I}{\partial t} It=tI )

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= Ix1Ix2IxnIy1Iy2Iyn ,b= It1It2Itn
]

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=1n(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)b2
]

最小化误差平方和

为了最小化 ( J ),我们对 ( J ) 求导并设导数为零。目标是找到使得 ( J ) 最小的 ( u ) 和 ( v )。

[ ∂ J ∂ u = 0 \frac{\partial J}{\partial u} = 0 uJ=0 ]
[ ∂ J ∂ v = 0 \frac{\partial J}{\partial v} = 0 vJ=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 minxAxb2 ]

推导正规方程

我们通过以下步骤来推导正规方程:

  1. 构造目标函数:定义误差平方和为目标函数 ( J ( x ) J(\mathbf{x}) J(x) ):
    [ J ( x ) = ∥ A x − b ∥ 2 J(\mathbf{x}) = \| A \mathbf{x} - \mathbf{b} \|^2 J(x)=Axb2 ]

  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)=(Axb)T(Axb) ]

  3. 求目标函数的梯度:为了找到最小值,我们对目标函数 ( 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(Axb) ]

  4. 设梯度为零
    [ ∇ 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(Axb)=0 ]

  5. 得到正规方程:简化后得到正规方程:
    [ 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 ) 来最小化预测值和实际值之间的误差平方和。

  1. 构造矩阵 ( 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= 111x1x2xm ,b= y1y2ym ]

  2. 解正规方程 ( 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=(mi=1mxii=1mxii=1mxi2),ATb=(i=1myii=1mxiyi) ]

  3. 求解参数 ( 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 ) 的列数远小于行数),正规方程是一个有效的求解方法。

;