前言
本文我们将学习到特征点及其描述子。在特征点检测中,我们将学习角点检测和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)具有如下特点:
- 高斯模糊过的图像可以去除噪声的影响;
- 高斯差分操作可以只保留相邻层模糊水平之间的频率,即类似一种带通滤波;
- 可以突显图像中的角、边和其他细节;
使用高斯差分算子进行关键点检测的结果,展示如下:
二、特征描述子
在正式进入特征描述子的学习之前,我们需要知道什么样的特征描述子是好的、优秀的。
好的特征描述子应该具有如下性质:
- 鲁棒性:对多种几何变换和光照变换具有一定的不变性
- 独特性:一个区域的特征描述子和其他区域能很好的区分开
- 紧致性:仅用较低维的向量就可以对该特征进行鲁棒和独特的描述
- 计算高效:可以快速的计算特征描述子并进行高效的比较
常用的特征描述子如下:
- 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描述子和二进制描述子。