SIFT算法实现原理步骤
sift特征点检测算法原理

sift特征点检测算法原理SIFT特征点检测算法原理SIFT(Scale-Invariant Feature Transform)是一种用于在图像中检测和描述局部特征的算法。
它的原理是通过在不同尺度空间中寻找关键点,并计算这些关键点的局部特征描述子,从而实现图像的特征匹配和识别。
1. 尺度空间构建SIFT算法首先通过高斯金字塔构建尺度空间,以便在不同尺度下检测出特征点。
高斯金字塔是通过对原始图像进行多次降采样得到的一系列图像,每个图像都是前一层图像的二分之一。
在每一层图像上应用高斯滤波器,得到一系列平滑图像。
2. 关键点检测在构建好的尺度空间中,SIFT算法使用Difference of Gaussian (DoG)来检测关键点。
DoG是通过对相邻两层平滑图像进行相减得到的,可以有效地检测出图像中的边缘和角点。
在DoG图像中,局部极值点被认为是潜在的关键点。
3. 关键点定位为了准确定位关键点的位置,SIFT算法采用了尺度空间极值点的精确定位方法。
它使用T aylor展开式对DoG图像进行拟合,通过求解极值点的二阶导数来精确定位关键点的位置。
同时,为了排除低对比度的关键点和边缘响应的干扰,SIFT算法会对关键点进行一定的筛选。
4. 方向分配为了使特征描述子具有旋转不变性,SIFT算法对每个关键点分配一个主方向。
它通过计算关键点周围像素的梯度方向直方图,找出主要梯度方向,并将其作为关键点的方向。
这样可以保证特征描述子在旋转变换下具有一定的稳定性。
5. 特征描述在关键点的周围区域内构建特征描述子,用于表示关键点的局部特征。
SIFT算法将关键点周围的图像区域划分为若干个子区域,并在每个子区域内计算梯度方向直方图。
最后将这些直方图连接起来,得到一个具有128维特征向量的特征描述子。
通过以上步骤,SIFT算法可以在图像中检测出大量的关键点,并为每个关键点生成一个128维的特征描述子。
这些特征描述子具有尺度不变性、旋转不变性和光照不变性等特点,可以用于图像匹配、物体识别和三维重建等应用领域。
sift算法原理(备份)

15
令 γ 为最大特征值与最小特征值的比值,则
α = γβ
tr ( H ) 2 (α + β ) 2 (γβ + β ) 2 (γ + 1) 2 = = = 2 Det ( H ) αβ γ γβ
为了检测主曲率是否在某阈值 γ 下,只需检测
tr ( H ) 2 (γ + 1) 2 < γ Det ( H )
L ( x, y , σ ) = G ( x, y , σ ) * I ( x, y )
m( x, y ) = ( L( x + 1, y ) − L( x − 1, y )) 2 + ( L( x, y + 1) − L( x, y − 1)) 2
θ ( x, y ) = arctan
L( x + 1, y ) − L( x − 1, y ) L( x, y + 1) − L( x, y − 1)
9
•将每一组尺度空 间中的相邻高斯 尺度函数相减, 生成高斯差分金 字塔。
10
a是第二组的第一层图像由第一组的的最后第二层图像隔点采样得到。b 是通过相邻高斯尺度空间图像想减得到。
a
b
11
▲3. DOG空间的极值检测:
极值点的搜索是通过同一组内 DOG相邻层之间比较完成的. 为了寻找尺度空间的极值点,每 一个采样点都要和它所有的相邻 点比较,以确保在尺度空间和二 维图像空间都检测到极值点。
γ
16
没有进行任何处理的关键点
17
去除了低对比度之后的点
18
去除边界效应强的特征点
19
Ⅲ. 确定关键点的主方向
为了实现图像的实现旋转不变性,需要根据检测到的特征点局部图 像结构求得一个方向基准。用图像梯度的方法求取该局部结构的稳 定方向。对于已检测到的特征点,我们已经知道该特征点的尺度 值 σ ,因此根据这一尺度值,得到接近这一尺度值的高斯图像。
sift算法的原理和步骤

