[CS131] Lecture 17 Motion

根据 Stanford CS131 课程写的笔记(大部分为 note 翻译),英语水平一般,如有错误请评论指正

Lecture 17 Motion

Introduction

本节课我们会将之前的技术与新方法结合,追踪多张图片下像素的移动,应用方面有自动驾驶汽车、机器人、安全系统等

Optical Flow and Key Assumptions

Optical Flow

光流即像素随时间的运动。光流的目的是通过观察两张图片 I0I1,对每个在时间 t0t1 之间的每个像素产生一个运动矢量。但是,光流只能呈现图像模式的明显运动,这在下一节 Assumptions and Limitations 有解释,

Assumptions and Limitations

Apparent Motion

在二维图像中,光流只能呈现亮度模式的明显运动,意味着移动矢量是由各种行动产生的。例如:变化的光照可以使得静止的物体产生强运动矢量,但进入或者移出屏幕的运动无法被 2D 光流的运动矢量捕捉。光流处理问题的一个例子是孔径问题。

[CS131] Lecture 17 Motion_第1张图片

孔径问题指光流无法代表边缘运动的结果,可能导致移动测量错误。例如图中线条实际上是向左下移动,但是由于孔径,看起来像是向右移动。

Brightness Consistency

光流只能呈现明显的运动,为了正确的检测图中点的运动,我们必须假设这些点在帧之间的亮度相等。亮度一致性 (Brightness Consistency) 方程如下:
I(x,y,t1)=I(x+u(x,y),y+v(x,y),t)
其中 u(x,y) 表示点的水平运动,v(x,y) 表示点的垂直运动。

Small Motion

光流假设点在连续的图像之间不会移动太多。因为帧之间的时间极短,所以假设基本成立。但是在物体距离摄像机过远或过近的时候,这个假设不再成立。接下来我们用亮度一致性方程来证明假设的必要性。首先用泰勒展开式线性化等式右侧:
I(x+u(x,y),y+v(x,y),t)I(x,y,t1)+Ix·u(x,y)+Iy·v(x,y)+It
线性化允许我们解得运动向量 uv,但在这种情况下我们只包含泰勒展开式的第一项。当帧之间的运动幅度较大时,式子无法步骤整个运动情况,导致不精确的 uv,因此假设有必要。

Spatial Coherence

空间相干性是一个关于相同物体内邻近的像素会移动到一起的假设。其必要性证明如下:
I(x+u(x,y),y+v(x,y),t)I(x,y,t1)+Ix·u(x,y)+Iy·v(x,y)+ItI(x+u(x,y),y+v(x,y),t)I(x,y,t1)=Ix·u(x,y)+Iy·v(x,y)+It
可得到
Ix·u+Iy·v+It0I·[u v]T+It=0
现在我们有足够的方程解每个单像素中的 uv。假设像素可以移动到一起允许我们用有相同的 [u v] 的多个公式,使得我们能够解出邻居像素的移动。

Lucas-Kanade

从上式中得到图像的移动,至少每个像素需要两个方程。Lucas-Kanade 技术依赖于一个附加约束–空间相干性来完成图像追踪。

通过一个大小为 k×k 的窗来对像素应用空间相干性约束。假设窗内的邻居像素有相同的 (u,v)。例如,在 5×5 窗内应用以下式子:

![17.2](D:\Machine Learning\cs131\Lecture16_17\17.2.png)

这产生了一个 Ad=b 形式的线性方程的过约束系统。用最小二乘法解过拟合系统,我们减少了解 (ATA)d=ATb 中的 d 的复杂度。更准确的说,需要求解的系统系统被简化至

![17.3](D:\Machine Learning\cs131\Lecture16_17\17.3.png)

Condition for an Existing Solution

为了能解这个系统,需要满足以下条件:

  • A^TA 要求可逆

  • A^TA 不能太小以至于引起噪音。

    A^TA 的特征向量 \lambda_1\lambda_2 不能过小

  • A^TA 应该适中

    例如:A^TA 的特征向量 \lambda_1\lambda_2 不能过大

Geometric Interpretation

很明显,之前的最小二乘方程组产生了一个二阶矩阵 M=A^TA。事实上,这是角探测的哈里斯矩阵。

我们可以把上面的条件联系起来,以解出运动场 [u\space v] 来追踪哈里斯矩阵 M 检测到的角。M=A^TA 的特征向量和一个区域可能的边缘特征值合方向、大小联系。

综上,很明显 Lucas-Kanade 的光流估计的最理想区域是一个角。若两个 \lambda 均过小,则这个区域过于平坦。若一个 \lambda 远大于另一个,则会产生孔径问题,无法得到正确的光流。

[CS131] Lecture 17 Motion_第2张图片

[CS131] Lecture 17 Motion_第3张图片

以上树的三张图从左到右分别代表:\lambda_1 大而 \lambda_2 小、两个 \lambda 都小(低语义区)、两个 \lambda 都大(高语义区)

Error in Lucas-Kanade

Lucas-Kanade 受限于光流假设。假设 A^TA 可逆且图中没有太多噪音,错误仍然在以下情况产生:

  • 亮度一致性不满足,意味着随着时间改变像素的强度可能改变
  • 移动量过大或者随着时间不会逐渐改变
  • 未满足空间相干性,意味着相邻像素没有随之改变。这个可能是由不合适大小的窗造成的(即选择了不好的 k)。

Improving Accuracy

