动机

想从未知的视角识别已知的对象(物体)。

【计算机视觉】Lecture 31:对象识别:SIFT_计算机视觉

基于局部特征的方法

• 通过小的灰度/特征图像块表示对象的外观。

• 尝试从对象到图像匹配图像块

• 几何一致的匹配表示出物体的位置和姿态

简单的例子

通过在Harris角点周围提取的 11x11 尺寸大小的灰度模板集表示对象。

【计算机视觉】Lecture 31:对象识别:SIFT_归一化_02

使用 NCC 将图像块与新图像匹配

【计算机视觉】Lecture 31:对象识别:SIFT_归一化_03

利用RANSAC寻找与仿射变换一致的匹配

【计算机视觉】Lecture 31:对象识别:SIFT_尺度空间_04

使用内点匹配求解图像中对象的位置和姿态。

【计算机视觉】Lecture 31:对象识别:SIFT_归一化_05

简单例子的问题

使用NCC匹配灰度图像块会限制模型模板图像块和图像外观之间允许的整体旋转量和缩放量。

【计算机视觉】Lecture 31:对象识别:SIFT_计算机视觉_06

更一般的:SIFT 关键点

图像内容被转换到对平移、旋转、缩放和其他成像参数不变的局部特征坐标。

【计算机视觉】Lecture 31:对象识别:SIFT_特征点_07

David G. Lowe, “Distinctive image features from scale-invariant keypoints,” International Journal of Computer Vision, 60, 2 (2004), pp. 91-110.

SIFT 基本思想

• 可靠地提取相同的图像点,而不考虑图像的新放大和旋转。

• 归一化图像块,提取特征向量

• 使用互相关性匹配特征向量

【计算机视觉】Lecture 31:对象识别:SIFT_计算机视觉_08

希望检测/匹配相同的特征点,而不用管以下几点:
平移:比较简单,视觉中几乎所有的特征提取和互相关匹配算法都是平移不变的
旋转:更难一点。从局部梯度推测每个图像块的标准方向
缩放:最难。创建图像的多尺度表示,并利用尺度空间理论确定每个点的正确尺度。

回忆:尺度空间

基本思想:不同的尺度适合描述图像中的不同对象,我们可能无法提前知道正确的尺度/大小。

【计算机视觉】Lecture 31:对象识别:SIFT_归一化_09

尺度选择

【计算机视觉】Lecture 31:对象识别:SIFT_计算机视觉_10

normalized derivatives归一化导数:

【计算机视觉】Lecture 31:对象识别:SIFT_计算机视觉_11

例子(使用二阶导数)

【计算机视觉】Lecture 31:对象识别:SIFT_特征点_12

后者是拉普拉斯算子

【计算机视觉】Lecture 31:对象识别:SIFT_尺度空间_13

局部尺度空间极大值

Lindeberg 提出,描述特征的自然尺度是检测该特征的归一化导数在空间和尺度上均达到局部最大值的尺度。

【计算机视觉】Lecture 31:对象识别:SIFT_特征点_14

在这种情况下,DnormL是DoG算子。

【计算机视觉】Lecture 31:对象识别:SIFT_计算机视觉_15

回忆:LoG 斑点 (Blob) 检测

LoG 滤波器极值定位在 “blob”

极大值 = 亮背景上的暗斑点

极小值 = 暗背景上的亮斑点

斑点的尺度(大小,像素半径)由LoG滤波器的sigma参数确定

【计算机视觉】Lecture 31:对象识别:SIFT_特征点_16

空间和尺度上的极值

【计算机视觉】Lecture 31:对象识别:SIFT_特征点_17

提示:在L级寻找最大值或最小值时,根据需要使用下采样或上采样使L-1级和L+1级的DoG图像与L级的大小相同。

SIFT 基本思想

希望检测/匹配相同的特征点,而不用管以下几点:
平移:比较简单,视觉中几乎所有的特征提取和互相关匹配算法都是平移不变的
旋转:更难一点。从局部梯度推测每个图像块的标准方向
缩放:最难。创建图像的多尺度表示,并利用尺度空间理论确定每个点的正确尺度。

