前言

本文我们将学习到特征点及其描述子。在特征点检测中,我们将学习角点检测和SIFT关键点检测器,角点检测以哈里斯角点检测器为例进行说明,SIFT将从高斯拉普拉斯算子和高斯差分算子展开。在描述子部分,我们将分别学习SIFT描述子和二进制描述子的概念、基本计算流程以及优劣评价,并给出实例进行说明。

一、特征点检测

首先,让我们来了解一下特征点的定义及其性质。

特征点:图像中具有独特局部性质的点。

特征点应用:

  • 图像对其配准
  • 3D重建
  • 运动跟踪
  • 机器人导航
  • 图像检索
  • ···

特征点有如下性质:

  • 局部性:特征是局部的,对遮挡和混乱场景鲁棒
  • 数量:一幅图像中可以产生足够数量的特征点,比如成百上千
  • 独特性:可以和其他图像中大多数点相区分
  • 高效:能够进行实时的检测和比较
  • 可重复性:对图像进行旋转平移等操作后,仍能被检测到

1.1 角点检测器

1.1.1 角点

角点的定义:在一个以角点为中心的局部窗口内沿着,任意方向移动都会给亮度带来显著变化

1.1.2 角点检测

某个以(,)为中心的局部窗口经过(, )的微小偏移后,窗口内部亮度发生的变化量,可以用SSD表示为:

【举例说明】

我们不妨设:

【水平方向边缘】

【竖直方向边缘】

【重点:需要理解】

【举例说明】

用二阶矩矩阵的特征值对图像中的点进行分类:

【举例说明】

1.1.3哈里斯角点检测器

用Harris角点响应函数对图像中的点进行分类:

1.1.4 小结

【流程总结】

【特点】

1.2 SIFT关键点检测器

基本思想:用一个突出区域滤波器(blob filter)对图像在多个尺度上进行卷积并在尺度空间寻找滤波器响应的极值

blob定义:图像等信号内出现”灰度突变”的区域

1.2.1 高斯拉普拉斯算子

Laplacian of Gaussian,LOG

定义:将拉普拉斯算子作用到高斯平滑过的图像上来检测Blob

拉普拉斯算子运算结果如图所示:

接下来,我们对高斯拉普拉斯算子进行详细的分析:

通过对上图的分析,我们不难得到如下结论:在信号中blob尺度和LoG中高斯平滑尺度接近时,其响应最大。

但是拉普拉斯算子出现了如下问题:响应随着其LoG中高斯平滑尺度的增加而减小。如下所示:

解决方案是进行尺度归一化(Scale Normalization),即× ²。如下所示:

使用高斯拉普拉斯算子进行计算的实例如下:

1.2.2 高斯差分算子

Difference of Gaussian, DoG

高斯拉普拉斯算子(LoG)需要计算二阶导数,计算复杂度会比计算一阶高,因此考虑可以用一阶高斯差分来近似。由此引出高斯差分算子的概念:

高斯差分算子 (Difference of Gaussian, DoG)具有如下特点:

  1. 高斯模糊过的图像可以去除噪声的影响;
  2. 高斯差分操作可以只保留相邻层模糊水平之间的频率,即类似一种带通滤波;
  3. 可以突显图像中的角、边和其他细节;

使用高斯差分算子进行关键点检测的结果,展示如下:

二、特征描述子

在正式进入特征描述子的学习之前,我们需要知道什么样的特征描述子是好的、优秀的。

好的特征描述子应该具有如下性质:

  • 鲁棒性:对多种几何变换和光照变换具有一定的不变性
  • 独特性:一个区域的特征描述子和其他区域能很好的区分
  • 紧致性:仅用较低维的向量就可以对该特征进行鲁棒和独特的描述
  • 计算高效:可以快速的计算特征描述子并进行高效的比较

常用的特征描述子如下:

  • HOG: Histogram of Oriented Gradients
  • SIFT: Scale Invariant Feature Transform
  • SURF: Speeded-Up Robust Features
  • GLOH: Gradient Location and Orientation Histogram
  • BRIEF: Binary Robust Independent Elementary Features
  • ORB: Oriented FAST and rotated BRIEF
  • BRISK: Binary Robust Invariant Scalable Keypoints
  • FREAK: Fast REtinA Keypoint

2.1 SIFT描述子

2.1.1 概念

Scale-Invariant Feature Transform, SIFT

SIFT描述子是根据尺度空间中局部极值所在的位置和尺度,以及其所在的邻域范围内的梯度计算得到的一个向量。

2.1.2 SIFT基本计算流程

1. 根据兴趣点的尺度和位置,在邻域计算36bin的梯度方向直方图,并选择其中最大计数的桶对应的方向作为描述子主方向

2. 根据描述子的主方向和兴趣点的尺度和位置,确定相应的16 × 16邻域并计算梯度,之后将梯度图划分成4×4个小块

3. 对每个小块计算8bin的梯度方向直方图

4. 把每个小块的梯度方向直方图都拼接起来,得到16 × 8 = 128 维的特征向量

2.1.3 举例说明

基本计算流程示例:

两幅图像中SIFT兴趣点匹配:

兴趣匹配的原则:

2.2 二进制描述子

2.2.1 概念

二进制描述子:生成可以高效计算且易于比较的二进制串

比较两个二进制描述子的注意事项

  • 邻域内像素对要用同样的选择方式
  • 像素对的选择顺序也要保持一致

不同二进制描述子主要区别在于选择像素对的策略

2.2.2 Brief 描述子

Binary robust independent elementary features

2.2.3 ORB 描述子

对于其他的描述子,大家感兴趣的可以去网上查找资源自行进行学习噢~

总结

本文我们主要学习了特征点检测与特征描述子,为图像处理中的特征点检测和特征描述打下了坚实的基础。希望大家能将本文所有算法的流程熟悉一遍,然后能自己总结复述出来,最好结合公式进行推导。本章的重点在于哈里斯角点检测、SIFT关键点检测(高斯拉普拉斯算子和高斯差分算子),以及SIFT描述子和二进制描述子。