从上面所做的许多假设中,Lucas-Kanade 可以通过包含之前在亮度一致方程的泰勒展开近似中得到的更高阶项来提高其准确性。这个放松了之前的假设。现在,待解决的问题是:
I(x+u,y+v)=I(x,y)+I_xu+I_yv+higher\space order\space terms-I_{t-1}
这是一个找多项式根的问题,可以用牛顿迭代方法解决。

总的来说,精确的迭代 Lucas-Kanade 算法可以被应用:

  1. 解 Lucas-Kanade 方程,估计每个像素的速度
  2. 用被估计的光流区域和图像变形技术,将 I(t-1) 变化到 I(t)
  3. 重复至收敛

Horn-Schunk

Horn-Schunk Method for Optical Flow

Horn-Schunk 方法将光流公式化为以下全局能量函数,并尽量最小化 u(x,y)v(x,y)
E=\iint[(I_xu+I_yv+I_t)^2+\alpha^2(||\nabla u||^2+||\nabla v||^2)]dxdy
上式第一项反应了光照恒定假设,根据假设 I_xu+I_yv+I_t 应该等于 0。这项存在于式子中是为了保证这个值尽可能接近于 0。

第二项反应了小移动假设。这项存在于式子中为了鼓励在位置改变较小的情况下,更加光滑的流。\alpha 是正规化常数,用于控制光滑度,值越大流越光滑。

为了最小化能量函数,我们对 uv 求导并等于 0。得到以下两个等式
\begin{align} I_x(I_xu+I_yv+I_t)+\alpha^2\Delta u=0\\ I_y(I_xu+I_yv+I_t)+\alpha^2\Delta v=0 \end{align}\\ \Delta=\frac{\partial}{\partial x^2}+\frac{\partial}{\partial y^2}
其中 \Delta 为拉格朗日算子,在实际计算中为
\Delta u(x,y)=\overline u(x,y)-u(x,y)
其中 \overline u(x,y)u(x,y) 附近的加权平均。用 (11) 式带入得到:
\begin{align} (I_x^2+\alpha^2)u+I_xI_yv=\alpha^2\overline u-I_xI_t\\ (I_y^2+\alpha^2)u+I_xI_yu=\alpha^2\overline v-I_yI_t \end{align}\\
是一个关于 uv 的线性方程。

Iterative Horn-Schunk

因为 uv 的值取决于 (x,y) 邻近的光流值,所以我们需要在每次邻居更新后,重新计算 uv
\begin{align} u^{k+1}=\overline u^k-\frac{I_x(I_x\overline u^k+I_y\overline v^k+I_t)}{\alpha^2+I_x^2+I_y^2}\\ v^{k+1}=\overline v^k-\frac{I_y(I_x\overline u^k+I_y\overline v^k+I_t)}{\alpha^2+I_x^2+I_y^2} \end{align}\\
其中上标 k 代表迭代次数

Smoothness Regularization

光滑度正规化项 ||\nabla u||^2+||\nabla v||^2 推进最小化邻近点之间的光流变化。这样在边缘区域,点会流向最临近的点,解决孔径问题。

Dense Optical Flow with Michael Black’s Method

Michael Black 拓展了 Horn-Schunk 方法。原来的正规化项 ||\nabla u||^2+||\nabla v||^2 如下图,是一个二次函数。

[CS131] Lecture 17 Motion_第4张图片

现在用以下函数替代

[CS131] Lecture 17 Motion_第5张图片

Pyramids for Large Motion

返回之前的假设,我们要求在帧之间像素只能有小位移。所以当位移较大时,算法可能会崩溃。

注意上图,Lucas-Kanade 无法找到树干流的一致向量。为了解决这个问题,我们可以和之前的滑动窗特征检测器一样,建立一个图像尺度逐渐下降的金字塔。

[CS131] Lecture 17 Motion_第6张图片

现在,当我们想找到流向量,可以采用帧之间位移更小的低分辨率采样版本。以下是使用了金字塔后的树干流向量:

注意现在流向量大多数都指向同一方向,即树干整体移动方向一致。

Common Fate

我们可以通过图像中部分的共同性来获得更多信息,共同性即在图像给定的切割中,这部分像素移动方式都相似。我们的目标就是找出有共同性的分割或层。

[CS131] Lecture 17 Motion_第7张图片

Identify Layers

我们通过将图像分割至块,并基于块之间放射运动因子的相似性,将块组合来计算图像的层。对于每个块,找到一个 \alpha,对于所有在块中的像素 (x,y),能够最小化下式:
Err(\alpha)=\sum[I_x(\alpha_1+\alpha_2x+\alpha_3y)+I_x(\alpha_4+\alpha_5x+\alpha_6y)+I_t]^2
上面的方程由两部分推导而出:

  1. 亮度一致方程
    I(x,y,t-1)=I(x+u(x,y),y+v(x,y),t)

  2. 仿射运动成分
    I_xu(x,y)+I_xv(x,y)+I_t\approx0
    I_x,I_y,I_t 是图像关于两个方向和实践的梯度。u(x,y),v(x,y) 是仿射运动在两个方向上的成分
    \begin{align} u(x,y)=\alpha_1+\alpha_2x+\alpha_3y\\ v(x,y)=\alpha_4+\alpha_5x+\alpha_6y \end{align}

从此,我们将因子向量 \alpha_i 映射到运动因子空间,并对仿射运动因子向量采用 k-means 聚类。

[CS131] Lecture 17 Motion_第8张图片

最后 k-means 聚类的中心是因子 \alpha_1,...,\alpha_6​,它们最小化了上述错误方程(Err(\alpha)​),且代表了元图像块应该聚类为一个层。

你可能感兴趣的:(计算机视觉)