特征提取算法--Sift

9 篇文章 1 订阅

SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,它在空间尺度中对一副图寻找极值点,并提取出其位置、尺度、旋转不变量等描述子得到特征并进行图像特征点匹配,用来侦测与描述影像中的局部性特征。
它是基于物体上的一些局部特征SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;使用 SIFT特征描述对于部分物体遮蔽的侦测率也相当高,甚至只需要3个以上的SIFT物体特征就足以计算出位置与方位。

参考网址http://blog.csdn.net/akunainiannian/article/details/44104763
参考网址http://www.cnblogs.com/linyunzju/archive/2011/06/14/2080951.html
参考网址http://www.cnblogs.com/cfantaisie/archive/2011/06/14/2080917.html
参考网址http://blog.csdn.net/abcjennifer/article/details/7639681

目标的自身状态、场景所处的环境和成像器材的成像特性等因素影响图像配准/目标识别跟踪的性能。sift可以解决这些问题:
1. 目标的旋转、缩放、平移(RST)
2. 图像仿射/投影变换(视点viewpoint)
3. 光照影响(illumination)
4. 目标遮挡(occlusion)
5. 杂物场景(clutter)
6. 噪声
SIFT在图像的不变特征提取方面拥有无与伦比的优势,但并不完美,仍然存在:
1. 实时性不高。
2. 有时特征点较少。
3. 对边缘光滑的目标无法准确提取特征点。
等缺点,如下图7.1所示,对模糊的图像和边缘平滑的图像,检测出的特征点过少,对圆更是无能为力。近来不断有人改进,其中最著名的有SURF和CSIFT。
这里写图片描述
1).
SIFT算法的实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出,不会因光照,仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。
Lowe将SIFT算法分解为如下几步:
1. 输入图像,建议做double(width*=2, height*=2, size*=4), 并高斯过滤进行平滑。
2. 由图片size决定建几个塔,每塔几层图像(一般3-5层)。0塔的第0层是原始图像(或你double后的图像),往上每一层是对其下一层进行Laplacian变换(高斯卷积,其中sigma值渐大,例如可以是sigma, k*sigma, k*k*sigma…),直观上看来越往上图片越模糊。塔间的图片是降采样关系,例如1塔的第0层可以由0塔的第3层down sample得到,然后进行与0塔类似的高斯卷积操作。
3. 构建DoG金字塔。DoG金字塔由上一步生成的Gauss金字塔计算得到,塔数相同,每塔层数少1,因为DoG的每一层由Gauss的相邻两层相减得到。
4. 在DoG塔里进行极值点检测,并根据用户预设的对比度阈值、主曲率阈值去除不合法特征点。极值点检测用的Non-Maximal Suppression,即在3*3*3个点中进行灰度值比较,最小或最大才过关。
5. 计算每个特征点的尺度。注意塔间尺度关系,sigma*2.0^(octvs+intvl/intvls)
6. 计算每个特征点的梯度模值和方向。用特征点周围一个矩阵区域(patch)内的点来描述该特征点,用的直方图进行模值统计并寻找主方向,主方向可以不止一个。
7. 最后要生成64D或128D的特征描述符了。对齐主方向,计算方向直方图2D数组,假如每个直方图有8bin,那么64D(2*2*8bin)或128D(4*4*8bin)。

