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

Lecture 18 Tracking

Introduction: What is tracking?

Definition

定位在连续时间下移动的物体的过程

Objective

在连续视频帧下关联目标物体并评估目标状态

Applications

  • 人机互动
  • 安全
  • AR
  • 交通
  • 医疗图像

Challenges

因为视频的大量数据,耗时较长。并依赖于物体识别算法,在以下情况可能会失败:

  • 几何改变,例如物体的尺度改变
  • 光方面的改变
  • 图像帧中遮挡
  • 非线性移动
  • 分辨率低的模糊视频
  • 同框的相似物体

Feature Tracking

Definition

特征追踪是检测并追踪在连续时间下视觉特征点

Challenges of feature tracking

  • 找出哪些特征可被追踪
  • 随着帧追踪——一些点可能产生明显变化(例如,因为旋转,光照改变)
  • 平移:随着模型升级,小错误可能积累成大错误
  • 点可能会消失,需要能够删除、添加点

What are good features to track?

通常我们会避开选择光滑区域和边缘作为特征。为了选出 “高质量” 的特征,一种方法是检测 Harris Corners 作为关键点,这样能够保证较小的错误敏感性。

一旦选好了特征,接下来就可以使用光流算法来解决移动测量问题。

Example

[CS131] Lecture 18 Tracking

Tracking methods

Simple Kanade–Lucas–Tomasi feature tracker

The Kanade–Lucas–Tomasi (KLT) 特征追踪器是一种特征提取方法。KLT 使用空间强度信息来引导位置的搜索,从而找到最佳匹配位置。算法如下:

  1. 找到一个好的点来追踪 (Harris corner)

    Harris corner 点有较大特征值,所以光流方程可解

  2. 对每个 Harris corner 计算帧之间的运动(平移或仿射)

  3. 在连续帧内连接运动向量来得到每个 Harris corner 的轨迹。

    如果新点周围和旧点差距太大,则抛弃这些点

  4. 对每 10 或 15 帧应用 Harris 检测器,引入新的 Harris 点。

下图的箭头表示 Harris corners 的运动追踪。

[CS131] Lecture 18 Tracking

[CS131] Lecture 18 Tracking

2D Transformations

Types of 2D Transformations

[CS131] Lecture 18 Tracking

有多种类型的 2D 转换。可以通过摄像机(放置位置、移动、视角…)和物体来选择正确的 2D 转换。上图是几种 2D 转换的例子:

  • 平移 (translation) 变换(例如,固定吊顶相机)
  • 相似变换(例如,篮球赛固定相机)
  • 仿射变换(例如,行人检测中的人)
  • 射影变换(例如,移动相机)

Translation

[CS131] Lecture 18 Tracking

平移运动是一个点平移到另一个点。假设我们有一个在左边(x,y)的点m。应用平移运动将m从点(x,y)移动到(x,y)

x=x+b1y=y+b2

可以写成用其次坐标的矩阵变换:
(xy)=(10b101b2)(xy1)

定义W
W(x;p)=(10b101b2)

其中因子向量p=(b1 b2)

Wp的偏导数为

Wp(x;p)=(1001)

上式被称作雅克比行列式 (Jacobian)

Similarity Motion

相似运动是一种刚体运动,包括缩放和平移。

我们可以定义相似性为

x=ax+b1y=ay+b2

定义W,p
W=(a0b10ab2)p=(ab1b2)T

Wp的偏导数,即雅克比行列式 (Jacobian) 为
Wp(x;p)=(x10y01)

Affine motion

仿射运动包括放缩,旋转,平移。我们可以表达为

x=a1x+a2y+b1y=a3x+a4y+b1

定义W,p
W=(a1a2b1a3a4b2)p=(a1a2b1a3a4b2)T

Wp的偏导数,即雅克比行列式 (Jacobian) 为
Wp(x;p)=(xy1000000xy1)

Iterative KLT tracker

Problem formulation

给定视频顺序,找到对应每帧相连的变化顺序。要求能够处理任意类型的运动。

Approach

与 KLT 追踪器不同之处在于连接帧的方式:用特征数据和线性相似直接解决相关的变换,而不是用光流连接运动向量并追踪运动。这种方式允许我们处理更加复杂(例如,仿射和投射)转换,并更加稳健的连接物体。

步骤:

  1. 用 Harris corner 检测找到特征

  2. 对于每个在位置x=[x,y]T的特征:选择一个特征描述子,并用这个描述子创建一个特征的初始模板(常用附近的像素):T(x)

  3. 求出一个p,能够最小化下一帧中在x2=W(x;p)周围(假设是在特征的新位置)的特征描述的错误。用公式描述则是

    x[T(W(x;p))T(x)]2

  4. 迭代的重复以上步骤,将帧之间相连接,随着转换的不断应用,储存特征的坐标。这样能够得到关于物体如何在帧之间移动的测量。

  5. 像之前一样,每 10-15 帧引入一个新 Harris corner 来加入新特征,去除之前不好的特征。

Math

在上面第三步中,我们实际上可以近似计算p。假设有一个关于p,p0的初始猜测,其中p=p0+Δp

现在

E=x[T(W(x;p))T(x)]2=x[T(W(x;p0+Δp))T(x)]2

使用泰勒逼近,我们可以看出错误项约等于
Ex[T(W(x;p0))+TWpΔpT(x)]2

为了最小化此项,我们对p0求偏导,并设为 0,求出p0
Epx[T(Wp)T][T(W(x;p0))+TWpΔpT(x)]=0Δp=H1x[T(Wp)T][T(x)T(W(x;p0))]H=x[TWp]T[TWp]

迭代地设置p0=p0+Δp,我们可以最终收敛于一个精确的、最小化错误值的p,告诉我们转换的类型。

Link to Harris Corner Detection

对平移运动,

Wp(x;p)=(1001)

容易得到,
H=(Ix2IxIyIxIyIy2)

但是,Harris corner 检测器假设只要H有大特征值(即稳定可逆),那么该点就是一个角。因此,角可能是一个用于计算平移的好特征,恰恰因为角计算出的矩阵是稳定可逆的。

相关文章: