尺度不变特征
计算机视觉中尺度不变特征变换方法的使用教程

计算机视觉中尺度不变特征变换方法的使用教程摘要:计算机视觉中的尺度不变特征变换(Scale-Invariant Feature Transform, SIFT)是一种经典的图像特征提取方法。
本文将介绍SIFT算法的原理、流程以及如何在计算机视觉应用中使用SIFT进行目标识别和图像匹配。
1. 引言随着计算机视觉领域的快速发展,图像特征提取和描述对于图像处理和分析至关重要。
然而,由于图像在不同尺度和旋转角度下的变化,如何寻找具有尺度不变性的特征一直是一个挑战。
SIFT算法的提出正是为了解决这一问题。
2. SIFT算法原理SIFT算法的核心思想是构建具有尺度不变性的图像特征。
它通过在图像中检测局部特征点,并对这些特征点进行尺度空间极值检测和方向分配,最终形成独特的特征描述子。
2.1 尺度空间极值检测SIFT算法首先通过高斯差分金字塔来寻找图像中的尺度空间极值点,即在不同尺度和位置上的局部极值点。
高斯差分金字塔是由一系列高斯模糊图像和它们之间的差分图像构成的。
通过对高斯模糊图像进行高斯差分操作,可以提取图像中的边缘结构和斑点结构等。
2.2 方向分配对于尺度空间极值点,SIFT算法会计算其周围像素的梯度方向直方图,并找到主要的梯度方向。
这样就为后续的特征描述子计算提供了方向信息,使得特征具有一定的旋转不变性。
2.3 特征描述子在确定尺度空间极值点的位置和方向后,SIFT算法会计算每个特征点周围像素的梯度幅值和方向,进而生成一个128维的特征向量。
该特征向量代表了图像中的局部纹理特征,并具有尺度和旋转不变性。
3. SIFT算法步骤根据SIFT算法原理,我们可以总结出SIFT算法的主要步骤如下:3.1 预处理首先,将原始图像转换为灰度图像,并进行图像尺寸的调整。
3.2 构建高斯金字塔在灰度图像上构建高斯金字塔,通过不断降采样和高斯模糊操作得到一系列尺度空间的图像。
3.3 构建高斯差分金字塔使用高斯金字塔中的相邻图像相减得到一系列高斯差分图像,用于寻找尺度空间极值点。
sfit特征提取和匹配的具体步骤

sfit特征提取和匹配的具体步骤
SIFT(尺度不变特征变换)是一种用于图像处理和计算机视觉的特征提取和匹配算法。
它能够在不同尺度和旋转下提取出稳定的特征点,并且对光照变化和噪声有一定的鲁棒性。
SIFT特征提取的具体步骤包括:
1. 尺度空间极值检测,在不同尺度下使用高斯差分函数来检测图像中的极值点,用来确定关键点的位置和尺度。
2. 关键点定位,通过对尺度空间的极值点进行精确定位,使用Hessian矩阵来确定关键点的位置和尺度。
3. 方向分配,对关键点周围的梯度方向进行统计,确定关键点的主方向,使得特征具有旋转不变性。
4. 关键点描述,以关键点为中心,划分周围的区域为小区块,计算每个区块内的梯度方向直方图,构建特征向量。
SIFT特征匹配的具体步骤包括:
1. 特征点匹配,使用特征向量的距离来进行特征点的匹配,通常使用欧氏距离或者近邻算法进行匹配。
2. 鲁棒性检验,对匹配点进行鲁棒性检验,例如RANSAC算法可以剔除错误匹配点,提高匹配的准确性。
3. 匹配结果筛选,根据匹配点的特征向量距离或一致性进行筛选,得到最终的匹配结果。
总的来说,SIFT特征提取和匹配的具体步骤包括特征点检测、定位、描述以及匹配过程。
这些步骤能够帮助我们在图像处理和计算机视觉中提取出稳定的特征并进行准确的匹配,从而实现目标识别、图像配准等应用。
又快又准的特征匹配方法

