动机
想从未知的视角识别已知的对象(物体)。
基于局部特征的方法
• 通过小的灰度/特征图像块表示对象的外观。
• 尝试从对象到图像匹配图像块
• 几何一致的匹配表示出物体的位置和姿态
简单的例子
通过在Harris角点周围提取的 11x11 尺寸大小的灰度模板集表示对象。
使用 NCC 将图像块与新图像匹配
利用RANSAC寻找与仿射变换一致的匹配
使用内点匹配求解图像中对象的位置和姿态。
简单例子的问题
使用NCC匹配灰度图像块会限制模型模板图像块和图像外观之间允许的整体旋转量和缩放量。
更一般的:SIFT 关键点
图像内容被转换到对平移、旋转、缩放和其他成像参数不变的局部特征坐标。
David G. Lowe, “Distinctive image features from scale-invariant keypoints,” International Journal of Computer Vision, 60, 2 (2004), pp. 91-110.
SIFT 基本思想
• 可靠地提取相同的图像点,而不考虑图像的新放大和旋转。
• 归一化图像块,提取特征向量
• 使用互相关性匹配特征向量
希望检测/匹配相同的特征点,而不用管以下几点:
平移:比较简单,视觉中几乎所有的特征提取和互相关匹配算法都是平移不变的
旋转:更难一点。从局部梯度推测每个图像块的标准方向
缩放:最难。创建图像的多尺度表示,并利用尺度空间理论确定每个点的正确尺度。
回忆:尺度空间
基本思想:不同的尺度适合描述图像中的不同对象,我们可能无法提前知道正确的尺度/大小。
尺度选择
normalized derivatives归一化导数:
例子(使用二阶导数)
后者是拉普拉斯算子
局部尺度空间极大值
Lindeberg 提出,描述特征的自然尺度是检测该特征的归一化导数在空间和尺度上均达到局部最大值的尺度。
在这种情况下,DnormL是DoG算子。
回忆:LoG 斑点 (Blob) 检测
LoG 滤波器极值定位在 “blob”
极大值 = 亮背景上的暗斑点
极小值 = 暗背景上的亮斑点
斑点的尺度(大小,像素半径)由LoG滤波器的sigma参数确定
空间和尺度上的极值
提示:在L级寻找最大值或最小值时,根据需要使用下采样或上采样使L-1级和L+1级的DoG图像与L级的大小相同。
SIFT 基本思想
希望检测/匹配相同的特征点,而不用管以下几点:
平移:比较简单,视觉中几乎所有的特征提取和互相关匹配算法都是平移不变的
旋转:更难一点。从局部梯度推测每个图像块的标准方向
缩放:最难。创建图像的多尺度表示,并利用尺度空间理论确定每个点的正确尺度。
Sift关键点步骤
选择标准方向:
- 在选择的尺度上创建出计算的局部梯度方向的直方图
- 将经过平滑的直方图的峰值分配为标准方向
- 每一个关键点确定了稳定的二维坐标(x,y,尺度,方向)
例子
关键点位置 = 极值位置
关键点尺度是DoG图像的尺度
高斯图像(在最接近的尺度上,从金字塔中)
梯度幅值
梯度方向
可能有多个方向达到峰值。
在这种情况下,生成重复的关键点,一个方向为25度,一个方向为155度。
设计决策:希望将可能的多个峰值的数量限制为两个。
关键点检测的例子
每一个关键点有一个中心(位置),一个方向(旋转)和一个半径(尺度)
在这关键点上,我们可以尝试互关联图像块(在先归一化标准的方向和尺度之后)。
SIFT 向量
为了使物体对光照的变化或几何形状的微小变化不敏感,Lowe从图像梯度中构造了特征向量。
- 在尺度空间中的16×16位置阵列上对阈值图像梯度进行采样
- 创建方向直方图数组
- 8个方向 × 4*4直方图数组 = 128维度
Sift 关键点匹配
- 假设是由数据库中每个特征与向量的近似最近邻匹配生成的
- 比较最近邻与第二最近邻(来自不同对象)的距离
- 阈值为0.8,可提供良好的分离效果
模型验证
- 检查至少具有3个特征点的所有群集
- 对模型进行最小二乘仿射拟合
- 去掉外点并对附加的特征点行自上而下的检查
- 评估匹配正确的概率——使用贝叶斯模型,如果对象不存在,则特征点会偶然出现的概率
应用:对象识别
对于3个SIFT关键点的匹配集,计算仿射变换并执行模型验证。
注意:由于关键点是局部的并且基于部分的描述子,所以即使某些部分丢失(即被遮挡),它们也能很好地执行。
应用:路标点识别
应用:生成全景图
目前技术水平
完全仿射不变的局部特征描述子。
仿射不变描述子可以处理较大的视角变化。