Sift关键点步骤

选择标准方向:


  1. 在选择的尺度上创建出计算的局部梯度方向的直方图
  2. 将经过平滑的直方图的峰值分配为标准方向
  3. 每一个关键点确定了稳定的二维坐标(x,y,尺度,方向)

【计算机视觉】Lecture 31:对象识别:SIFT_特征点_18

例子

【计算机视觉】Lecture 31:对象识别:SIFT_归一化_19

关键点位置 = 极值位置

关键点尺度是DoG图像的尺度

【计算机视觉】Lecture 31:对象识别:SIFT_特征点_20

高斯图像(在最接近的尺度上,从金字塔中)

【计算机视觉】Lecture 31:对象识别:SIFT_归一化_21

梯度幅值

【计算机视觉】Lecture 31:对象识别:SIFT_尺度空间_22

梯度方向

【计算机视觉】Lecture 31:对象识别:SIFT_计算机视觉_23【计算机视觉】Lecture 31:对象识别:SIFT_特征点_24【计算机视觉】Lecture 31:对象识别:SIFT_计算机视觉_25

可能有多个方向达到峰值。

【计算机视觉】Lecture 31:对象识别:SIFT_计算机视觉_26

在这种情况下,生成重复的关键点,一个方向为25度,一个方向为155度。

设计决策:希望将可能的多个峰值的数量限制为两个

关键点检测的例子

【计算机视觉】Lecture 31:对象识别:SIFT_尺度空间_27

每一个关键点有一个中心(位置),一个方向(旋转)和一个半径(尺度)

在这关键点上,我们可以尝试互关联图像块(在先归一化标准的方向和尺度之后)。

SIFT 向量

为了使物体对光照的变化或几何形状的微小变化不敏感,Lowe从图像梯度中构造了特征向量


  1. 在尺度空间中的16×16位置阵列上对阈值图像梯度进行采样
  2. 创建方向直方图数组
  3. 8个方向 × 4*4直方图数组 = 128维度

【计算机视觉】Lecture 31:对象识别:SIFT_特征点_28

Sift 关键点匹配


  1. 假设是由数据库中每个特征与向量的近似最近邻匹配生成的
  2. 比较最近邻与第二最近邻(来自不同对象)的距离
  3. 阈值为0.8,可提供良好的分离效果

【计算机视觉】Lecture 31:对象识别:SIFT_特征点_29

模型验证


  1. 检查至少具有3个特征点的所有群集
  2. 对模型进行最小二乘仿射拟合
  3. 去掉外点并对附加的特征点行自上而下的检查
  4. 评估匹配正确的概率——使用贝叶斯模型,如果对象不存在,则特征点会偶然出现的概率

应用:对象识别

【计算机视觉】Lecture 31:对象识别:SIFT_归一化_30

【计算机视觉】Lecture 31:对象识别:SIFT_特征点_31

对于3个SIFT关键点的匹配集,计算仿射变换并执行模型验证。

【计算机视觉】Lecture 31:对象识别:SIFT_尺度空间_32

注意:由于关键点是局部的并且基于部分的描述子,所以即使某些部分丢失(即被遮挡),它们也能很好地执行。

【计算机视觉】Lecture 31:对象识别:SIFT_计算机视觉_33

应用:路标点识别

【计算机视觉】Lecture 31:对象识别:SIFT_归一化_34

应用:生成全景图

【计算机视觉】Lecture 31:对象识别:SIFT_归一化_35

【计算机视觉】Lecture 31:对象识别:SIFT_特征点_36

目前技术水平

完全仿射不变的局部特征描述子。

【计算机视觉】Lecture 31:对象识别:SIFT_尺度空间_37

仿射不变描述子可以处理较大的视角变化。

【计算机视觉】Lecture 31:对象识别:SIFT_计算机视觉_38

【计算机视觉】Lecture 31:对象识别:SIFT_特征点_39