SIFT算法中特征点的性质分析

本文将对SIFT算法提取的特征点的性质做个人的分析,如有理解错误,欢迎指出。SIFT算法的过程这里不解释,百度之,一大堆。

首先讨论下为什么SIFT对图像的线性变换保持一定的不变性?

这里图像线性变换包括旋转、透视和仿射变换,实际上仿射变换包含于透视变换,旋转变换包含于仿射变换,广义讲,可以理解透视变换就是图像在二维空间上的线性变换。SIFT算法对线性变换能保持一定的不变形,也就是说如果图像变换程度过大,SIFT也是不能提取到特征点的,SIFT特征点是一种局部特征,因此说这种不变性也是局部不变性,这种局部的大小是由特征点的尺度决定的,如下图:

SIFT算法中特征点的性质分析_第1张图片      SIFT算法中特征点的性质分析_第2张图片

不同的尺度下,特征点周围的领域是相似的,特征点的描述向量也是在这个圆内描述的,因为圆内的内容是相似的,故描述向量的距离相近,理论上在计算特征向量和方向也是相近的,因而是匹配上。对场景中相似的场景出现错配的情况,也是因为SIFT是一种局部描述子。SIFT对线性变换保持的不变形也是有限的,一般拍摄仿射角度超过45度相同场景就比较难匹配了。

下面分析下为什么相比较Harris或者其他角点,SIFT的匹配效果要好?

相比于Harris,SIFT有3个相比而言量化精确的数据:尺度,方向和特征向量。有些文献和研究者认为SIFT检测和特征描述可以分开操作,个人觉得它们不可分开,即使分开也是相对的,从上段可以看出,特征描述是基于点的周围圆形或者椭圆区域的(如Affine Region),有了这个区域才可以计算方向和特征向量,因此,刚讲的相对就是这个意思,假设某种特征提取方法能够提取到点和尺度,那就可以用SIFT描述方法得到特征向量。纯Harris角点是没有做到特征点尺度确定的,它只是做了点位置的提取,并且是在一个尺度下的,因此,强行固定尺度利用SIFT描述是不准确的。有了这3个数据,匹配就完全转换成了数学计算的问题。

继续来分析SIFT特征点的位置和其他角点的不同。从SIFT提取的结果来看,可以发现SIFT特征点基本不会位于图像中明显的角点处,也不会位于图像直线、曲线处,大多数都是位于角点或直线附近,这是为什么呢?分析Harris和SIFT特征提取的过程中我们会发现Harris提取算法中的判断矩阵是针对于角点的特点设计的,也就是说Harris角点的发现者是先分析了图像角点的特性后总结出的算法,SIFT算法中并没有利用梯度矩阵而直接判断DoG图像的极值来判断是否关键点,然后用了Hessian矩阵来消除了边缘点的响应,也就是抑制了某些关键点,那么为什么要消除边缘响应呢?从实验中,可以发现,如果不消除这种响应,SIFT在边缘处会得到一些分布较多的特征点,并且这些特征点的存在都是近邻的,这样会给匹配带来麻烦,造成错配,因此需要消除这种边缘相应,SIFT算法中也不是完全排除了这种边缘点,而是通过设定某一阈值来消除边缘响应强的点,所以我们从实验中发现不到边缘或者棱角处的点。SIFT点的位置不在明显的特征处,还有一点就是多尺度的影响,假设我们在图像下采样4倍的小图中提取到了特征比较明显的角点,但是由于采样的关系,再恢复到原始图像(*4)时,该点一般就不会真正的出现在原图中的棱角点处了。

接下来分析下SIFT点对视角变化较大的图像鲁棒性如何。从上两段可以知道SIFT点精度由点所在的尺度、方向决定,因为特征向量就是由这两个量计算得到的,并且计算特征向量时,区域是点周围的整圆,这和Affine Region是不同的,Affine Region计算的是椭圆,因此其对仿射变换具有高鲁棒性。现在来分析下SIFT的尺度(决定圆的半径)和视角的大小之间的量化关系,假设点的半径为r,仿射角度为sita,尺度不发生变换,那么理论上该圆区域应该变成椭圆,长轴半径依然是r,短轴应该是r*cos(sita),sita越大,短轴越小,实际的SIFT仍然是圆区域,这就造成特征向量的差异,当r较大的时候这种差异较大。从实验中可以发现,较大视角能匹配上的正确对的尺度都比较小,也就是点的圆区域较小。从人的视觉上来分析,这也是合理的,如果图像仅仅是刚性的变换,不管半径多少,匹配点的相同半径的区域是相同的,如果是存在仿射变换的,半径越小,相似度才高。



你可能感兴趣的:(sift,算法,图像处理,计算机视觉)