sift算法的原理和步骤SIFT算法的原理和步骤SIFT算法是一种用于图像特征提取的算法,它能够从图像中提取出具有独特性、稳定性和可重复性的关键点,用于图像匹配、目标跟踪等任务。
本文将介绍SIFT算法的原理和步骤。
一、原理1. 尺度空间尺度空间是指同一物体在不同尺度下的表现形式。
SIFT算法采用高斯金字塔来实现尺度空间的构建,即将原始图像不断缩小并平滑处理,得到一系列模糊程度不同的图像。
2. 关键点检测在尺度空间中,SIFT算法采用DoG(Difference of Gaussian)来检测关键点。
DoG是指两个不同尺寸的高斯滤波器之间的差值,可以有效地提取出具有高斯拉普拉斯变换极值点(LoG)特征的区域。
3. 方向确定对于每个关键点,在其周围区域内计算梯度幅值和方向,并统计梯度直方图。
最终确定该关键点最显著的梯度方向作为其主方向。
4. 描述子生成以关键点为中心,生成一个16x16的方形区域,并将其分为4x4的小块。
对于每个小块,计算其内部像素的梯度方向直方图,并将其串联成一个128维的向量,作为该关键点的描述子。
5. 匹配通过计算不同图像之间的关键点描述子之间的距离来进行匹配。
采用最近邻法(Nearest Neighbor)和次近邻法(Second Nearest Neighbor)来进行筛选,从而得到最终的匹配结果。
二、步骤1. 构建高斯金字塔对于原始图像,采用高斯滤波器进行平滑处理,并将其缩小一定比例后再次平滑处理,得到一系列不同尺度下的图像。
这些图像构成了高斯金字塔。
2. 构建DoG金字塔在高斯金字塔中,相邻两层之间做差得到一组DoG金字塔。
通过在DoG金字塔上寻找局部极值点来检测关键点。
3. 确定关键点主方向对于每个关键点,在其周围区域内计算梯度幅值和方向,并统计梯度直方图。
最终确定该关键点最显著的梯度方向作为其主方向。
4. 生成描述子以关键点为中心,生成一个16x16的方形区域,并将其分为4x4的小块。
SIFT算法原理:SIFT算法详细介绍

前面们介绍了Harris和Shi-Tomasi角检测算法,这两种算法具有旋转不变性,但不具有尺度不变性,以下图为例,在左侧小图中可以检测到角,但图像被放后,在使用同样的窗口,就检测不到角了。
所以,们来介绍一种计算机视觉的算法,尺度不变特征转换即SIFT(Scale-invariantfeaturetransform)。
它用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值,并提取出其位置、尺度、旋转不变量,此算法由DavidLowe在1999年所发表,2004年完善总结。
应用范围包含物体辨识、机器人地图感知与导航、影像缝合、3D模型建立、手势辨识、影像追踪和动作比对等领域。
SIFT算法的实质在不同的尺度空间上查找关键(特征),并计算出关键的方向。
SIFT 所查找到的关键一些十分突出,不会因光照,仿变换和噪音等因素而变化的,如角、边缘、暗区的亮及亮区的暗等。
1.1基本流程Lowe将SIFT算法分解为如下四步:尺度空间极值检测:搜索所有尺度上的图像位置。
通过高斯差分函数来识别潜在的对于尺度和旋转不变的关键。
关键定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。
关键的选择依据于它们的稳定程度。
关键方向确定:基于图像局部的梯度方向,分配给每个关键位置一个或多个方向。
所有后面的对图像数据的操作都相对于关键的方向、尺度和位置进行变换,从而保证了对于这些变换的不变性。
关键描述:在每个关键周围的邻域内,在选定的尺度上测量图像局部的梯度。
这些梯度作为关键的描述符,它允许比较的局部形状的变形或光照变化。
们就沿着Lowe的步骤,对SIFT算法的实现过程进行介绍:1.2尺度空间极值检测在不同的尺度空间不能使用相同的窗口检测极值,对小的关键使用小的窗口,对的关键使用的窗口,为了达到上述目的,们使用尺度空间滤波器。
高斯核可以产生多尺度空间的核函数。
-《Scale-spacetheory:Abasictoolforanalysingstructuresatdifferentscales》。
尺度不变特征变换算法

