SIFT特征点提取(Scale Invariant Feature Transform)
一、FIFT简介成像匹配的核心问题是将同一目标在不同时间、不同分辨率、不同光照、不同位姿情况下所成的像相对应。传统的匹配算法往往是直接提取角点或边缘,对环境的适应能力较差,鲁棒性不强。
基于传统特征点匹配存在的问题,1999年British Columbia大学大卫.劳伊(David G.Lowe)提出了一种基于尺度空间的、对图像缩放、旋转甚至变换保持不变性的局部特征描述算子。
SIFT算法的实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出,不会因光照,仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。
SIFT算法实现步骤简述:
1.提取特征点;2.特征点描述;3.特征点匹配
二、SIFT算法实现步骤
1、尺度空间
什么是尺度,是图像呈现内容发生连续性变化的自变量。尺度空间中个尺度图像的模糊程度逐渐变大,能够模拟人在距离目标由近到远时目标在视网膜上的形成过程。尺度越大图像越模糊。
一个图像的尺度空间 L(x,y,σ),定义为原始图像 I(x,y)与一个可变尺度的2维高斯函数G(x,y,σ) 卷积运算。
一副图像其高斯尺度空间可由其和不同的高斯卷积得到:
L(x,y,σ)=G(x,y,σ)∗I(x,y)
其中,G(x,y,σ)是高斯核函数
2、高斯金字塔
尺度空间在实现时使用高斯金字塔表示,高斯金字塔的构建分为两步:
(1)对图像做高斯平滑;
(2)对处理后的图像进行降采样(通常是长、宽方向的1/2)
降采样后得到一系列不断尺寸缩小的图像。
构建尺度空间的目的是为了检测出在不同的尺度下都存在的特征点,为了让尺度体现连续性,在简单将采样的基础上加上了高斯滤波。也就是对图像金字塔的每层图像使用不同的参数σ进行高斯模糊,使每层金字塔有多张高斯模糊过的图像。降采样时,金字塔上边一组图像的第一张是由其下面一组图像倒数第三张降采样得到。
高斯图像金字塔共o组,每组s层,则有
σ:尺度空间;s:sub-level层坐标;σ0:初始尺度;S:每组层数(一般为3~5)
组内和组间尺度:
例如我们取每组层S=6,Octive1:
Octive2:
3、高斯差分金字塔
差分金字塔的是在高斯金字塔的基础上操作的,其建立过程是:在高斯金子塔中的每组中相邻两层相减(下一层减上一层)就生成高斯差分金字塔. 进一步过滤图像无用信息。
高斯差分金字塔其操作如下图:
差分高斯金字塔中:
Octive1尺度空间得到的高斯差分图像的尺度为:
Octive2尺度空间得到的高斯差分图像的尺度为:
如果我们把它们的中间三项取出来拼在一起,则尺度为:
正好连续。这一效果带来的直接的好处是在尺度空间的极值点确定过程中,我们不会漏掉任何一个尺度上的极值点,而是能够综合考虑量化的尺度因子。
高斯差分函数(简称DOG算子)
D(x,y,σ )= [G(x,y,kσ)-G(x,y,σ)]I(x,y)
=L(x,y,kσ)-L(x,y,σ)
L (x,y,σ)=G(x,y,σ)I(x,y)
4、极值点(候选特征点)检测
特征点是由DOG空间的局部极值点组成的,特征点的初步探查是通过同一组内各DoG相邻两层图像之间比较完成的。为了寻找DoG函数的特征点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如图下图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。
4.1特征点精确定位
由于DOG值对噪声和边缘较敏感,因此,在上面DOG尺度空间中检测到的局部极值点还要进一步检验才能定位为特征点。
为了提高关键点的稳定性,需要对尺度空间DoG函数进行曲线插值。利用DoG函数在尺度空间的Taylor展开式为
其极值点为
在计算过程中,分别对图像的行、列及尺度进行修正,结果如下:
其中,X求导并让方程等于零,解得X,X为修正值。
将修正后的结果代入D(X),得
用上式去除哪些对比度比较低的不稳定极值点。Lowe的实验显示,所有取值小于0.04的极值点均可抛弃。
4.2 消除边缘响应
仅仅去除低对比度的极值点对于特征点稳定性是远远不够的。由于DoG对图像中的边缘有比较强的响应值,而一旦特征点落在图像的边缘上,这些点就是不稳定的点。D值可以通过求取邻近点像素的差分得到。H的特征值与D的主曲率成正比例。我们可以避免求取具体的特征值,因为我们只关心特征值的比例。:
表Dxx示DOG金字塔中某一尺度的图像x方向求导两次。
假设H的特征值为α和β(α、β代表x和y方向的梯度)且α>β。令α=rβ则有
其中Tr(H)求取H的对角元素和;Det(H)为求H的行列式值
作者建议r取10,
时关键点保留,反之剔除。
5、特征点方向分配
通过尺度不变性求极值点,可以使其具有缩放不变的性质,利用关键点邻域像素的梯度方向分布特性,我们可以为每个关键点指定方向参数方向,从而使描述子对图像旋转具有不变性。我们通过求每个极值点的梯度来为极值点赋予方向。
5.1像素点的梯度表示
梯度幅值:
梯度方向:
5.2方向直方图的生成
确定关键点的方向采用梯度直方图统计法,统计以关键点为原点,一定区域内的图像像素点对关键点方向生成所作的贡献。
关于方向直方图的几点说明
1.直方图以每10度方向为-一个柱,共36个柱,柱所代表的方向为像素点梯度方向,柱的长短代表了梯度幅值.
2.根据Lowe的建议,直方图统计半径采用3x1.5x σ .
3.在直方图统计时,每相邻三个像素点采用高斯加权,根据Lowe的建议,模板采用[0. 25,0.5, 0.25],并连续加权两次。
主方向和辅方向
以直方图中最大值作为该关键点的主方向。为了增强匹配的鲁棒性,只保留峰值大于主方向峰值80%的方向作为该关键点的辅方向。因此,对于同一梯度值的多个峰值的关键点位置,在相同位置和尺度将会有多个关键点被创建但方向不同。仅有15%的关键点被赋予多个方向,但可以明显的提高关键点匹配的稳定性。
对方向方向直方图进行平滑处理
为了防止某个梯度方向角度因受到噪声的干扰而突变,我们还需要对梯度方向直方图进行平滑处理,Opencv中的平滑公式为:
其中i∈[0,35],h 和H 分别表示平滑前和平滑后的直方图。由于角度是循环的,即00=3600,如果出现h(i)超出了(0,…,35)的范围,那么可以通过圆周循环的方法找到它所对应的在00=3600之间的值,如h(-1) = h(35)。
6、特征点描述
6.1描述的目的
描述的目的是在关键点计算后,用一组向量将这个关键点描述出来,这个描述子不但包括关键点,也包括关键点周围对其有贡献的像素点。
用来作为目标匹配的依据,也可使关键点具有更多的不变特性,如光照变化、3D视点变化等.
6.2描述的思路
通过对关键点周围图像区域分块,计算块内梯度直方图,生成具有独特性的向量,这个向量是该区域图像信息的一种抽象,具有唯一性。
下图是一-个SIFT描述子事例。其中描述子由2x2x 8维向量表征,也即是2x2个8方向的方向直方图组成。左图的种子点由Bx 8单元组成。每一个小格都代表了特征点邻域所在的尺度空间的一个像素,箭头方向代表了像素梯度方向,箭头长度代表该像素的幅值。然后在4X4的窗口内计算8个方向的梯度方向直方图。绘制每个梯度方向的累加可形成一个种子点,如右图所示:一个特征点由4个种子点的信息所组成。
Lowe实验结果表明:描述子采用4×4×8=128维向量表征,综合效果最优(不变性与独特性)。
6.3 128维描述子生成步骤
1.确定计算描述子所需的图像区域
描述子梯度方向直方图由关键点所在尺度的模糊图像计算产生。图像区域的半径通过下式计算:
σ是关键点所在组( octave)的组内尺度
2.将坐标系移动到特征点主方向
旋转角度后新坐标为:
3.在图像半径区域内对每个像素点求其梯度幅值和方向,然后对每个梯度幅值乘以高斯权重参数,生成方向直方图。
x :该点与关键点的列距离;
y。:该点与关键点的行距离;
σw :等于描述子窗口宽度3σ x 直方图列数(取4)的一半;
4.在窗口宽度为2X2的区域内计算8个方向的梯度方向直方图,绘制每个梯度方向的累加值,即可形成一个种子点。然后再在下一-个2X2的区域
内进行直方图统计,形成下一个种子点,共生成16个种子点。
5.描述子向量元素门限化及门限化后的描述子向量规范化。
方向直方图每个方向上梯度幅值限制在一定门限值以下(门限一般取0.2
描述子向量元素规范化:
W=(w1,w2...,w128)为计算得到的描述子
L=(l1,l2,...,l128)为规范化后的向量
特征向量规范化后可以去除光照变化的影响。对于图像灰度值整体移动变化,图像各点的梯度是邻域像素相减得到,所以也能去除。
7、关键点匹配
分别对模板图(参考图,reference image )和实时图(观测图,observation image)建立关键点描述子集合。目标的识别是通过两点集内关键点描述子的比对来完成。具有128维的关键点描述子的相似性度量采用欧式距离.
图R中特征点描述子:Ri=(ri1,ri2,.......,ri128)
图S中特征点描述子:Si=(si1,si2,.........,si128)
任意两描述子相似性度量:
配对的描述子d(Ri,Si)需满足条件(T为阈值):
参考文献:
https://www.cnblogs.com/mysunnyday/archive/2011/08/31/2160298.html
https://www.cnblogs.com/Alliswell-WP/p/SIFT.html
1、sift算法详解及应用(课件)。(本文档简明扼要的简述了SIFT算法和图像匹配以及匹配修正。图文并茂,一览全貌)
http://wenku.baidu.com/view/87270d2c2af90242a895e52e.html?re=view
2、SIFT
https://www.cnblogs.com/Jack-Elvis/p/11297216.html
3、特征点检测:Harris, SIFT, SURF, ORB
https://zhuanlan.zhihu.com/p/36382429
4、SIFT算法研究
https://blog.51cto.com/underthehood/658350