曂沅仴駦 发表于 2025-4-7 10:43:34

盘算机视觉5——运动估计和光流估计

一、运动估计

(一)运动场(Motion Field)


[*] 定义与物理意义
运动场是三维场景中物体或相机运动在二维图像平面上的投影,表现为图像中每个像素点的运动速率矢量。其本质是场景点三维运动(平移、旋转、缩放等)通过透视投影在图像平面的映射,反映了物体在空间中的相对运动关系。比方,当相机向前移动时,图像中近处物体的运动场矢量较大,远处物体的矢量较小,且方向背离相机光心。
[*] 数学建模与投影关系
设场景点坐标为                                                          r                                  o                                          =                               (                               x                               ,                               y                               ,                               z                               )                                    r_o = (x, y, z)                        ro​=(x,y,z),其三维运动速率为                                                          v                                  o                                          =                               (                                           v                                  x                                          ,                                           v                                  y                                          ,                                           v                                  z                                          )                                    v_o = (v_x, v_y, v_z)                        vo​=(vx​,vy​,vz​),相机焦距为                                              f                                    f                        f,则图像点运动速率                                                          v                                  i                                          =                               (                               u                               ,                               v                               )                                    v_i = (u, v)                        vi​=(u,v) 可通过针孔相机模型推导得出:
                                                                v                                     i                                              =                                  f                                                                            (                                                         r                                              o                                                          ⋅                                           z                                           )                                                      ⋅                                                       v                                           o                                                      −                                                       (                                                         v                                              o                                                          ⋅                                           z                                           )                                                      ⋅                                                       r                                           o                                                                                             (                                                         r                                              o                                                          ⋅                                           z                                           )                                                      2                                                         =                                  f                                                                            (                                                         r                                              o                                                          ×                                                         v                                              o                                                          )                                                      ×                                        z                                                                               (                                                         r                                              o                                                          ⋅                                           z                                           )                                                      2                                                                   v_{i}=f \frac{\left(r_{o} \cdot z\right) \cdot v_{o}-\left(v_{o} \cdot z\right) \cdot r_{o}}{\left(r_{o} \cdot z\right)^{2}} = f \frac{\left(r_{o} \times v_{o}\right) \times z}{\left(r_{o} \cdot z\right)^{2}}                           vi​=f(ro​⋅z)2(ro​⋅z)⋅vo​−(vo​⋅z)⋅ro​​=f(ro​⋅z)2(ro​×vo​)×z​
其中,                                                         r                                  o                                          ⋅                               z                                    r_o \cdot z                        ro​⋅z 表现场景点深度,                                                         r                                  o                                          ×                                           v                                  o                                                 r_o \times v_o                        ro​×vo​ 为叉乘运算。该公式表明,图像点速率与场景点的深度成反比(近处物体运动更快),且与运动方向相关。比方,当场景点沿相机光轴方向(                                                         v                                  z                                                 v_z                        vz​)运动时,图像点速率会出现放射状分布。
[*] 典范运动场景分析

[*]相机平移:图像中全部点的运动场矢量指向平移反方向,且幅度随深度增长而减小。
[*]相机旋转:运动场出现旋转对称分布,中心点(光心投影)运动矢量为零。
[*]物体缩放:当物体靠近或远离相机时,运动场矢量从中心向外扩散或向中心汇聚。

(二)光流(Optical Flow)


[*] 定义与直观明白
光流是图像中亮度模式的表观运动,即相邻两帧图像中同一物体点的像素位移矢量                                              (                               u                               ,                               v                               )                                    (u, v)                        (u,v)。比方,视频中行走的人,其像素在连续帧中的位移构成光流场。光流不直接便是运动场,但在理想条件下(亮度不变、无遮挡)可近似表现运动场。
[*] 光流的双重属性

[*]局部性:每个像素的光流仅依赖于其邻域的亮度变化,实用于局部运动分析。
[*]全局性:整体光流场反映场景的运动结构,可用于场景明白(如自动驾驶中的停滞物检测)。

(三)运动场与光流的关系


[*] 理想等价性
当场景满意以下条件时,光流便是运动场:

[*]物体表面亮度恒定且均匀;
[*]相机曝光刹时完成,无运动含糊;
[*]场景点深度一致(如平面场景)。
此时,光流直接对应场景点的二维投影运动。

[*] 非理想环境对比

[*]有运动场无光流(亮度不变但模式不变):
例:固定光源下的旋转球体,表面亮度模式(如纯色)不随旋转改变,光流估计为零,但实际存在运动场(球面切线方向运动)。
[*]无光运动场有光流(亮度变化但物体静止):
例:固定球体被移动的聚光灯照射,像素亮度随光照变化而变化,光流检测到伪运动,但物体实际未移动。
[*]孔径题目导致的不一致:
当观察窗口仅包罗单一方向边缘(如水平线),光流只能检测到垂直于边缘的运动分量,平行分量丢失,导致光流与实际运动场方向不一致。

二、光流估计(Optical Flow Estimation)

(一)定义与目标