又快又准的特征匹配方法又快又准的特征匹配方法是计算机视觉领域中非常重要的一个问题。
特征匹配是指在两个或多个图像中找到具有相似性的特征点,并建立它们之间的对应关系。
特征匹配在很多应用中都有广泛的应用,如图像配准、目标检测和跟踪等。
在过去的几十年中,研究人员提出了许多特征匹配方法,其中一些方法即使在处理大规模数据集时也能提供很高的匹配准确性和效率。
下面将介绍几种又快又准的特征匹配方法。
1.SIFT(尺度不变特征变换)SIFT是一种非常经典的特征匹配算法,在很多应用中都被广泛使用。
它通过将图像中的特征点转换成尺度、旋转和亮度不变的向量,然后使用特征向量之间的欧氏距离来进行匹配。
SIFT算法具有很高的匹配准确性和鲁棒性,但在处理大规模数据集时会存在时间和空间复杂度较高的问题。
2.SURF(加速稳健特征)SURF是一种基于SIFT的改进算法,能够在保持较高匹配准确性的同时提高匹配的速度。
SURF算法用Hessian矩阵来检测特征点,并通过使用积分图像来加速特征描述子的计算。
这种基于加速稳健特征的特征匹配方法比SIFT更快、更鲁棒,适用于处理大规模数据集。
3.ORB(方向倒角二值描述子)ORB是一种在效率和准确性之间取得平衡的特征匹配算法。
它结合了FAST关键点检测器和BRIEF特征描述子,使用方向倒角二进制描述子来表示特征点,从而使得匹配速度更快。
ORB算法在实践中表现良好,尤其适用于移动设备上的实时应用。
4.BRISK(加速鲁棒特征)BRISK是一种能够提供快速、鲁棒特征匹配的算法。
它通过快速角点检测器来检测特征点,并使用二进制描述子来进行特征匹配。
BRISK算法具有较低的计算复杂度和内存消耗,并且能够在保持较高的匹配准确性的同时提供很高的速度。
TCH(局部联合二进制特征)LATCH是一种基于二进制特征匹配的算法,具有很高的匹配速度和鲁棒性。
LATCH算法通过使用快速特征检测器和局部联合二进制描述子来检测和匹配图像中的特征点。
sift拼接算法流程

sift拼接算法流程sift拼接算法流程概述本文将介绍SIFT(尺度不变特征转换)拼接算法流程,这是一种常用于图像拼接的算法。
SIFT算法是一种基于局部特征描述的图像处理算法,具有很好的尺度不变性和旋转不变性。
算法流程概览1.图像预处理–调整图像的大小以适应拼接要求–将图像转换为灰度图像,去除颜色信息2.特征点检测–使用SIFT算法检测图像的关键点–对每个关键点计算其尺度和方向3.特征描述–对每个关键点周围的区域计算特征描述子–描述子是一种用于描述关键点特征的向量4.特征匹配–针对两幅图像的特征描述子进行匹配–使用基于距离的匹配算法,如最近邻法5.配准–根据匹配结果进行图像配准–通过计算变换矩阵,将待拼接图像转换到参考图像坐标系下6.拼接–根据配准结果,将待拼接图像与参考图像进行融合–采用图像叠加或图像融合的方式7.优化–对拼接后的图像进行优化–去除拼接缝隙或伪影等不完美的部分8.输出–将拼接后的图像保存为文件或进行其他处理–可以生成全景图像或其他形式的图像算法流程详解图像预处理在图像预处理阶段,首先需要对待拼接的图像进行预处理。
这包括调整图像的大小以适应拼接要求,一般要求图像具有相同的尺寸。
其次,将图像转换为灰度图像,去除颜色信息。
这是为了降低计算的复杂度,并使得SIFT算法更加稳定。
特征点检测特征点检测是SIFT算法的核心部分。
在这一步骤中,使用SIFT 算法检测图像的关键点。
SIFT算法会在图像的不同位置和尺度上检测出一些关键点,这些关键点具有显著的图像特征,如角点、边缘等。
同时,对于每个关键点,还会计算其尺度和方向信息。
特征描述特征描述是针对每个关键点周围的区域计算其特征描述子。
描述子是一种向量表示,用于描述关键点的局部特征。
在计算描述子时,会考虑关键点的尺度和方向信息,以及其周围区域的图像信息。
特征描述子是SIFT算法的另一个关键输出,它能够很好地保持特征的不变性。
特征匹配在特征匹配阶段,使用一种基于距离的匹配算法来对两幅图像的特征描述子进行匹配。
尺度不变特征变换算法

