
SIFT具有尺度不变性和旋转不变性。具体分为:
尺度规范化的Laplacian of Gaussian(LoG)算子具有尺度不变性。在具体实现中,可用Difference of Gaussian(DoG)算子近似LoG算子,在构建的尺度空间中检测稳定的特征点。
因此尺度空间的构架包含:
sigma越大丢失的高频越多
每个像素要和周围的26个像素比较,确定它是当前尺度下,相邻频率信息的一个峰值。
为什么要精确定位,因为我们这个不论是x、y、sigma方向上都是离散的,要在连续的变化上求得极值点。
DoG函数D(X)=D(x,y,σ)在尺度空间的的Taylor展开式为:
令D(X)导数为0,得到极值点的偏移量:
若X^=(x,y,σ)T在任意一个维度大于05,说明极值点精确位置距离另一个点更近,应该改变当前关键点的位置,定位到新点后执行相同 *** 作,若迭代5次仍不收敛,则认为该检测点不为关键点。精确关键点处函数值为:
|D(X^)|过小易受噪声点的干扰而变得不稳定,若其小于某个阈值(例如003或者004/S),则将该极值点删除。
为了得到稳定的特征点,只是删除DoG响应值低的点是不够的。由于DoG对图像中的边缘有比较强的响应值,而一旦特征点落在图像的边缘上,这些点就是不稳定的点。一方面图像边缘上的点是很难定位的,具有定位歧义性;另一方面这样的点很容易受到噪声的干扰而变得不稳定。
一个平坦的DoG响应峰值往往在横跨边缘的地方有较大的主曲率,而在垂直边缘的方向有较小的主曲率。而主曲率可以通过2×2的Hessian矩阵H求出
D 的主曲率和H的特征值成正比,令α为较大特征值,β为较小特征值,且α/β=r,则
(r+1)2/r在两个特征值相等时最小,随着r的增大而增大,r值越大,说明两个特征值的比值越大,正好对应边缘的情况。因此,设定一个阈值rt,若满足
则认为该关键点不是边缘,否则予以剔除。
好了,到这一步,我们已经完成了特征点的筛选,并且通过高斯金字塔的设计实现了尺度不变性。接下来,就该去搞定旋转不变性了。
这里的旋转不变性跟咱们角点自带的旋转不变性有一些不同。Harris的角点不变性靠的是旋转后,该是角点的地方还是角点,所以对于整张图对应的所有角点这个尺度看,它是具备旋转不变性的。但是SIFT中,我们希望给每个特征点赋值一个方向,这样,对于单个特征点来说,不管是如何缩放、旋转,这个方向作为它的一个属性都不会变。
为了使特征描述子具有旋转不变性,需要利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数。对于在DoG金字塔中检测出的关键点,在其所在高斯金字塔图像的3σ邻域窗口内计算每个像素的梯度幅值和方向,公式如下:
L为关键点所在尺度空间的灰度值,m(x,y)为梯度幅值,θ(x,y)为梯度方向。对窗口内的像素的模值m(x,y)按σ=15σoct、邻域窗口为3σ=3×15σoct的高斯分布加权。
在完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向,梯度直方图将梯度方向(0,360∘)分为36柱(bins),如下图所示,直方图的峰值所在的方向代表了该关键点的主方向。
梯度方向直方图的峰值代表了该特征点处邻域梯度的主方向,为了增强鲁棒性,保留峰值大于主方向峰值80%的方向作为该关键点的辅方向,因此,在相同位置和尺度,将会有多个关键点被创建但方向不同,可以提高特征点匹配的稳定性。
至此,将检测出的含有位置、尺度和方向的关键点即是该图像的SIFT特征点。
是用128维向量对每个关键点进行描述。
通过上面的步骤,对于每一个关键点,拥有三个信息:位置、尺度以及方向。接下来就是为每个关键点建立一个描述符,用一组向量将这个关键点描述出来,使其不随各种变化而改变,比如光照变化、视角变化等等。这个描述子不但包括关键点,也包含关键点周围对其有贡献的像素点,并且描述符应该有较高的独特性,以便于提高特征点正确匹配的概率。
SIFT描述子是关键点邻域高斯图像梯度统计结果的一种表示。通过对关键点周围图像区域分块,计算块内梯度直方图,生成具有独特性的向量,这个向量是该区域图像信息的一种抽象,具有唯一性。
特征描述子与特征点所在的尺度有关,因此,对梯度的求取应在特征点对应的高斯图像上进行。将关键点附近的邻域划分为dd(Lowe建议d=4)个子区域,每个子区域做为一个种子点,每个种子点有8个方向。每个子区域的大小与关键点方向分配时相同。
每一个小格都代表了特征点邻域所在的尺度空间的一个像素 ,箭头方向代表了像素梯度方向,箭头长度代表该像素的幅值。然后在4×4的窗口内计算8个方向的梯度方向直方图。绘制每个梯度方向的累加可形成一个种子点。
这样两幅图的特征坐标系都是以关键点的方向为准了,旋转不变性。
如上统计的4 4 8=128个梯度信息即为该关键点的特征向量。特征向量形成后,为了去除光照变化的影响,需要对它们进行归一化处理,对于图像灰度值整体漂移,图像各点的梯度是邻域像素相减得到,所以也能去除。
描述子向量门限。非线性光照,相机饱和度变化对造成某些方向的梯度值过大,而对方向的影响微弱。因此设置门限值(向量归一化后,一般取02)截断较大的梯度值。然后,再进行一次归一化处理,提高特征的鉴别性。
按特征点的尺度对特征描述向量进行排序
对两幅图像中检测到的特征点,可采用特征向量的欧式距离作为特征点相似性的度量,取图像1中某个关键点,并在图像2中找到与其距离最近的两个关键点,若最近距离与次近距离的比值小于某个阈值,则认为距离最近的这一对关键点为匹配点。降低比例阈值,SIFT匹配点数量会减少,但相对而言会更加稳定。阈值ratio的取值范围一般为04~06。
SIFT是一种检测、描述、匹配图像局部特征点的算法,通过在尺度空间中检测极值点,提取位置、尺度、旋转不变量,并抽象成特征向量加以描述,最后用于图像特征点的匹配。SIFT特征对灰度、对比度变换、旋转、尺度缩放等保持不变性,对视角变化、仿射变化、噪声也具有一定的鲁棒性。但其实时性不高,对边缘光滑的目标无法准确提取特征点
旋转不变性是计算关键点方向并旋转得到的;尺度不变性是图像下采样获得高斯金字塔得到的。
算法效果比较博文
用于表示和量化图像的数字列表,简单理解成将转化为一个数字列表表示。特征向量中用来描述的各种属性的向量称为特征矢量。
参考
是一种算法和方法,输入1个图像,返回多个特征向量(主要用来处理图像的局部,往往会把多个特征向量组成一个一维的向量)。主要用于图像匹配(视觉检测),匹配图像中的物品。
SIFT论文
原理
opencv官网解释
实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出,不会因光照,仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。
尺度不变特征转换(Scale-invariant feature transform或SIFT)是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量。
其应用范围包含物体辨识、机器人地图感知与导航、影像缝合、3D模型建立、手势辨识、影像追踪和动作比对。
对现实中物体的描述一定要在一个十分重要的前提下进行,这个前提就是对自然界建模时的尺度。当用一个机器视觉系统分析未知场景时,计算机没有办法预先知道图像中物体的尺度,因此我们需要同时考虑图像在多尺度下的描述,获知感兴趣物体的最佳尺度。图像的尺度空间表达指的是图像的所有尺度下的描述。
KeyPoint数据结构解析
SURF论文
原理
opencv官网解释
SURF是SIFT的加速版,它善于处理具有模糊和旋转的图像,但是不善于处理视角变化和光照变化。在SIFT中使用DoG对LoG进行近似,而在SURF中使用盒子滤波器对LoG进行近似,这样就可以使用积分图像了(计算图像中某个窗口内所有像素和时,计算量的大小与窗口大小无关)。总之,SURF最大的特点在于采用了Haar特征以及积分图像的概念,大大加快了程序的运行效率。
因为专利原因,OpenCV33开始不再免费开放SIFT\SURF,需要免费的请使用ORB算法
ORB算法综合了FAST角点检测算法和BRIEFF描述符。
算法原理
opencv官方文档
FAST只是一种特征点检测算法,并不涉及特征点的特征描述。
论文
opencv官方文档
中文版
Brief是Binary Robust Independent Elementary Features的缩写。这个特征描述子是由EPFL的Calonder在ECCV2010上提出的。主要思路就是在特征点附近随机选取若干点对,将这些点对的灰度值的大小,组合成一个二进制串,并将这个二进制串作为该特征点的特征描述子。文章同样提到,在此之前,需要选取合适的gaussian kernel对图像做平滑处理。
1:不具备旋转不变性。
2:对噪声敏感
3:不具备尺度不变性。
ORB论文
OpenCV官方文档
ORB采用了FAST作为特征点检测算子,特征点的主方向是通过矩(moment)计算而来解决了BRIEF不具备旋转不变性的问题。
ORB还做了这样的改进,不再使用pixel-pair,而是使用9×9的patch-pair,也就是说,对比patch的像素值之和,解决了BRIEF对噪声敏感的问题。
关于计算速度:
ORB是sift的100倍,是surf的10倍。
对数据、特征分布的一种统计
对数据空间(bin)进行量化
Kmeans
边缘:尺度问题->不同的标准差 捕捉到不同尺度的边缘
斑点 Blob:二阶高斯导数滤波LoG
关键点(keypoint):不同视角之间的映射,配准、拼接、运动跟踪、物体识别、机器人导航、3D重建
SIFT\SURF
以上就是关于图像特征之SIFT特征匹配全部的内容,包括:图像特征之SIFT特征匹配、OpenCV+Python特征提取算法与图像描述符之SIFT / SURF / ORB、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)