2).构建尺度空间
SIFT算法是在不同的尺度空间上查找关键点,而尺度空间的获取需要使用高斯模糊来实现,高斯卷积核是实现尺度变换的唯一变换核,并且是唯一的线性核。
高斯模糊是一种图像滤波器,它使用正态分布(高斯函数)计算模糊模板,并使用该模板与原图像做卷积运算,达到模糊图像的目的。
N维空间正态分布方程为:这里写图片描述
其中,是正态分布的标准差,值越大,图像越模糊(平滑)。r为模糊半径,模糊半径是指模板元素到模板中心的距离。如二维模板大小为m*n,则模板上的元素(x,y)对应的高斯计算公式为:
这里写图片描述
理论上来讲,图像中每点的分布都不为零,这也就是说每个像素的计算都需要包含整幅图像。在实际应用中,在计算高斯函数的离散近似时,在大概3σ距离之外的像素都可以看作不起作用,这些像素的计算也就可以忽略。通常,图像处理程序只需要计算(6σ+1)x(6σ+1)的矩阵就可以保证相关像素影响。
根据σ的值,计算出高斯模板矩阵的大小(6σ+1)x(6σ+1),计算高斯模板矩阵的值,与原图像做卷积,即可获得原图像的平滑(高斯模糊)图像。为了确保模板矩阵中的元素在[0,1]之间,需将模板矩阵归一化。高斯模板是中心对称的。
这里写图片描述
使用二维的高斯模板达到了模糊图像的目的,但是会因模板矩阵的关系而造成边缘图像缺失(2.3 b,c),越大,缺失像素越多,丢弃模板会造成黑边(2.3 d)。更重要的是当变大时,高斯模板(高斯核)和卷积运算量将大幅度提高。根据高斯函数的可分离性,可对二维高斯模糊函数进行改进。
高斯函数的可分离性是指使用二维矩阵变换得到的效果也可以通过在水平方向进行一维高斯矩阵变换加上竖直方向的一维高斯矩阵变换得到。从计算的角度来看,这是一项有用的特性,因为这样只需要(nxMxN)+(mxMxN)次计算,而二维不可分的矩阵则需要(nxmxMxN)次计算,其中,m,n为高斯矩阵的维数,M,N为二维图像的维数。
两次一维的高斯卷积将消除二维高斯矩阵所产生的边缘, 对用模板矩阵超出边界的部将不做卷积计算,只在图像之内的部分做卷积。
这里写图片描述

尺度空间
尺度空间使用高斯金字塔表示。Tony Lindeberg指出尺度规范化的LoG(Laplacion of Gaussian)算子具有真正的尺度不变性,Lowe使用高斯差分金字塔近似LoG算子,在尺度空间检测稳定的关键点。
尺度空间理论的基本思想是:在图像信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取等。
尺度空间方法将传统的单尺度图像信息处理技术纳入尺度不断变化的动态分析框架中,更容易获取图像的本质特征。尺度空间中各尺度图像的模糊程度逐渐变大,能够模拟人在距离目标由近到远时目标在视网膜上的形成过程。
尺度空间满足视觉不变性。该不变性的视觉解释如下:当我们用眼睛观察物体时,一方面当物体所处背景的光照条件变化时,视网膜感知图像的亮度水平和对比度是不同的,因此要求尺度空间算子对图像的分析不受图像的灰度水平和对比度变化的影响,即满足灰度不变性和对比度不变性。另一方面,相对于某一固定坐标系,当观察者和物体之间的相对位置变化时,视网膜所感知的图像的位置、大小、角度和形状是不同的,因此要求尺度空间算子对图像的分析和图像的位置、大小、角度以及仿射变换无关,即满足平移不变性、尺度不变性、欧几里德不变性以及仿射不变性。
一个图像的尺度空间,定义为一个变化尺度的高斯函数与原图像的卷积。
这里是卷积运算
这里是卷积运算,(x, y)代表图像的像素位置。σ是尺度空间因子,值越小表示图像被平滑的越少,相应的尺度也就越小。大尺度对应于图像的概貌特征,小尺度对应于图像的细节特征。

高斯金字塔的构建
尺度空间在实现时使用高斯金字塔表示,高斯金字塔的构建分为两部分:
1. 对图像做不同尺度的高斯模糊;
2. 对图像做降采样(隔点采样)。
这里写图片描述

图像的金字塔模型是指,将原始图像不断降阶采样,得到一系列大小不一的图像,由大到小,从下到上构成的塔状模型。原图像为金子塔的第一层,每次降采样所得到的新图像为金字塔的一层(每层一张图像),每个金字塔共n层。金字塔的层数根据图像的原始大小和塔顶图像的大小共同决定,其计算公式如下:
这里写图片描述
其中M,N为原图像的大小,t为塔顶图像的最小维数的对数值。如,对于大小为512*512的图像,金字塔上各层图像的大小如表3.1所示,当塔顶图像为4*4时,n=7,当塔顶图像为2*2时,n=8。
这里写图片描述
为了让尺度体现其连续性,高斯金字塔在简单降采样的基础上加上了高斯滤波。将图像金字塔每层的一张图像使用不同参数做高斯模糊,使得金字塔的每层含有多张高斯模糊图像,将金字塔每层多张图像合称为一组(Octave),金字塔每层只有一组图像,组数和金字塔层数相等,每组含有多张(也叫层Interval)图像。另外,降采样时,高斯金字塔上一组图像的初始图像(底层图像)是由前一组图像的倒数第三张图像隔点采样得到的。
为了在每组中检测S个尺度的极值点,则DOG金字塔每组需S+2层图像,而DOG金字塔由高斯金字塔相邻两层相减得到,则高斯金字塔每组需S+3层图像,实际计算时S在3到5之间。