尺度不变特征变换算法一、前言尺度不变特征变换算法(Scale-Invariant Feature Transform,SIFT)是一种用于图像处理和计算机视觉的算法,由David Lowe于1999年提出。
SIFT算法可以在不同尺度和旋转下找到图像中的关键点,并提取出这些关键点的局部特征描述符,从而实现对图像的匹配、识别等任务。
二、SIFT算法原理1. 尺度空间构建SIFT算法首先通过高斯滤波器构建尺度空间,以便在不同尺度下检测图像中的关键点。
高斯滤波器可以模拟人眼对图像的模糊效果,使得在不同尺度下能够检测到具有相似形状但大小不同的物体。
2. 关键点检测在构建好尺度空间后,SIFT算法通过DoG(差分高斯)金字塔来寻找关键点。
DoG金字塔是由相邻两层高斯金字塔之差得到的,它可以有效地检测出具有不同尺度和方向的局部极值点。
3. 方向分配为了使得特征描述子具有旋转不变性,在确定关键点位置后,SIFT算法还需要计算每个关键点的主方向。
它通过计算关键点周围像素的梯度方向直方图来确定主方向,从而使得特征描述子能够在不同角度下进行匹配。
4. 特征描述在确定了关键点位置和主方向之后,SIFT算法通过计算关键点周围像素的梯度幅值和方向来生成特征描述子。
这个过程中,SIFT算法使用了一个16×16的窗口,并将其分成4×4个小窗口,在每个小窗口中计算8个梯度方向的直方图,最终生成一个128维的特征向量。
5. 特征匹配在提取出两幅图像中所有关键点的特征描述子后,SIFT算法采用欧氏距离来计算两个特征向量之间的相似度,并使用比率测试来判断是否为匹配点。
如果两个特征向量之间的距离小于一定阈值,并且与次近邻之间距离比例大于一定比例,则认为是匹配点。
三、SIFT算法优缺点1. 优点:(1)尺度不变性:SIFT算法可以在不同尺度下检测到具有相似形状但大小不同的物体;(2)旋转不变性:SIFT算法可以计算每个关键点的主方向,从而使得特征描述子能够在不同角度下进行匹配;(3)鲁棒性:SIFT算法对于光照、视角、噪声等因素有较好的鲁棒性。
常用的特征描绘子