给定连续两帧图像                                    I                         (                         x                         ,                         y                         ,                         t                         )                              I(x, y, t)                  I(x,y,t)(t时候)和                                    I                         (                         x                         ,                         y                         ,                         t                         +                         1                         )                              I(x, y, t+1)                  I(x,y,t+1)(t+1时候),光流估计的核心目标是盘算每个像素点                                    (                         x                         ,                         y                         )                              (x, y)                  (x,y)的位移矢量                                    (                         u                         ,                         v                         )                              (u, v)                  (u,v),使得:
                                       I                            (                            x                            ,                            y                            ,                            t                            )                            =                            I                            (                            x                            +                            u                            ,                            y                            +                            v                            ,                            t                            +                            1                            )                                  I(x, y, t) = I(x+u, y+v, t+1)                     I(x,y,t)=I(x+u,y+v,t+1)
该题目本质是通过图像亮度变化推断像素运动,是一个典范的逆题目,需依赖先验假设求解。
(二)关键假设


[*] 亮度一致性假设(Brightness Constancy Assumption)

[*]数学表达:
                                                      I                                     (                                     x                                     ,                                     y                                     ,                                     t                                     )                                     =                                     I                                     (                                     x                                     +                                     u                                     ,                                     y                                     +                                     v                                     ,                                     t                                     +                                     1                                     )                                              I(x, y, t) = I(x+u, y+v, t+1)                              I(x,y,t)=I(x+u,y+v,t+1)
[*]物理意义:假设物体表面反射率不变,且光照条件稳定,同一物体点在不同帧中的亮度值相同。这是光流估计的基石,但在实际中易受光照变化、物体遮挡、镜面反射等因素破坏。

[*] 小运动假设(Small Motion Assumption)

[*]假设两帧间像素位移                                                   (                                  u                                  ,                                  v                                  )                                          (u, v)                           (u,v) 富足小(通常小于1像素),使得泰勒睁开的高阶项可忽略,仅保留一阶线性项。若运动幅度过大(如快速运动物体),该假设失效,需通过迭代或金字塔方法补偿。

[*] 空间连续性假设(Spatial Continuity Assumption)

[*]假设相邻像素的运动矢量相似,即像素                                                   (                                  x                                  ,                                  y                                  )                                          (x, y)                           (x,y)的光流                                                   (                                  u                                  ,                                  v                                  )                                          (u, v)                           (u,v)与邻域像素的光流差别较小。该假设通过引入平滑束缚,将单像素的欠定题目转化为邻域的超定题目。

(三)光流根本方程推导


[*]泰勒睁开与线性近似
对于                                 I                         (                         x                         +                         u                         ,                         y                         +                         v                         ,                         t                         +                         1                         )                              I(x+u, y+v, t+1)                  I(x+u,y+v,t+1)在                                 (                         x                         ,                         y                         ,                         t                         )                              (x, y, t)                  (x,y,t)处进行一阶泰勒睁开:
                                       I                            (                            x                            +                            u                            ,                            y                            +                            v                            ,                            t                            +                            1                            )                            =                            I                            (                            x                            ,                            y                            ,                            t                            )                            +                                       I                               x                                    u                            +                                       I                               y                                    v                            +                                       I                               t                                    +                            O                            (                                       u                               2                                    ,                                       v                               2                                    ,                            u                            v                            )                                  I(x+u, y+v, t+1) = I(x, y, t) + I_x u + I_y v + I_t + \mathcal{O}(u^2, v^2, uv)                     I(x+u,y+v,t+1)=I(x,y,t)+Ix​u+Iy​v+It​+O(u2,v2,uv)
忽略高阶小项                                 O                         (                                 u                            2                                  ,                                 v                            2                                  ,                         u                         v                         )                              \mathcal{O}(u^2, v^2, uv)                  O(u2,v2,uv),结合亮度一致性假设                                 I                         (                         x                         ,                         y                         ,                         t                         )                         =                         I                         (                         x                         +                         u                         ,                         y                         +                         v                         ,                         t                         +                         1                         )                              I(x, y, t) = I(x+u, y+v, t+1)                  I(x,y,t)=I(x+u,y+v,t+1),得到光流根本方程:
                                                    I                               x                                    u                            +                                       I                               y                                    v                            +                                       I                               t                                    =                            0                                  I_x u + I_y v + I_t = 0                     Ix​u+Iy​v+It​=0
其中:


[*]                                                   I                               x                                    =                                                   ∂                                  I                                                      ∂                                  x                                                       I_x = \frac{\partial I}{\partial x}                     Ix​=∂x∂I​为空间x方向梯度
[*]                                                   I                               y                                    =                                                   ∂                                  I                                                      ∂                                  y                                                       I_y = \frac{\partial I}{\partial y}                     Iy​=∂y∂I​为空间y方向梯度
[*]                                                   I                               t                                    =                                                   ∂                                  I                                                      ∂                                  t                                                       I_t = \frac{\partial I}{\partial t}                     It​=∂t∂I​为时间梯度
[*]                                        ∇                            I                            =                            [                                       I                               x                                    ,                                       I                               y                                                 ]                               T                                          \nabla I = ^T                     ∇I=T表现空间梯度矢量
这个方程表明,在时间间隔                                 Δ                         t                              \Delta t                  Δt内,图像亮度变化                                             I                            t                                       I_t                  It​可以表现为空间梯度                                 ∇                         I                              \nabla I                  ∇I与像素位移                                 (                         u                         ,                         v                         )                              (u,v)                  (u,v)的点积。

[*]向量形式与多少意义
光流根本方程可表现为:
                                    ∇                         I                         ⋅                         [                         u                         ,                         v                                 ]                            T                                  +                                 I                            t                                  =                         0                              \nabla I \cdot ^T + I_t = 0                  ∇I⋅T+It​=0
多少上,该方程表明光流矢量                                 [                         u                         ,                         v                         ]                                                位于以                                 −                                 I                            t                                  /                         ∇                         I                              -I_t / \nabla I                  −It​/∇I为法向量的直线上,即光流矢量在梯度方向上的投影为                                 −                                 I                            t                                  /                         ∣                         ∇                         I                         ∣                              -I_t / |\nabla I|                  −It​/∣∇I∣,垂直于梯度方向的分量无法确定,导致孔径题目。
(四)孔径题目(Aperture Problem)


[*]题目本质与数学表明
当观察窗口内的图像模式为均匀地区(                                        ∇                            I                            =                            0                                  \nabla I = 0                     ∇I=0)或单一方向边缘(如水平线,                                        ∇                            I                            =                            [                                       I                               x                                    ,                            0                                       ]                               T                                          \nabla I = ^T                     ∇I=T),光流方程无法唯一确定                                        (                            u                            ,                            v                            )                                  (u, v)                     (u,v):


[*]均匀地区:梯度为零,方程退化为                                        0                            ⋅                            u                            +                            0                            ⋅                            v                            +                                       I                               t                                    =                            0                                  0 \cdot u + 0 \cdot v + I_t = 0                     0⋅u+0⋅v+It​=0,无解(若                                                   I                               t                                    ≠                            0                                  I_t \neq 0                     It​=0)或无穷解(若                                                   I                               t                                    =                            0                                  I_t = 0                     It​=0)。
[*]边缘地区:梯度方向为                                        θ                                  \theta                     θ,光流方程仅束缚垂直于边缘的运动分量                                        u                            cos                            ⁡                            θ                            +                            v                            sin                            ⁡                            θ                            =                            −                                       I                               t                                    /                            ∣                            ∇                            I                            ∣                                  u \cos\theta + v \sin\theta = -I_t / |\nabla I|                     ucosθ+vsinθ=−It​/∣∇I∣,平行于边缘的分量自由,导致多解。

[*]经典示例:剃头店三色柱错觉
三色柱表面为垂直条纹,当柱子旋转时,观察窗口(孔径)仅包罗垂直条纹,光流检测到的运动方向为水平方向(垂直于条纹),而实际运动方向为切线方向(包罗垂直分量),形成感知运动与实际运动的差别。孔径外形(如圆形、矩形)和条纹方向决定了感知运动的主导方向,圆形孔径下感知运动方向为条纹法线方向。
(五)Lucas Kanade方法(Lucas-Kanade Method)


[*] 核心头脑:邻域束缚求解欠定题目
Lucas Kanade(LK)方法假设像素邻域内的运动矢量相同,将单像素的1个方程扩展为邻域的(n)个方程(通常取5x5邻域,(n=25)),通过最小二乘法求解超定方程组,增强解的稳定性。
[*] 数学推导步骤


[*]步骤1:构建超定方程组
设邻域内第                                        i                                  i                     i个像素点                                                   p                               i                                    =                            (                                       x                               i                                    ,                                       y                               i                                    )                                  p_i = (x_i, y_i)                     pi​=(xi​,yi​)满意光流方程:
                                                    I                               x                                    (                                       p                               i                                    )                            u                            +                                       I                               y                                    (                                       p                               i                                    )                            v                            =                            −                                       I                               t                                    (                                       p                               i                                    )                            ,                                     i                            =                            1                            ,                            2                            ,                            …                            ,                            n                                  I_x(p_i) u + I_y(p_i) v = -I_t(p_i), \quad i = 1, 2, \dots, n                     Ix​(pi​)u+Iy​(pi​)v=−It​(pi​),i=1,2,…,n
写成矩阵形式:
                                    A                         d                         =                         b                              A \mathbf{d} = \mathbf{b}                  Ad=b