高斯差分金字塔
高斯差分函数的极大值和极小值同其它的特征提取函数,例如:梯度,Hessian或Harris角特征比较,能够产生最稳定的图像特征。使用更高效的高斯差分算子进行极值检测。为了有效的在尺度空间检测到稳定的关键点,提出了高斯差分尺度空间(DOG scale-space)。利用不同尺度的高斯差分核与图像卷积生成。
这里写图片描述
在实际计算时,使用高斯金字塔每组中相邻上下两层图像相减,得到高斯差分图像,进行极值检测。
这里写图片描述
这里写图片描述
尺度空间的所有取值,i为octave的塔数(第几个塔),s为每塔层数

构建尺度空间需确定的参数
σ—尺度空间坐标
O—组(octave)数
S— 组内层数
在上述尺度空间中,O和S, σ的关系如下:
这里写图片描述
其中σ0是基准层尺度,o为组octave的索引,s为组内层的索引。关键点的尺度坐标σ就是按关键点所在的组和组内的层计算得到。
将第0层的初始尺度定为1.6(最模糊),图片的初始尺度定为0.5(最清晰)。在检测极值点前对原始图像的高斯平滑以致图像丢失高频信息,所以 Lowe 建议在建立尺度空间前首先对原始图像长宽扩展一倍来生成第-1组,以保留原始图像信息,增加特征点数量。尺度越大图像越模糊。 我们假定初始的输入图像为了抗击混淆现象,已经对其进行σ-1=0.5的高斯模糊,如果输入图像的尺寸用双线性插值扩大一倍,那么相当于σ-1=1。

k为组内总层数的倒数,即这里写图片描述
在构建高斯金字塔时,组内每层的尺度坐标按如下公式计算:
这里写图片描述
其中σ0初始尺度,lowe取σ0=1.6 ,S=3; s为组内的层索引,不同组相同层的组内尺度坐标σ(s)相同,组内下一层图像是由前一层图像按σ(s)进行高斯模糊所得。
上式用于一次生成组内不同尺度的高斯图像,而在计算组内某一层图像的尺度时,直接使用如下公式进行计算:
这里写图片描述
该组内尺度在方向分配和特征描述时确定采样窗口的大小,就是确定那个高斯函数的σ值。
则构成高斯差分金字塔的公式:
这里写图片描述
对于一幅图像I,建立其在不同尺度(scale)的图像,也称为组(octave),这是为了scale-invariant,也就是在任何尺度都能够有对应的特征点,第一个组的scale为原图大小,后面每个octave为上一个octave降采样的结果,即原图的1/4(长宽分别减半),构成下一个组(高一组金字塔)。

3). LoG近似DoG找到关键点<检测DOG尺度空间极值点>
为了寻找尺度空间的极值点,每一个采样点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。 一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点,如图所示。
这里写图片描述
同一组中的相邻尺度(由于k的取值关系,肯定是上下层)之间进行寻找
这里写图片描述
为了在每组中检测S个尺度的极值点满足尺度变化的连续性,则DOG金字塔每组需S+2层图像,而DOG金字塔由高斯金字塔相邻两层相减得到,则高斯金字塔每组需S+3层图像,实际计算时S在3到5之间。当然这样产生的极值点并不全都是稳定的特征点,因为某些极值点响应较弱,而且DOG算子会产生较强的边缘响应。
这里写图片描述
使用Difference of Gaussian图像的极大极小值近似寻找特征点.DOG算子计算简单,是尺度归一化的LoG算子的近似,有关DOG寻找特征点的介绍及方法详见http://blog.csdn.net/abcjennifer/article/details/7639488,极值点检测用的Non-Maximal Suppression。