常用的特征描绘子在计算机视觉和图像处理领域,特征描绘子是用于描述图像中的特定属性或纹理信息的数学表示。
特征描绘子对于图像匹配、对象识别和图像检索等任务非常重要。
下面将介绍一些常用的特征描绘子。
1.SIFT(尺度不变特征变换):SIFT是一种用于在不同尺度上检测和描述局部特征的算法。
它通过应用高斯滤波器来寻找具有高灵敏度的关键点,并使用关键点周围的局部图像区域来构建描述子。
SIFT特征具有尺度不变性和旋转不变性,因此在大规模图像检索和对象识别中广泛应用。
2. SURF(加速稳健特征):SURF是一种基于Hessian矩阵的局部特征描述子。
它通过计算图像中的灰度变化率来检测特征点,并构建了一种基于梯度直方图的描述子。
SURF特征具有尺度不变性、旋转不变性和光照不变性,且计算速度比SIFT更快,因此适用于实时图像处理任务。
3.ORB(方向鲁棒特征):ORB是一种结合了FAST角点检测器和BRIEF特征描述子的特征描绘子。
它通过检测图像中的角点,并使用二进制描述子来描述这些角点的特征。
ORB特征具有尺度不变性、旋转不变性和仿射不变性,且计算速度比SIFT和SURF都更快,因此适用于实时图像处理应用。
4.HOG(方向梯度直方图):HOG是一种用于物体检测和人体姿态估计的特征描述子。
它通过计算图像中局部区域的梯度直方图来描述图像的形状和纹理信息。
HOG特征在人体检测和行人识别等任务中表现出色,并且对于图像的尺度和旋转变化具有一定的鲁棒性。
5.LBP(局部二值模式):LBP是一种用于纹理分析和表情识别的特征描述子。
它通过将局部图像区域与其周围像素比较,并将比较结果编码为二进制数来描述纹理特征。
LBP特征在纹理分类和人脸识别等任务中表现出色,并且对于光照变化和噪声干扰具有一定的鲁棒性。
除了上述特征描绘子,还有许多其他的常用特征描绘子,如GIST(总体图像特征)、BRISK(加速旋转不变特征)、FREAK(快速稳定特征)等。
常见的特征描述子及其原理

常见的特征描述子及其原理特征描述子是计算机视觉中用于描述图像中特征的算法。
它们通过对图像中的特征进行数学表示,将复杂的图像信息转化为一组具有独特性质的特征向量。
这些描述子可以帮助我们识别和匹配图像中的对象、检测变化或运动等。
以下是几种常见的特征描述子及其原理:1.尺度不变特征变换(SIFT)描述子:SIFT是一种在计算机视觉领域非常著名的特征描述子。
它通过检测图像中的极值点和关键点,然后使用高斯金字塔来对图像进行尺度空间的变换,最后根据图像局部梯度方向来计算描述子。
SIFT描述子具有尺度不变性、旋转不变性和光照不变性等特性,适用于目标识别、图像匹配和物体跟踪等应用。
2.加速稳健特征(ORB)描述子:ORB是一种结合了FAST特征检测器和BRIEF特征描述子的算法。
它通过检测图像中的角点来确定关键点,然后根据这些关键点的灰度信息计算描述子。
ORB描述子具有高速性能和良好的鲁棒性,适用于实时目标追踪、三维重建和SLAM(同时定位与地图构建)等应用。
3.方向梯度直方图(HOG)描述子:HOG是一种用于图像检测的特征描述子。
它通过计算图像中局部区域的梯度方向直方图来描述图像特征。
HOG描述子在人体检测、行人识别和行为分析等领域具有广泛应用。
4.高级二进制特征(ABD)描述子:ABD是一种基于局部二进制模式(Local Binary Patterns, LBP)的特征描述子。
它通过计算图像中每个像素与其周围像素的灰度差异,得到二进制编码,然后将编码的直方图作为图像的特征向量。
ABD描述子适用于人脸识别、纹理分类和图像检索等任务。
5.非负矩阵分解(NMF)描述子:NMF是一种基于矩阵分解的特征提取方法。
它通过将图像表示为非负矩阵的乘积形式,将图像特征分解到低维空间中。
NMF描述子可用于图像聚类、图像压缩和图像检索等任务。
综上所述,特征描述子在计算机视觉中发挥着重要作用。
不同的特征描述子适用于不同的应用场景,选择合适的描述子能够提高图像处理的效果和性能。
sift算法详解

