• 计算机视觉基础(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描述子和二进制描述子。

  • 相关阅读:
    计算机毕业论文微信小程序毕业设计SSM校园论坛+后台管理系统|前后分离VUE[包运行成功]
    智慧环保:科技驱动下的环境保护新篇章
    3.生成验证码 + 开发登录、退出功能 + 显示登录信息
    机器学习(三):多项式回归
    HTML+CSS+JS制作结婚邀请函代码(程序员专属情人节表白网站)
    《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(18)-Fiddler如何接口测试,妈妈再也不担心我不会接口测试了
    彻底理解solidity中的事件
    【如何学习CAN总线测试】——AUTOSAR网络管理测试
    数据结构 第三章(栈和队列)【下】
    题解——01背包问题例题(装箱问题、宠物小精灵之收服)
  • 原文地址:https://blog.csdn.net/weixin_65688914/article/details/133893809