除去不好的特征点
这一步本质上要去掉DoG局部曲率非常不对称的像素。以上方法检测到的极值点是离散空间的极值点,通过拟和三维二次函数以精确确定关键点的位置和尺度(达到亚像素精度),同时去除低对比度的关键点和不稳定的边缘响应点(因为DoG算子会产生较强的边缘响应),以增强匹配稳定性、提高抗噪声能力,在这里使用近似Harris Corner检测器。
离散空间的极值点并不是真正的极值点,图4.1显示了二维函数离散空间得到的极值点与连续空间极值点的差别。利用已知的离散空间点插值得到的连续空间极值点的方法叫做子像素插值(Sub-pixel Interpolation)。
这里写图片描述
为了提高关键点的稳定性,需要对尺度空间DoG函数进行曲线拟合。利用DoG函数在尺度空间的Taylor展开式(拟合函数)为:
这里写图片描述
其中这里写图片描述,。求导并让方程等于零,可以得到极值点的偏移量为:
这里写图片描述
在已经检测到的特征点中,要去掉低对比度的特征点和不稳定的边缘响应点。去除低对比度的点:把公式(2)代入公式(1),即在DoG Space的极值点处D(x)取值,只取前两项可得:
这里写图片描述
其中这里写图片描述,代表相对插值中心的偏移量,当它在任一维度上的偏移量大于0.5时(即x或y或),意味着插值中心已经偏移到它的邻近点上,所以必须改变当前关键点的位置。同时在新的位置上反复插值直到收敛;也有可能超出所设定的迭代次数或者超出图像边界的范围,此时这样的点应该删除,在Lowe中进行了5次迭代。另外,这里写图片描述过小的点易受噪声的干扰而变得不稳定,所以将小于某个经验值(Lowe论文中使用0.03,Rob Hess等人实现时使用0.04/S)的极值点删除。同时,在此过程中获取特征点的精确位置(原位置加上拟合的偏移量)以及尺度(这里写图片描述)。

边缘响应的去除
一个定义不好的高斯差分算子的极值在横跨边缘的地方有较大的主曲率,而在垂直边缘的方向有较小的主曲率。主曲率通过一个2×2 的Hessian矩阵H求出:
这里写图片描述
D的主曲率和H的特征值成正比,H的特征值α和β代表x和y方向的梯度,令α为较大特征值,β为较小的特征值,则
这里写图片描述
第一个公式表示矩阵H对角线元素之和,第二个表示矩阵H的行列式。
这里写图片描述
这里写图片描述
(r + 1)2/r的值在两个特征值相等的时候最小,随着r的增大而增大,即在某一个方向的梯度值越大,而在另一个方向的梯度值越小,而边缘恰恰就是这种情况。所以为了剔除边缘响应点,需要让该比值小于一定的阈值,因此,为了检测主曲率是否在某域值r下,只需检测
这里写图片描述
if (α+β)/ αβ> (r+1)2/r, throw it out. 在Lowe的文章中,取r=10。
这里写图片描述

给特征点赋值一个128维方向参数
确定了每幅图中的特征点,为每个特征点计算一个方向,依照这个方向做进一步的计算, 利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数,使算子具备旋转不变性。需要利用图像的局部特征为给每一个关键点分配一个基准方向。使用图像梯度的方法求取局部结构的稳定方向。对于在DOG金字塔中检测出的关键点点,采集其所在高斯金字塔图像3σ邻域窗口内像素的梯度和方向分布特征。梯度的模值和方向如下:
这里写图片描述
L为关键点所在的尺度空间值,按Lowe的建议,梯度的模值m(x,y)按这里写图片描述 的高斯分布加成,按尺度采样的3σ原则,邻域窗口半径为这里写图片描述
在完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向。梯度直方图将0~360度的方向范围分为36个柱(bins),其中每柱10度。如图5.1所示,直方图的峰值方向代表了关键点的主方向,(为简化,图中只画了八个方向的直方图)。随着距中心点越远的领域其对直方图的贡献也响应减小.Lowe论文中还提到要使用高斯函数对直方图进行平滑,减少突变的影响。
这里写图片描述
方向直方图的峰值则代表了该特征点处邻域梯度的方向,以直方图中最大值作为该关键点的主方向。为了增强匹配的鲁棒性,只保留峰值大于主方向峰值80%的方向作为该关键点的辅方向。因此,对于同一梯度值的多个峰值的关键点位置,在相同位置和尺度将会有多个关键点被创建但方向不同。仅有15%的关键点被赋予多个方向,但可以明显的提高关键点匹配的稳定性。实际编程实现中,就是把该关键点复制成多份关键点,并将方向值分别赋给这些复制后的关键点,并且,离散的梯度方向直方图要进行插值拟合处理,来求得更精确的方向角度值,检测结果如图5.2所示。
这里写图片描述
至此,将检测出的含有位置、尺度和方向的关键点即是该图像的SIFT特征点。
通过对关键点周围图像区域分块,计算块内梯度直方图,生成具有独特性的向量,这个向量是该区域图像信息的一种抽象,具有唯一性。

