计算机视觉基础(5)——特征点及其描述子

前言

本文我们将学习到特征点及其描述子。在特征点检测中,我们将学习角点检测和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描述子和二进制描述子。

相关推荐
RaidenQ2 小时前
2024.9.13 Python与图像处理新国大EE5731课程大作业,索贝尔算子计算边缘,高斯核模糊边缘,Haar小波计算边缘
图像处理·python·算法·课程设计
Trouvaille ~3 小时前
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
图像处理·python·机器学习·numpy·信号处理·时间序列分析·科学计算
i嗑盐の小F5 小时前
【IEEE出版,高录用 | EI快检索】第二届人工智能与自动化控制国际学术会议(AIAC 2024,10月25-27)
图像处理·人工智能·深度学习·算法·自然语言处理·自动化
shiming887910 小时前
MATLAB图像处理
图像处理·计算机视觉·matlab
点PY12 小时前
基于Sparse Optical Flow 的Homography estimation
人工智能·opencv·计算机视觉
越甲八千12 小时前
opencv滤波算法总结
opencv
越甲八千12 小时前
opencv对比度增强方法算法汇总
人工智能·opencv·算法
独木三绝12 小时前
OpenCV第八章——腐蚀与膨胀
人工智能·opencv·计算机视觉
柠檬少少开发14 小时前
图像拼接算法及实现(一)
人工智能·算法·计算机视觉
红米煮粥14 小时前
OpenCV-直方图
人工智能·opencv·计算机视觉