其中
                                    A                         =                                 [                                                                                                             I                                              x                                                          (                                                         p                                              1                                                          )                                                                                                                                 I                                              y                                                          (                                                         p                                              1                                                          )                                                                                                                                                       I                                              x                                                          (                                                         p                                              2                                                          )                                                                                                                                 I                                              y                                                          (                                                         p                                              2                                                          )                                                                                                                                       ⋮                                                                                                                                                            ⋮                                                                                                                                                                                                I                                              x                                                          (                                                         p                                              n                                                          )                                                                                                                                 I                                              y                                                          (                                                         p                                              n                                                          )                                                                                        ]                                       A = \begin{bmatrix} I_x(p_1) & I_y(p_1) \\ I_x(p_2) & I_y(p_2) \\ \vdots & \vdots \\ I_x(p_n) & I_y(p_n) \end{bmatrix}                  A=            ​Ix​(p1​)Ix​(p2​)⋮Ix​(pn​)​Iy​(p1​)Iy​(p2​)⋮Iy​(pn​)​            ​
                                    d                         =                                 [                                                                              u                                                                                                          v                                                                        ]                                       \mathbf{d} = \begin{bmatrix} u \\ v \end{bmatrix}                  d=
                                    b                         =                         −                                 [                                                                                                             I                                              t                                                          (                                                         p                                              1                                                          )                                                                                                                                                       I                                              t                                                          (                                                         p                                              2                                                          )                                                                                                                                       ⋮                                                                                                                                                                                                I                                              t                                                          (                                                         p                                              n                                                          )                                                                                        ]                                       \mathbf{b} = -\begin{bmatrix} I_t(p_1) \\ I_t(p_2) \\ \vdots \\ I_t(p_n) \end{bmatrix}                  b=−            ​It​(p1​)It​(p2​)⋮It​(pn​)​            ​


[*]步骤2:最小二乘求解
超定方程的最优解为最小化误差平方和:
                                                    d                               ^                                    =                            arg                            ⁡                                                   min                                  ⁡                                          d                                    ∥                            A                            d                            −                            b                                       ∥                               2                                          \hat{\mathbf{d}} = \arg\min_{\mathbf{d}} \| A \mathbf{d} - \mathbf{b} \|^2                     d^=argmind​∥Ad−b∥2
对                                 d                              \mathbf{d}                  d求导并令导数为零,得正规方程:
                                              A                            T                                  A                         d                         =                                 A                            T                                  b                              A^T A \mathbf{d} = A^T \mathbf{b}                  ATAd=ATb
其中,                                             A                            T                                  A                              A^T A                  ATA为二阶矩矩阵(Structure Tensor):
                                              A                            T                                  A                         =                                 [                                                                                             ∑                                                         I                                              x                                              2                                                                                                                                  ∑                                                         I                                              x                                                                        I                                              y                                                                                                                                                      ∑                                                         I                                              x                                                                        I                                              y                                                                                                                                  ∑                                                         I                                              y                                              2                                                                                                       ]                                       A^T A = \begin{bmatrix} \sum I_x^2 & \sum I_x I_y \\ \sum I_x I_y & \sum I_y^2 \end{bmatrix}                  ATA=[∑Ix2​∑Ix​Iy​​∑Ix​Iy​∑Iy2​​]
                                              A                            T                                  b                         =                         −                                 [                                                                                             ∑                                                         I                                              x                                                                        I                                              t                                                                                                                                                      ∑                                                         I                                              y                                                                        I                                              t                                                                                                       ]                                       A^T \mathbf{b} = -\begin{bmatrix} \sum I_x I_t \\ \sum I_y I_t \end{bmatrix}                  ATb=−[∑Ix​It​∑Iy​It​​]
当                                             A                            T                                  A                              A^T A                  ATA可逆时,解为:
                                    d                         =                         (                                 A                            T                                  A                                 )                                       −                               1                                                      A                            T                                  b                              \mathbf{d} = (A^T A)^{-1} A^T \mathbf{b}                  d=(ATA)−1ATb

[*] 实用条件:特性值分析
二阶矩矩阵                                                          A                                  T                                          A                                    A^T A                        ATA 的特性值                                              (                                           λ                                  1                                          ,                                           λ                                  2                                          )                                    (\lambda_1, \lambda_2)                        (λ1​,λ2​) 决定了光流解的稳定性:

[*]角点地区:                                                (                                             λ                                     1                                              ≈                                             λ                                     2                                              )                                          (\lambda_1 \approx \lambda_2)                           (λ1​≈λ2​) 且值较大,矩阵良态,解唯一且稳定(适合LK方法)。
[*]边缘地区:                                                (                                             λ                                     1                                              ≫                                             λ                                     2                                              )                                          (\lambda_1 \gg \lambda_2)                           (λ1​≫λ2​) 或                                                   (                                             λ                                     2                                              ≫                                             λ                                     1                                              )                                          (\lambda_2 \gg \lambda_1)                           (λ2​≫λ1​),矩阵病态,仅能确定一个方向的运动(孔径题目)。
[*]平滑地区:                                                (                                             λ                                     1                                              ≈                                             λ                                     2                                              ≈                                  0                                  )                                          (\lambda_1 \approx \lambda_2 \approx 0)                           (λ1​≈λ2​≈0),矩阵不可逆,无法求解(无梯度信息)。

[*] 失效场景与改进策略
场景1:大幅运动(                                        ∣                            u                            ∣                            ,                            ∣                            v                            ∣                            >                            1                                  |u|, |v| > 1                     ∣u∣,∣v∣>1 像素)