2、高斯模糊
SIFT 算法是在不同的尺度空间上查找关键点,而尺度空间的获取需要使用高斯模糊来 实现,Lindeberg 等人已证明高斯卷积核是实现尺度变换的唯一变换核,并且是唯一的线性 核。本节先介绍高斯模糊算法。
2.1 二维高斯函数
高斯模糊是一种图像滤波器,它使用正态分布(高斯函数)计算模糊模板,并使用该模板 与原图像做卷积运算,达到模糊图像的目的。 N 维空间正态分布方程为:
G (r ) =
1 2πσ
2
N
e −r
2
/(2 σ 2 )
(1-1)
其中, σ 是正态分布的标准差, σ 值越大,图像越模糊(平滑)。r 为模糊半径,模糊半 径是指模板元素到模板中心的距离。如二维模板大小为 m*n,则模板上的元素(x,y)对应的高 斯计算公式为:
G ( x, y ) =
1
2πσ 2
3.1 尺度空间理论
尺度空间(scale space)思想最早是由 Iijima 于 1962 年提出的,后经 witkin 和 Koenderink 等人的推广逐渐得到关注,在计算机视觉领域使用广泛。 尺度空间理论的基本思想是: 在图像信息处理模型中引入一个被视为尺度的参数, 通过 连续变化尺度参数获得多尺度下的尺度空间表示序列, 对这些序列进行尺度空间主轮廓的提 取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取等。 尺度空间方法将传统的单尺度图像信息处理技术纳入尺度不断变化的动态分析框架中, 更容易获取图像的本质特征。 尺度空间中各尺度图像的模糊程度逐渐变大, 能够模拟人在距 离目标由近到远时目标在视网膜上的形成过程。 尺度空间满足视觉不变性。该不变性的视觉解释如下:当我们用眼睛观察物体时,一方 面当物体所处背景的光照条件变化时, 视网膜感知图像的亮度水平和对比度是不同的, 因此 要求尺度空间算子对图像的分析不受图像的灰度水平和对比度变化的影响, 即满足灰度不变 性和对比度不变性。另一方面,相对于某一固定坐标系,当观察者和物体之间的相对位置变 化时,视网膜所感知的图像的位置、大小、角度和形状是不同的,因此要求尺度空间算子对 图像的分析和图像的位置、 大小、 角度以及仿射变换无关, 即满足平移不变性、 尺度不变性、 欧几里德不变性以及仿射不变性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SIFT特征分析与源码解读分类:机器视觉与模式识别2013-11-19 22:28 10人阅读评论(0) 收藏举报目录(?)[+] SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,该算法通过求一幅图中的特征点(interest points,or corner points)及其有关scale 和orientation 的描述子得到特征并进行图像特征点匹配,获得了良好效果,详细解析如下:算法描述SIFT特征不只具有尺度不变性,即使改变旋转角度,图像亮度或拍摄视角,仍然能够得到好的检测效果。
整个算法分为以下几个部分:1. 构建尺度空间这是一个初始化操作,尺度空间理论目的是模拟图像数据的多尺度特征。
高斯卷积核是实现尺度变换的唯一线性核,于是一副二维图像的尺度空间定义为:其中G(x,y,σ) 是尺度可变高斯函数(x,y)是空间坐标,是尺度坐标。
σ大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。
大的σ值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。
为了有效的在尺度空间检测到稳定的关键点,提出了高斯差分尺度空间(DOG scale-space)。
利用不同尺度的高斯差分核与图像卷积生成。
下图所示不同σ下图像尺度空间:关于尺度空间的理解说明:2kσ中的2是必须的,尺度空间是连续的。
在 Lowe的论文中,将第0层的初始尺度定为1.6(最模糊),图片的初始尺度定为0.5(最清晰). 在检测极值点前对原始图像的高斯平滑以致图像丢失高频信息,所以Lowe 建议在建立尺度空间前首先对原始图像长宽扩展一倍,以保留原始图像信息,增加特征点数量。
尺度越大图像越模糊。
图像金字塔的建立:对于一幅图像I,建立其在不同尺度(scale)的图像,也成为子八度(octave),这是为了scale-invariant,也就是在任何尺度都能够有对应的特征点,第一个子八度的scale为原图大小,后面每个octave为上一个octave降采样的结果,即原图的1/4(长宽分别减半),构成下一个子八度(高一层金字塔)。
尺度空间的所有取值,i为octave的塔数(第几个塔),s为每塔层数由图片size决定建几个塔,每塔几层图像(S一般为3-5层)。
0塔的第0层是原始图像(或你double后的图像),往上每一层是对其下一层进行Laplacian变换(高斯卷积,其中σ值渐大,例如可以是σ, k*σ, k*k*σ…),直观上看来越往上图片越模糊。
塔间的图片是降采样关系,例如1塔的第0层可以由0塔的第3层down sample得到,然后进行与0塔类似的高斯卷积操作。
2. LoG近似DoG找到关键点<检测DOG尺度空间极值点>为了寻找尺度空间的极值点,每一个采样点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。
如图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。
一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点,如图所示。
同一组中的相邻尺度(由于k的取值关系,肯定是上下层)之间进行寻找s=3的情况在极值比较的过程中,每一组图像的首末两层是无法进行极值比较的,为了满足尺度变化的连续性(下面有详解),我们在每一组图像的顶层继续用高斯模糊生成了 3 幅图像,高斯金字塔有每组S+3层图像。
DOG金字塔每组有S+2层图像.==========================================这里有的童鞋不理解什么叫“为了满足尺度变化的连续性”,现在做仔细阐述:假设s=3,也就是每个塔里有3层,则k=21/s=21/3,那么按照上图可得Gauss Space和DoG space 分别有3个(s个)和2个(s-1个)分量,在DoG space中,1st-octave两项分别是σ,kσ; 2nd-octave两项分别是2σ,2kσ;由于无法比较极值,我们必须在高斯空间继续添加高斯模糊项,使得形成σ,kσ,k2σ,k3σ,k4σ这样就可以选择DoG space中的中间三项kσ,k2σ,k3σ(只有左右都有才能有极值),那么下一octave中(由上一层降采样获得)所得三项即为2kσ,2k2σ,2k3σ,其首项2kσ=24/3。
刚好与上一octave末项k3σ=23/3尺度变化连续起来,所以每次要在Gaussian space添加3项,每组(塔)共S+3层图像,相应的DoG 金字塔有S+2层图像。
==========================================使用Laplacian of Gaussian能够很好地找到找到图像中的兴趣点,但是需要大量的计算量,所以使用Difference of Gaussian图像的极大极小值近似寻找特征点.DOG算子计算简单,是尺度归一化的LoG算子的近似,有关DOG寻找特征点的介绍及方法详见/abcjennifer/article/details/7639488,极值点检测用的Non-Maximal Suppression。
3. 除去不好的特征点通过拟和三维二次函数以精确确定关键点的位置和尺度(达到亚像素精度),同时去除低对比度的关键点和不稳定的边缘响应点(因为DoG算子会产生较强的边缘响应),以增强匹配稳定性、提高抗噪声能力,在这里使用近似Harris Corner检测器。
①空间尺度函数泰勒展开式如下:,对上式求导,并令其为0,得到精确的位置, 得②在已经检测到的特征点中,要去掉低对比度的特征点和不稳定的边缘响应点。
去除低对比度的点:把公式(2)代入公式(1),即在DoG Space的极值点处D(x)取值,只取前两项可得:若,该特征点就保留下来,否则丢弃。
③边缘响应的去除一个定义不好的高斯差分算子的极值在横跨边缘的地方有较大的主曲率,而在垂直边缘的方向有较小的主曲率。
主曲率通过一个2×2 的Hessian矩阵H求出:导数由采样点相邻差估计得到。
D的主曲率和H的特征值成正比,令α为较大特征值,β为较小的特征值,则令α=γβ,则(r + 1)2/r的值在两个特征值相等的时候最小,随着r的增大而增大,因此,为了检测主曲率是否在某域值r下,只需检测2/r, throw it out. 在Lowe的文章中,取r=10。
if (α+β)/ αβ> (r+1)4. 给特征点赋值一个128维方向参数上一步中确定了每幅图中的特征点,为每个特征点计算一个方向,依照这个方向做进一步的计算,利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数,使算子具备旋转不变性。
为(x,y)处梯度的模值和方向公式。
其中L所用的尺度为每个关键点各自所在的尺度。
至此,图像的关键点已经检测完毕,每个关键点有三个信息:位置,所处尺度、方向,由此可以确定一个SIFT特征区域。
梯度直方图的范围是0~360度,其中每10度一个柱,总共36个柱。
随着距中心点越远的领域其对直方图的贡献也响应减小.Lowe论文中还提到要使用高斯函数对直方图进行平滑,减少突变的影响。
在实际计算时,我们在以关键点为中心的邻域窗口内采样,并用直方图统计邻域像素的梯度方向。
梯度直方图的范围是0~360度,其中每45度一个柱,总共8个柱, 或者每10度一个柱,总共36个柱。
Lowe论文中还提到要使用高斯函数对直方图进行平滑,减少突变的影响。
直方图的峰值则代表了该关键点处邻域梯度的主方向,即作为该关键点的方向。
直方图中的峰值就是主方向,其他的达到最大值80%的方向可作为辅助方向由梯度方向直方图确定主梯度方向该步中将建立所有scale中特征点的描述子(128维)Identify peak and assign orientation and sum of magnitude to key point.The user may choose a threshold to exclude key points based on their assigned sum of magnitudes.关键点描述子的生成步骤通过对关键点周围图像区域分块,计算块内梯度直方图,生成具有独特性的向量,这个向量是该区域图像信息的一种抽象,具有唯一性。
5. 关键点描述子的生成首先将坐标轴旋转为关键点的方向,以确保旋转不变性。
以关键点为中心取8×8的窗口。
Figure.16*16的图中其中1/4的特征点梯度方向及scale,右图为其加权到8个主方向后的效果。
图左部分的中央为当前关键点的位置,每个小格代表关键点邻域所在尺度空间的一个像素,利用公式求得每个像素的梯度幅值与梯度方向,箭头方向代表该像素的梯度方向,箭头长度代表梯度模值,然后用高斯窗口对其进行加权运算。
图中蓝色的圈代表高斯加权的范围(越靠近关键点的像素梯度方向信息贡献越大)。
然后在每4×4的小块上计算8个方向的梯度方向直方图,绘制每个梯度方向的累加值,即可形成一个种子点,如图右部分示。
此图中一个关键点由2×2共4个种子点组成,每个种子点有8个方向向量信息。
这种邻域方向性信息联合的思想增强了算法抗噪声的能力,同时对于含有定位误差的特征匹配也提供了较好的容错性。
计算keypoint周围的16*16的window中每一个像素的梯度,而且使用高斯下降函数降低远离中心的权重。
在每个4*4的1/16象限中,通过加权梯度值加到直方图8个方向区间中的一个,计算出一个梯度方向直方图。
这样就可以对每个feature形成一个4*4*8=128维的描述子,每一维都可以表示4*4个格子中一个的scale/orientation. 将这个向量归一化之后,就进一步去除了光照的影响。
5. 根据SIFT进行Match生成了A、B两幅图的描述子,(分别是k1*128维和k2*128维),就将两图中各个scale(所有scale)的描述子进行匹配,匹配上128维即可表示两个特征点match上了。
实际计算过程中,为了增强匹配的稳健性,Lowe建议对每个关键点使用4×4共16个种子点来描述,这样对于一个关键点就可以产生128个数据,即最终形成128维的SIFT特征向量。
此时SIFT特征向量已经去除了尺度变化、旋转等几何变形因素的影响,再继续将特征向量的长度归一化,则可以进一步去除光照变化的影响。
当两幅图像的SIFT特征向量生成后,下一步我们采用关键点特征向量的欧式距离来作为两幅图像中关键点的相似性判定度量。