4)关键点特征描述
接下来就是为每个关键点建立一个描述符,用一组向量将这个关键点描述出来,使其不随各种变化而改变,比如光照变化、视角变化等等。这个描述子不但包括关键点,也包含关键点周围对其有贡献的像素点,并且描述符应该有较高的独特性,以便于提高特征点正确匹配的概率。
SIFT描述子是关键点邻域高斯图像梯度统计结果的一种表示。通过对关键点周围图像区域分块,计算块内梯度直方图,生成具有独特性的向量,这个向量是该区域图像信息的一种抽象,具有唯一性。
Lowe建议描述子使用在关键点尺度空间内4*4的窗口中计算的8个方向的梯度信息,共4*4*8=128维向量表征。表示步骤如下:

  1. 确定计算描述子所需的图像区域
    特征描述子与特征点所在的尺度有关,因此,对梯度的求取应在特征点对应的高斯图像上进行。将关键点附近的邻域划分为d*d(Lowe建议d=4)个子区域,每个子区域做为一个种子点,每个种子点有8个方向。每个子区域的大小与关键点方向分配时相同,即每个区域有这里写图片描述 个子像素,为每个子区域分配边长为这里写图片描述的矩形区域进行采样(个子像素实际用边长为这里写图片描述的矩形区域即可包含,但由式这里写图片描述这里写图片描述不大,为了简化计算取其边长为这里写图片描述并且采样点宜多不宜少)。考虑到实际计算时,需要采用双线性插值,所需图像窗口边长为这里写图片描述 。在考虑到旋转因素(方便下一步将坐标轴旋转到关键点的方向),如下图所示,实际计算所需的图像区域半径为:
    这里写图片描述计算结果四舍五入取整。
    这里写图片描述

  2. 将坐标轴旋转为关键点的方向,以确保旋转不变性,如6.2所示。
    这里写图片描述
    旋转后邻域内采样点的新坐标为:这里写图片描述

  3. 将邻域内的采样点分配到对应的子区域内,将子区域内的梯度值分配到8个方向上,计算其权值。
    旋转后的采样点坐标在半径为radius的圆内被分配到这里写图片描述的子区域,计算影响子区域的采样点的梯度和方向,分配到8个方向上。
    旋转后的采样点这里写图片描述落在子区域的下标为这里写图片描述
    Lowe建议子区域的像素的梯度大小按的高斯加权计算,即
    这里写图片描述
    其中a,b为关键点在高斯金字塔图像中的位置坐标。
  4. 插值计算每个种子点八个方向的梯度。
    这里写图片描述
    所得采样点在子区域中的下标这里写图片描述(图中蓝色窗口内红色点)线性插值,计算其对每个种子点的贡献。如图中的红色点,落在第0行和第1行之间,对这两行都有贡献。对第0行第3列种子点的贡献因子为dr,对第1行第3列的贡献因子为1-dr,同理,对邻近两列的贡献因子为dc和1-dc,对邻近两个方向的贡献因子为do和1-do。则最终累加在每个方向上的梯度大小为:
    这里写图片描述
    其中k,m,n为0或为1。
    这里写图片描述
    图左部分的中央为当前关键点的位置,每个小格代表关键点邻域所在尺度空间的一个像素,利用公式求得每个像素的梯度幅值与梯度方向,箭头方向代表该像素的梯度方向,箭头长度代表梯度模值,然后用高斯窗口对其进行加权运算。
    图中蓝色的圈代表高斯加权的范围(越靠近关键点的像素梯度方向信息贡献越大)。然后在每4×4的小块上计算8个方向的梯度方向直方图,绘制每个梯度方向的累加值,即可形成一个种子点,如图右部分示。此图中一个关键点由2×2共4个种子点组成,每个种子点有8个方向向量信息。这种邻域方向性信息联合的思想增强了算法抗噪声的能力,同时对于含有定位误差的特征匹配也提供了较好的容错性。
    这里写图片描述
    计算keypoint周围的16*16的window中每一个像素的梯度,而且使用高斯下降函数降低远离中心的权重。我们将特征点周围16*16的窗口分解为16个4*4的子窗口。在每个4*4的子窗口中,计算出梯度的大小和方向,并用一个8个bin的直方图来统计子窗口的平均方向,梯度方向在0-44度范围的像素点被放到第一个bin中,45-89度范围的像素点被放到下一个bin中,依此类推。同样加入到bin中的量依赖于该像素点梯度的大小。与之前不同的是,加入的量不仅与像素点的梯度大小相关,而且还依赖离特征点的距离,这样远离特征点的像素点会加入较少的量到直方图中。这通过一个高斯加权函数来实现,这个函数生成一个加权值(像一个二维的钟形曲线),用它乘以16*16的窗口中每个像素点的梯度大小,得到加权后的梯度大小,距离特征点越远,要加入直方图的像素点的梯度大小越小。
    这样每个4*4的子窗口都对应一个8 bin的直方图,且直方图中加入的值是像素的用高斯加权后的梯度大小,而特征点周围16*16的窗口中包含16个4*4的子窗口,共有16*8=128个数,然后将这128个数组成的向量进行单位化,单位化后的128维向量就是SIFT的描述子。

  5. 如上统计的4*4*8=128个梯度信息即为该关键点的特征向量。特征向量形成后,为了去除光照变化的影响,需要对它们进行归一化处理,对于图像灰度值整体漂移,图像各点的梯度是邻域像素相减得到,所以也能去除。得到的描述子向量为这里写图片描述,归一化后的特征向量为这里写图片描述
    这里写图片描述

  6. 描述子向量门限。对于一些非线性的光照变化,SIFT并不具备不变性,但由于这类变化影响的主要是梯度的幅值变化,对梯度的方向影响较小,因此作者通过限制梯度幅值的值来减少这类变化造成的影响。相机饱和度变化对造成某些方向的梯度值过大,而对方向的影响微弱。因此设置门限值(向量归一化后,一般取0.2)截断较大的梯度值。然后,再进行一次归一化处理,提高特征的鉴别性。

  7. 按特征点的尺度对特征描述向量进行排序。
    至此,SIFT特征描述向量生成。