[*]题目:小运动假设(泰勒睁开一阶近似)失效,导致线性化误差显著。
[*]办理方案:
[*] 迭代精修(Iterative Refinement)

[*]初始化光流                                                             (                                                       u                                           0                                                      ,                                                       v                                           0                                                      )                                        =                                        (                                        0                                        ,                                        0                                        )                                                (u_0, v_0) = (0, 0)                                 (u0​,v0​)=(0,0),通过迭代优化逐步逼近真实位移:
                                                                                  d                                              k                                                          =                                           (                                                         A                                              T                                                          A                                                         )                                                               −                                                 1                                                                                          A                                              T                                                                        b                                              k                                                          ,                                                                         b                                              k                                                          =                                           −                                                         [                                                               I                                                 t                                                            (                                              x                                              +                                                               u                                                                   k                                                    −                                                    1                                                                               ,                                              y                                              +                                                               v                                                                   k                                                    −                                                    1                                                                               )                                              ]                                                                     \mathbf{d}_k = (A^T A)^{-1} A^T \mathbf{b}_k, \quad \mathbf{b}_k = -\left[ I_t(x+u_{k-1}, y+v_{k-1}) \right]                                    dk​=(ATA)−1ATbk​,bk​=−
[*]核心头脑:每次迭代后对图像进行扭曲(Warping),重新盘算残差                                                                            b                                           k                                                                \mathbf{b}_k                                 bk​,直至收敛。

[*] 由粗到细金字塔方法(Coarse-to-Fine Pyramid)

[*]步骤:
[*]构建高斯金字塔(多标准图像层),从最粗分辨率开始估计光流。
[*]将粗标准的光流上采样并作为下一层的初始值,逐层优化至原始分辨率。

[*]上风:将大位移分解为多层小位移,避免局部极小值并扩大捕捉范围。


场景2:光照变化(亮度一致性假设失效)


[*]题目:因光照变化导致                                       I                            (                            x                            ,                            y                            ,                            t                            )                            ≠                            I                            (                            x                            +                            u                            ,                            y                            +                            v                            ,                            t                            +                            1                            )                                  I(x, y, t) \neq I(x+u, y+v, t+1)                     I(x,y,t)=I(x+u,y+v,t+1),数据项误差增大。
[*]办理方案:
[*] 特性点匹配

[*]检测稳定特性点(如Harris角点、SIFT),对特性邻域应用LK方法,减少对全局亮度一致的依赖。

[*] 鲁棒损失函数

[*]更换L2损失为对非常值不敏感的损失函数:

[*]L1范数:                                                                                       E                                                 data                                                            =                                              ∑                                              ∣                                                               I                                                 x                                                            u                                              +                                                               I                                                 y                                                            v                                              +                                                               I                                                 t                                                            ∣                                                          E_{\text{data}} = \sum |I_x u + I_y v + I_t|                                       Edata​=∑∣Ix​u+Iy​v+It​∣
[*]Huber损失:
                                                                            L                                                 (                                                 e                                                 )                                                 =                                                                   {                                                                                                                                                                                     1                                                                      2                                                                                                                  e                                                                      2                                                                                                                                                                                                                  if                                                                    ∣                                                                   e                                                                   ∣                                                                   ≤                                                                   δ                                                                   ,                                                                                                                                                                                                                               δ                                                                   (                                                                   ∣                                                                   e                                                                   ∣                                                                   −                                                                                           1                                                                      2                                                                                          δ                                                                   )                                                                                                                                                                  otherwise.                                                                                                                                                             L(e) = \begin{cases} \frac{1}{2} e^2 & \text{if } |e| \leq \delta, \\ \delta (|e| - \frac{1}{2} \delta) & \text{otherwise.} \end{cases}                                          L(e)={21​e2δ(∣e∣−21​δ)​if ∣e∣≤δ,otherwise.​


[*] 多帧束缚

[*]前向-后向一致性检查:盘算前向光流                                                             (                                                       u                                           f                                                      ,                                                       v                                           f                                                      )                                                (u_f, v_f)                                 (uf​,vf​) 和后向光流                                                             (                                                       u                                           b                                                      ,                                                       v                                           b                                                      )                                                (u_b, v_b)                                 (ub​,vb​),剔除不满意                                                             ∥                                        (                                                       u                                           f                                                      +                                                       u                                           b                                                      ,                                                       v                                           f                                                      +                                                       v                                           b                                                      )                                        ∥                                        <                                        ϵ                                                \| (u_f + u_b, v_f + v_b) \| < \epsilon                                 ∥(uf​+ub​,vf​+vb​)∥<ϵ 的不可靠点。


(六)光流平滑性束缚(Smoothness Constraint)

1. 动机:抑制噪声与不连续解

仅依赖邻域束缚大概导致光流场出现噪声或局部不连续,需引入全局束缚强制光流在空间上平滑变化,尤其在无纹理地区(如天空、墙面)维持一致性。
2. 数学模型

根本平滑项(Basic Smoothness Term)

处罚光流                                    (                         u                         ,                         v                         )                              (u, v)                  (u,v) 的梯度变化,使相邻像素的光流尽大概靠近:
                                                    E                               smooth                                    =                                       ∑                                           x                                  ,                                  y                                                            (                                                      (                                                                  ∂                                           u                                                                     ∂                                           x                                                                )                                              2                                          +                                                      (                                                                  ∂                                           u                                                                     ∂                                           y                                                                )                                              2                                          +                                                      (                                                                  ∂                                           v                                                                     ∂                                           x                                                                )                                              2                                          +                                                      (                                                                  ∂                                           v                                                                     ∂                                           y                                                                )                                              2                                          )                                          E_{\text{smooth}} = \sum_{x, y} \left( \left( \frac{\partial u}{\partial x} \right)^2 + \left( \frac{\partial u}{\partial y} \right)^2 + \left( \frac{\partial v}{\partial x} \right)^2 + \left( \frac{\partial v}{\partial y} \right)^2 \right)                     Esmooth​=x,y∑​((∂x∂u​)2+(∂y∂u​)2+(∂x∂v​)2+(∂y∂v​)2)
图像梯度加权平滑项(Gradient-Weighted Smoothness Term)

在边缘地区低落平滑束缚(避免含糊边界),在平滑地区增强束缚(抑制噪声):
                                                    E                               smooth                                    =                                       ∑                                           x                                  ,                                  y                                                 w                            (                            ∇                            I                            )                                       (                                                      (                                                                  ∂                                           u                                                                     ∂                                           x                                                                )                                              2                                          +                                                      (                                                                  ∂                                           u                                                                     ∂                                           y                                                                )                                              2                                          +                                                      (                                                                  ∂                                           v                                                                     ∂                                           x                                                                )                                              2                                          +                                                      (                                                                  ∂                                           v                                                                     ∂                                           y                                                                )                                              2                                          )                                          E_{\text{smooth}} = \sum_{x, y} w(\nabla I) \left( \left( \frac{\partial u}{\partial x} \right)^2 + \left( \frac{\partial u}{\partial y} \right)^2 + \left( \frac{\partial v}{\partial x} \right)^2 + \left( \frac{\partial v}{\partial y} \right)^2 \right)                     Esmooth​=x,y∑​w(∇I)((∂x∂u​)2+(∂y∂u​)2+(∂x∂v​)2+(∂y∂v​)2)
其中权重函数:
                                       w                            (                            ∇                            I                            )                            =                                       1                                           1                                  +                                  ∣                                  ∇                                  I                                             ∣                                     2                                                                   w(\nabla I) = \frac{1}{1 + |\nabla I|^2}                     w(∇I)=1+∣∇I∣21​


[*]边缘地区(                                        ∣                            ∇                            I                            ∣                                  |\nabla I|                     ∣∇I∣ 大):                                        w                            (                            ∇                            I                            )                                  w(\nabla I)                     w(∇I) 较小,放松平滑束缚。
[*]平滑地区(                                        ∣                            ∇                            I                            ∣                                  |\nabla I|                     ∣∇I∣ 小):                                        w                            (                            ∇                            I                            )                                  w(\nabla I)                     w(∇I) 较大,强制平滑。
3. 与数据项的团结优化

光流估计的完备能量函数为数据项宁静滑项的加权和:
                                       E                            =                                       E                               data                                    +                            α                                       E                               smooth                                          E = E_{\text{data}} + \alpha E_{\text{smooth}}                     E=Edata​+αEsmooth​


[*]数据项(基于亮度恒定假设):
                                                          E                                  data                                          =                                           ∑                                             p                                     ∈                                     邻域                                                      (                                           I                                  x                                          u                               +                                           I                                  y                                          v                               +                                           I                                  t                                                      )                                  2                                                 E_{\text{data}} = \sum_{p \in \text{邻域}} (I_x u + I_y v + I_t)^2                        Edata​=p∈邻域∑​(Ix​u+Iy​v+It​)2
[*]平衡参数                                       α                                  \alpha                     α:需通过实验或学习确定,控制平滑强度。
(七)光流可视化


[*] 彩色轮盘编码(Color Wheel Encoding)
光流方向和幅度的可视化通常采用HSV颜色空间:

[*]色调(Hue):编码运动方向,0°(红色)表现向右,90°(绿色)表现向上,180°(蓝色)表现向左,270°(黄色)表现向下,中心角度对应混合颜色。
[*]饱和度(Saturation):编码运动幅度,饱和度越高表现位移越大。
[*]亮度(Value):通常设为常数,或根据梯度强度调整,突出高纹理地区的光流。

[*] 示例:相机平移光流场
当相机向右平移时,光流场的色调分布为左侧地区偏蓝(向左运动),右侧地区偏红(向右运动),中心地区色调过渡天然;饱和度随距离相机光心的距离增长而升高(远处物体运动幅度小,饱和度低;近处物体运动幅度大,饱和度高)。
(八)光流估计评价标准

1. 角度误差(Angular Error, AE)



[*]定义:估计光流                                       (                            u                            ,                            v                            )                                  (u, v)                     (u,v) 与真值光流                                       (                                       u                               GT                                    ,                                       v                               GT                                    )                                  (u_{\text{GT}}, v_{\text{GT}})                     (uGT​,vGT​) 的夹角,权衡方向一致性:
                                              A                               E                               =                                                      cos                                     ⁡                                                         −                                     1                                                                  (                                                             1                                        +                                        u                                                       u                                           GT                                                      +                                        v                                                       v                                           GT                                                                                                             1                                              +                                                               u                                                 2                                                            +                                                               v                                                 2                                                                                                                  1                                              +                                                               u                                                 GT                                                 2                                                            +                                                               v                                                 GT                                                 2                                                                                                      )                                                 AE = \cos^{-1} \left( \frac{1 + u u_{\text{GT}} + v v_{\text{GT}}}{\sqrt{1 + u^2 + v^2} \sqrt{1 + u_{\text{GT}}^2 + v_{\text{GT}}^2}} \right)                        AE=cos−1(1+u2+v2                      ​1+uGT2​+vGT2​                      ​1+uuGT​+vvGT​​)
[*]范围:                                        [                            0                            ,                            π                            ]                                                       ,值越小表现方向越靠近(理想环境为                                       0                                  0                     0)。
2. 端点误差(Endpoint Error, EE)



[*]定义:估计光流与真值光流的欧氏距离,反映位移精度:
                                              E                               E                               =                                                      (                                     u                                     −                                                   u                                        GT                                                                )                                        2                                                +                                     (                                     v                                     −                                                   v                                        GT                                                                )                                        2                                                                        EE = \sqrt{(u - u_{\text{GT}})^2 + (v - v_{\text{GT}})^2}                        EE=(u−uGT​)2+(v−vGT​)2            ​
[*]物理意义:直接测量像素点的定位误差,单位为像素(值越小越正确)。
3. 插值误差(Interpolation Error, IE)



[*]定义:将第二帧图像通过光流扭曲(Warp)到第一帧后,与第一帧的像素均方根误差:
                                              I                               E                               =                                                                      1                                        N                                                                ∑                                                       (                                           x                                           ,                                           y                                           )                                                                                             (                                           I                                           (                                           x                                           ,                                           y                                           ,                                           t                                           )                                           −                                                         I                                              warped                                                          (                                           x                                           ,                                           y                                           ,                                           t                                           )                                           )                                                      2                                                                        IE = \sqrt{\frac{1}{N} \sum_{(x, y)} \left( I(x, y, t) - I_{\text{warped}}(x, y, t) \right)^2}                        IE=N1​(x,y)∑​(I(x,y,t)−Iwarped​(x,y,t))2            ​
其中扭曲图像                                                    I                               warped                                          I_{\text{warped}}                     Iwarped​ 定义为:
                                                          I                                  warped                                          (                               x                               ,                               y                               ,                               t                               )                               =                               I                               (                               x                               +                               u                               ,                               y                               +                               v                               ,                               t                               +                               1                               )                                    I_{\text{warped}}(x, y, t) = I(x+u, y+v, t+1)                        Iwarped​(x,y,t)=I(x+u,y+v,t+1)
[*]意义:评估光流对帧间亮度变化的还本来领(IE 越小越一致)。
(九)光流真值获取(Ground-Truth Acquisition)


[*] 合成数据集(Synthetic Datasets)

[*]方法:通过盘算机图形门天生虚拟场景,精确控制相机和物体运动,直接盘算光流真值。
[*]典范数据集:

[*]Flying Chairs:合成椅子在不同背景中的运动,包罗22,872对训练图像,光流真值通过三维模型投影盘算。
[*]Middlebury:早期经典数据集,包罗静态场景中物体的平移、旋转、缩放运动,真值通过立体匹配和三维重修天生。


[*] 物理实验获取

[*]装备:利用高精度运动平台(如六自由度呆板臂)固定相机或物体,记录连续帧并通过激光测距仪或结构光获取深度信息,结合三维运动参数盘算真实光流。
[*]上风:真值精度高,可模仿真实场景中的光照变化和遮挡,用于验证算法的鲁棒性。

(十)基于深度学习的光流估计


[*] 传统方法的局限性

[*]依赖手工计划的特性(如梯度、二阶矩矩阵),对复杂场景(如非刚性运动、大位移、低纹理)鲁棒性不足。
[*]优化过程盘算量大,难以满意实时性需求(如自动驾驶须要100+ FPS)。

[*] FlowNet系列(2015-2017)

[*] FlowNet(ICCV 2015):

[*]结构:首个端到端卷积神经网络,采用U-Net架构,包罗收缩路径(Conv1-Conv5)和解码路径(Deconv1-Deconv5),通过跳跃毗连融合多标准特性。
[*]创新点:引入匹配代价体(Cost Volume),盘算参考帧与目标帧在不同位移下的特性相似性。比方,FlowNetS架构中,对每个像素点,在±4像素范围内盘算17x17的代价体,通过3D卷积提取匹配特性。
[*]训练:利用合成数据集Flying Chairs,损失函数为端点误差(EE)的均值,开启深度学习在光流领域的先河。

[*] FlowNet2.0(CVPR 2017):

[*]改进:提出级联网络(Cascade Network),将FlowNet与另一个细化网络结合,先估计粗光流,再通过扭曲操纵细化,提拔大位移场景的精度;引入循环一致性损失(Cycle Consistency Loss),确保前向光流与后向光流的一致性。


[*] PWC-Net(CVPR 2018)

[*]核心计划:

[*]金字塔特性提取:构建图像金字塔,从低分辨率层(粗标准)到高分辨率层(细标准)逐步估计光流,适应大幅运动。
[*]可变形扭曲(Deformable Warping):利用可变形卷积对目标帧特性进行扭曲,增强非刚性运动的适应性。
[*]代价体与3D卷积:在每个金字塔层盘算局部代价体(Local Cost Volume),通过3D卷积高效提取匹配特性,低落盘算复杂度。

[*]性能:在Middlebury数据集上首次逾越传统方法,且推理速率达到25 FPS(GTX 1080),兼顾精度与实时性。

[*] 无监督光流学习(Unsupervised Learning)

[*]核心头脑:无需光流真值,仅利用单目视频训练,通过光度损失和多少束缚优化网络。
[*]损失函数计划:

[*]光度重修损失(Photometric Reconstruction Loss):
                                                                            L                                           photo                                                      =                                                       ∑                                           t                                                                     ∑                                                         x                                              ,                                              y                                                                                    ∣                                                         I                                              t                                                          (                                           x                                           ,                                           y                                           )                                           −                                                         I                                                               t                                                 +                                                 1                                                                        (                                           x                                           +                                           u                                           ,                                           y                                           +                                           v                                           )                                           ∣                                                                L_{\text{photo}} = \sum_{t} \sum_{x, y} \left| I_t(x, y) - I_{t+1}(x+u, y+v) \right|                                 Lphoto​=∑t​∑x,y​∣It​(x,y)−It+1​(x+u,y+v)∣
强制估计光流扭曲后的图像与原图像一致。
[*]平滑损失(Smoothness Loss):
                                                                            L                                           smooth                                                      =                                                       ∑                                                         x                                              ,                                              y                                                                                    (                                           ∣                                           ∇                                           u                                           ∣                                           +                                           ∣                                           ∇                                           v                                           ∣                                           )                                                      ⋅                                                       e                                                         −                                              ∣                                              ∇                                              I                                              ∣                                                                               L_{\text{smooth}} = \sum_{x, y} \left( |\nabla u| + |\nabla v| \right) \cdot e^{-|\nabla I|}                                 Lsmooth​=∑x,y​(∣∇u∣+∣∇v∣)⋅e−∣∇I∣
利用图像梯度加权,避免边缘地区的太过平滑。

[*]代表方法:

[*]UnFlow(ECCV 2016):提出双向光流一致性束缚,即前向光流与后向光流的复合应便是恒等变更,提拔无监督训练的稳定性。
[*]GeoNet(CVPR 2018):结合多少先验(如平面扫描),通过天生对抗网络(GAN)优化光流估计,适应无纹理场景。


[*] 当前挑衅与前沿方向

[*]挑衅:复杂光照变化(如夜间运动)、透明/反射物体(如玻璃、水面)、多运动目标(如拥挤场景)的光流估计。
[*]前沿:

[*]自监督学习与对比学习:利用大量无标注视频数据,通过对比损失学习通用光流特性。
[*]多模态融合:结合RGB、深度、惯性传感器数据,提拔光流估计的鲁棒性。
[*]轻量化模型:计划高效网络架构(如MobileFlow),满意移动端实时应用需求。


总结与未来展望

光流估计作为盘算机视觉的基础任务,从早期基于梯度的LK方法到当前的深度学习模型,经历了从手工特性到数据驱动的范式转变。传统方法依赖严酷假设,在理想场景下高效正确,但对复杂环境鲁棒性不足;深度学习方法通过端到端训练,显著提拔了复杂场景的性能,但仍面对数据依赖强、物理表明性弱等题目。未来研究需在以下方向突破:

[*]无监督与自监督学习:减少对合成数据的依赖,利用真实天下视频提拔泛化本领。
[*]多标准与多任务融合:结合语义分割、目标跟踪等任务,构建统一的运动明白框架。
[*]实时性与轻量化:计划高效网络结构,推动光流算法在移动装备和嵌入式体系中的应用。
[*]物理可表明性:将光流估计与三维重修、动力学模型结合,赋予算法更强的场景明白本领。
通过持续创新,光流估计将在自动驾驶、视频分析、呆板人视觉等领域发挥更关键的作用,成为毗连二维图像与三维天下的桥梁。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 盘算机视觉5——运动估计和光流估计