尺度不变特征变换算法一、前言尺度不变特征变换算法(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算法对于光照、视角、噪声等因素有较好的鲁棒性。
SIFT算法原理

SIFT算法原理SIFT(Scale-Invariant Feature Transform)算法是一种用于检测和描述图像中的局部特征的算法,它具有尺度不变性和旋转不变性的特点。
SIFT算法由David G. Lowe在1999年提出,被广泛应用于计算机视觉领域的图像匹配、目标识别等任务。
1.尺度空间的构建:SIFT算法首先构建图像的尺度空间,通过对原始图像进行高斯模糊操作得到一组图像。
具体操作是利用高斯核对图像进行卷积,每次卷积后将图像尺寸缩小一半,得到不同尺度的图像。
这样可以在不同尺度上寻找到特征点,使算法具有尺度不变性。
2.关键点的检测:在不同尺度的图像中,SIFT算法通过在每个像素点周围进行高斯差分操作,来寻找潜在的关键点。
具体操作是计算每个像素点的高斯差分空间,找到极大值和极小值点。
这些极值点成为候选关键点。
3.关键点的定位:在候选关键点的基础上,SIFT算法通过对梯度方向和梯度幅值进行计算,进一步筛选出具有稳定性的关键点。
具体操作是在关键点周围的邻域内,计算图像的梯度方向和梯度幅值,并将邻域划分为8个方向的子区域,求出每个子区域内的梯度方向直方图。
通过梯度方向直方图的峰值来确定关键点的主要方向。
4.关键点的描述:SIFT算法通过关键点的主方向,对其周围的图像区域进行描述。
具体操作是在关键点周围的邻域内,将邻域划分为多个子区域,并计算每个子区域内的梯度方向和梯度幅值。
这样可以得到一个向量组成的特征向量,用来描述关键点周围的图像区域。
为了保持对尺度和旋转的不变性,SIFT算法对特征向量进行归一化和抗干扰处理。
5.特征点的匹配:在进行目标识别等任务时,SIFT算法需要对图像中的特征点进行匹配。
为了提高匹配的准确性,在进行特征点匹配时,SIFT算法采用了一种特殊的匹配方法,基于最近邻和次近邻的比值。
对于每个特征点,找到其在另一幅图像中的最近邻点和次近邻点,通过计算这两个点之间的距离比值,进行匹配判断。
sift算法计算旋转参数

sift算法计算旋转参数SIFT算法是一种常用的图像特征提取算法,它可以用于计算图像的旋转参数。
本文将介绍SIFT算法的原理和计算旋转参数的步骤。
一、SIFT算法原理SIFT(Scale Invariant Feature Transform)算法是由David Lowe于1999年提出的一种图像处理算法,它主要用于图像特征提取和匹配。
SIFT算法通过寻找图像中的关键点,并提取关键点周围的特征描述子,从而实现对图像的特征提取和匹配。
SIFT算法的主要步骤包括:尺度空间极值检测、关键点定位、方向分配、特征描述和特征匹配。
其中,关键点定位和方向分配是计算旋转参数的关键步骤。
二、计算旋转参数的步骤1. 尺度空间极值检测SIFT算法首先对输入图像进行尺度空间的构建,通过高斯金字塔和DOG(Difference of Gaussian)计算得到图像的尺度空间。
然后,在每组DOG图像中寻找极值点,用于标记潜在的关键点。
2. 关键点定位在寻找极值点的基础上,SIFT算法采用了稳定的关键点定位方法,通过比较极值点与周围像素的梯度和曲率信息,筛选出稳定的关键点。
这些关键点具有尺度和旋转不变性,可以在不同尺度和旋转角度的图像中进行匹配。
3. 方向分配为了使关键点具有旋转不变性,SIFT算法为每个关键点分配一个主方向。
具体做法是在关键点周围的区域中计算梯度直方图,找到梯度最大的方向作为主方向。
这样,即使图像发生旋转,关键点的描述子仍然可以进行匹配。
4. 特征描述在确定了关键点的尺度和旋转参数后,SIFT算法采用了局部图像块的特征描述方法。
它将关键点周围的图像区域分成若干个子区域,并计算每个子区域的梯度直方图。
然后,将这些直方图组合成一个特征向量,形成关键点的描述子。
5. 特征匹配SIFT算法使用特征向量进行特征匹配。
常用的方法是计算两个图像之间的欧氏距离,找到距离最小的匹配对。
通过特征匹配,可以实现对图像的旋转参数的计算。
SIFT特征提取算法

SIFT特征提取算法SIFT(Scale-Invariant Feature Transform)特征提取算法是一种用于图像的局部特征分析的算法。
它能够提取出图像中的关键点,并对这些关键点进行描述,从而可以用于图像匹配、物体识别等应用领域。
本文将详细介绍SIFT算法的原理和过程。
1.尺度空间构建SIFT算法首先通过使用高斯滤波器来构建图像的尺度空间,以便在不同尺度下检测关键点。
高斯滤波器可以通过一系列的高斯卷积操作实现,每次卷积之后对图像进行下采样(降低分辨率),得到不同尺度的图像。
2.关键点检测在尺度空间构建完成后,SIFT算法使用差分运算来检测关键点。
差分运算可以通过对图像进行高斯平滑操作来实现,然后计算相邻尺度之间的差分图像。
对差分图像进行极值检测,即寻找局部最大和最小值的像素点,这些像素点就是图像中的关键点。
3.关键点精确定位关键点的精确定位是通过拟合关键点周围的局部图像来实现的。
SIFT算法使用了一种高度鲁棒的方法,即利用关键点周围梯度的方向和大小来进行拟合。
具体来说,SIFT算法在关键点周围计算图像的梯度幅值和方向,并构建梯度直方图。
然后通过在梯度直方图中寻找局部极值来确定关键点的方向。
4.关键点描述关键点的描述是为了提取关键点周围的特征向量,用于后续的匹配和识别。
SIFT算法使用了一种局部特征描述算法,即将关键点周围的图像区域划分为小的子区域,并计算每个子区域的梯度方向直方图。
然后将这些直方图组合起来,构成一个维度较高的特征向量。
5.特征向量匹配在完成关键点描述之后,SIFT算法使用一种近似的最近邻方法来进行特征向量的匹配。
具体来说,使用KD树或者暴力匹配的方法来寻找两幅图像中最相似的特征向量。
通过计算特征向量之间的距离,可以找到最相似的匹配对。
6.尺度不变性SIFT算法具有尺度不变性的特点,即对于图像的缩放、旋转和视角变化等变换具有较好的鲁棒性。
这是因为在特征提取的过程中,SIFT算法对图像进行了多尺度的分析,并利用了关键点周围的梯度信息进行描述。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SIFT 算法实现步骤 :1 关键点检测、2 关键点描述、3 关键点匹配、4 消除错配点1关键点检测1.1 建立尺度空间根据文献《Scale-space theory: A basic tool for analysing structures at different scales 》我们可知,高斯核是唯一可以产生多尺度空间的核,一个图像的尺度空间,L (x,y,σ) ,定义为原始图像I(x,y)与一个可变尺度的2维高斯函数G(x,y,σ) 卷积运算。
高斯函数高斯金字塔高斯金子塔的构建过程可分为两步:(1)对图像做高斯平滑;(2)对图像做降采样。
为了让尺度体现其连续性,在简单 下采样的基础上加上了高斯滤波。
一幅图像可以产生几组(octave ) 图像,一组图像包括几层 (interval )图像。
高斯图像金字塔共o 组、s 层, 则有:σ——尺度空间坐标;s ——sub-level 层坐标;σ0——初始尺度;S ——每组层数(一般为3~5)。
当图像通过相机拍摄时,相机的镜头已经对图像进行了一次初始的模糊,所以根据高斯模糊的性质:-第0层尺度--被相机镜头模糊后的尺度高斯金字塔的组数: M 、N 分别为图像的行数和列数高斯金字塔的组内尺度与组间尺度:组内尺度是指同一组(octave )内的尺度关系,组内相邻层尺度化简为:组间尺度是指不同组直接的尺度关系,相邻组的尺度可化为:最后可将组内和组间尺度归为:()22221()(),,exp 22i i i i x x y y G x y σπσσ⎛⎫-+-=- ⎪⎝⎭()()(),,,,*,L x y G x y I x y σσ=Octave 1Octave 2Octave 3Octave 4Octave 5σ2σ4σ8σ0()2s S s σσ=g 0σ=init σpre σ()()2log min ,3O M N ⎡⎤=-⎣⎦112Ss s σσ+=g 1()2s SS o o s σσ++=g 222s S sSS o o σσ+=g g 1212(,,,)i n k k k σσσσ--L 12S k =i —金字塔组数 n —每组层数上一组图像的底层是由前一组图像的倒数第二层图像隔点采样生成的。
这样可以保持 尺度的连续性。
差分高斯金字塔Lindeberg 在文献《Scale-space theory: A basic tool for analysing structures at different scales 》指出尺度规范化的LoG 算子具有真正的尺度不变性。
LoG 算子即(Laplacion of Gaussian ),可以由高斯函数梯度算子GOG 构建 尺度规范化的GoG 算子:尺度规范化的LoG 算子: LOG 算子与高斯核函数的关系通过推导可以看出,LOG 算子与高斯核函数的差有直接关系,由此引入一种新的算子DOG (Difference of Gaussians ),即高斯差分算子。
DoG (Difference of Gaussian )函数:DoG 在计算上只需相邻尺度高斯平滑后图像相减,因此简化了计算。
对应DOG 算子,我们要构建DOG 金字塔22222G G G x y ∂∂∇=+∂∂22G σ∇222(,,)(,,)(,,)(1)Gauss x y k Gauss x y LOG x y G k σσσσσ-=∇≈-()()()22,,,,1G x y k G x y k G σσσ-≈-∇()()(),,,,*,L x y G x y I x y σσ=()()()()()(),,,,,,*,,,,,D x y G x y k G x y I x y L x y k L x y σσσσσ=-⎡⎤⎣⎦=-我们可以通过高斯差分图像看出图像上的像素值变化情况。
(如果没有变化,也就没有特征。
特征必须是变化尽可能多的点。
)DOG 图像描绘的是目标的轮廓。
在Lowe 的论文中,将第0层的初始尺度定为1.6,图片的初始尺度定为0.5,则图像金字塔第0层的实际尺度为1.2 DoG 的局部极值点检测关键点是由DOG 空间的局部极值点组成的。
为了寻找DoG 函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。
中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。
在极值比较的过程中,每一组图像的首末两层是无法进行极值比较的,为了满足尺度变化的连续性,我们在每一组图像的顶层继续用高斯模糊生成了3幅图像,高斯金字塔有每组S+3层图像。
DOG 金字塔每组有S+2层图像。
1.3 关键点精确定位由于DoG 值对噪声和边缘较敏感,因此,在上面DoG 尺度空间中检测到局部极值点还要经过进一步的检验才能精确定位为特征点。
去除低对比度的极值点为了提高关键点的稳定性,需要对尺度空间DoG 函数进行曲线拟合。
利用DoG 函数在1.6 1.60.50.5 1.52⨯-⨯=尺度空间的Taylor 展开式:其极值点: 在计算过程中,分别对图像的行、列及尺度三个量进行了修正,其修正结果如下:求解得 为修正值。
将修正后的结果代入式上式去除那些对比度较低的不稳定极值点。
Lowe 的试验显示,所有取值小于0.04的极值点均可抛弃(像素灰度值范围[0,1])。
去除边缘响应仅仅去除低对比度的极值点对于极值点的对于特征点稳定性是远远不够的。
DoG 函数在图像边缘有较强的边缘响应,因此我们还需要排除边缘响应DoG 函数的(欠佳的)峰值点在横跨边缘的方向有较大的主曲率,而在垂直边缘的方向有较小的主曲率。
主曲率可以通过计算在该点位置尺度的2×2的Hessian 矩阵得到,导数由采样点相邻差来估计:表示DOG 金字塔中某一尺度的图像x 方向求导两次。
D 的主曲率和H 的特征值成正比,为了避免直接的计算这些特征值,而只是考虑它们的之间的比率。
令 为最大特征值,为最小的特征值,则在两特征值相等时达最小,随r 的增长而增长。
Lowe 论文中建议r 取10。
时将关键点保留,反之剔除。
()2212TT D DD X D X X X X X ∂∂=++∂∂()ˆ,,TX x y σ=()2212TT D DD X D X X X X X ∂∂=++∂∂212()T D D X X X ∧-∂∂=-∂∂X ∧()2212TT D DD X D X X X X X ∂∂=++∂∂12T D D X D X X ∧∂⎛⎫=+ ⎪∂⎝⎭xx xy xy yy D D H D D ⎡⎤=⎢⎥⎣⎦xx D αβr αβ=()xx yy Tr H D D =+()xx yy xy xyDet H D D D D =⨯-⨯()()()()2221Tr H r Det H r αβαβ++==()21r r +()()()221Tr H r Det H r +<2 关键点描述2.1 关键点方向分配通过尺度不变性求极值点,可以使其具有缩放不变的性质,利用关键点邻域像素的梯度方向分布特性,我们可以为每个关键点指定方向参数方向,从而使描述子对图像旋转具有不变性。
通过求每个极值点的梯度来为极值点赋予方向。
像素点的梯度表示梯度幅值:梯度方向:方向直方图的生成确定关键点的方向采用梯度直方图统计法,统计以关键点为原点,一定区域内的图像像素点对关键点方向生成所作的贡献。
直方图以每10度方向为一个柱,共36个柱,柱所代表的方向为像素点梯度方向,柱的长短代表了梯度幅值。
根据Lowe 的建议,直方图统计半径采用3*1.5*σ在直方图统计时,每相邻三个像素点采用高斯加权,根据Lowe 的建议,模板采用[0.25,0.5,0.25],并连续加权两次。
关键点的主方向与辅方向关键点主方向:极值点周围区域梯度直方图的主峰值,也是特征点方向关键点辅方向:在梯度方向直方图中,当存在另一个相当于主峰值80%能量的峰值时,则将这个方向认为是该关键点的辅方向。
这可以增强匹配的鲁棒性,Lowe 的论文指出大概有15%关键点具有多方向,但这些点对匹配的稳定性至为关键。
方向分配实现步骤1. 确定计算关键点直方图的高斯函数权重函数参数 ;2. 生成含有36柱的方向直方图,梯度直方图范围0~360度,其中每10度一个柱。
由半径为图像区域生成;3. 对方向直方图进行两次平滑;4. 求取关键点方向(可能是多个方向);(),,I I gradI x y x y ⎛⎫∂∂= ⎪∂∂⎝⎭()()()()()()()22,1,1,,1,1m x y L x y L x y L x y L x y =+--++--()()()()()1,1,1,tan 1,1,L x y L x y x y L x y L x y θ-⎡⎤+--=⎢⎥+--⎣⎦5.对方向直方图的Taylor展开式进行二次曲线拟合,精确关键点方向;图像的关键点已检测完毕,每个关键点有三个信息:位置、尺度、方向;同时也就使关键点具备平移、缩放、和旋转不变性。
2.2 生成特征描述符描述的目的是在关键点计算后,用一组向量将这个关键点描述出来,这个描述子不但包括关键点,也包括关键点周围对其有贡献的像素点。
用来作为目标匹配的依据,也可使关键点具有更多的不变特性,如光照变化、3D视点变化等。
通过对关键点周围图像区域分块,计算块内梯度直方图,生成具有独特性的向量,这个向量是该区域图像信息的一种抽象,具有唯一性。
下图是一个SIFT描述子事例。
其中描述子由2×2×8维向量表征,也即是2×2个8方向的方向直方图组成。
左图的种子点由8×8单元组成。
每一个小格都代表了特征点邻域所在的尺度空间的一个像素,箭头方向代表了像素梯度方向,箭头长度代表该像素的幅值。
然后在4×4的窗口内计算8个方向的梯度方向直方图。
绘制每个梯度方向的累加可形成一个种子点,如右图所示:一个特征点由4个种子点的信息所组成。
关键点周围区域图像梯度关键点描述子Lowe 实验结果表明:描述子采用4×4×8=128维向量表征,综合效果最优(不变性与独特性)。
128维关键点描述子(就是特征描述符)生成步骤1. 确定计算描述子所需的图像区域描述子梯度方向直方图由关键点所在尺度的模糊图像计算产生。
图像区域的半径通过下式计算:是关键点所在组(octave )的组内尺度,2. 将坐标移至关键点主方向那么旋转角度后新坐标为:3.在图像半径区域内对每个像素点求其梯度幅值和方向,然后对每个梯 度幅值乘以高斯权重参数,生成方向直方图。