5)根据SIFT进行Match
生成了A、B两幅图的描述子,(分别是k1*128维和k2*128维),就将两图中各个scale(所有scale)的描述子进行匹配,匹配上128维即可表示两个特征点match上了。

实际计算过程中,为了增强匹配的稳健性,Lowe建议对每个关键点使用4×4共16个种子点来描述,这样对于一个关键点就可以产生128个数据,即最终形成128维的SIFT特征向量。此时SIFT特征向量已经去除了尺度变化、旋转等几何变形因素的影响,再继续将特征向量的长度归一化,则可以进一步去除光照变化的影响。 当两幅图像的SIFT特征向量生成后,下一步我们采用关键点特征向量的欧式距离来作为两幅图像中关键点的相似性判定度量。取图像1中的某个关键点,并找出其与图像2中欧式距离最近的前两个关键点,在这两个关键点中,如果最近的距离除以次近的距离少于某个比例阈值,则接受这一对匹配点。降低这个比例阈值,SIFT匹配点数目会减少,但更加稳定。为了排除因为图像遮挡和背景混乱而产生的无匹配关系的关键点,Lowe提出了比较最近邻距离与次近邻距离的方法,距离比率ratio小于某个阈值的认为是正确匹配。因为对于错误匹配,由于特征空间的高维性,相似的距离可能有大量其他的错误匹配,从而它的ratio值比较高。Lowe推荐ratio的阈值为0.8。但作者对大量任意存在尺度、旋转和亮度变化的两幅图片进行匹配,结果表明ratio取值在0. 4~0. 6之间最佳,小于0. 4的很少有匹配点,大于0. 6的则存在大量错误匹配点。(如果这个地方你要改进,最好给出一个匹配率和ration之间的关系图,这样才有说服力)作者建议ratio的取值原则如下:
ratio=0. 4 对于准确度要求高的匹配;
ratio=0. 6 对于匹配点数目要求比较多的匹配;
ratio=0. 5 一般情况下。
也可按如下原则:当最近邻距离<200时ratio=0. 6,反之ratio=0. 4。ratio的取值策略能排分错误匹配点。

6)PCA-SIFT算法
  •PCA-SIFT与标准SIFT有相同的亚像素位置,尺度和主方向。但在第4步计算描述子的设计,采用的主成分分析的技术。
  •下面介绍一下其特征描述子计算的部分:
  •用特征点周围的41×41的像斑计算它的主元,并用PCA-SIFT将原来的2×39×39维的向量降成20维,以达到更精确的表示方式。
  •它的主要步骤为,对每一个关键点:在关键点周围提取一个41×41的像斑于给定的尺度,旋转到它的主方向 ;计算39×39水平和垂直的梯度,形成一个大小为3042的矢量;用预先计算好的投影矩阵n×3042与此矢量相乘;这样生成一个大小为n的PCA-SIFT描述子。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值