图像特征检测中的SIFT等算子

SIFT特征点提取和匹配

尺度不变特征转换即SIFT (Scale-invariant feature transform)是一种计算机视觉的算法。它用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量。

因为当看到这些个不变量的时候,感觉云里雾里的,并不理解到底什么是不变量,所以首先来解释一下上面的这些不变量到底是什么:同一物体不同图像间只差一个旋转、平移和尺度变换,即同一物体的不同图像的差别是由于物体的摆设的方向不同、位置不同或摄像机的间距不同所引起的尺度不同,则可以找到一些不变量只与物体的形状有关而与它们的位置、方向和尺度无关,分别称之为旋转不变量、平移(位置)不变量和尺度不变量。这段话摘自百度百科中的不变量理论。有了这个解释,终于对这些不变量有了一个不那么抽象的理解。

0.还需要说明白一点,两张照片之所以能匹配得上,是因为其特征点的相似度较高。而寻找图像特征点,我们要先知道一个概念,就是“图像尺度空间”。“图像尺度空间表达”就是图像在所有尺度下的描述。举个例子,我拍摄两张图片,一张分辨率为2160*3840,其中有一座建筑,所占图像的分辨率为216*384,我走向这座建筑物,然后拿起手机又拍了一张,图片大小没变,而我离建筑近了,建筑在图像中变成了400*600了,那么我学习到的东西怎么能够适应不同大小的图像匹配呢?这时候就用到了降采样。我通过降采样,采集一些最具有代表性的点,将图片中我关注的那部分内容降采样到可以匹配上的合适的大小,那么我就知道,哦,原来我这两张图中的这个建筑是同一个建筑啊。

1. 尺度空间表达——高斯卷积

高斯核是唯一可以产生多尺度空间的核。在低通滤波中,高斯平滑滤波无论是时域还是频域都十分有效。我们都知道,高斯函数具有五个重要性质:

(1)二维高斯具有旋转对称性;(距离中心点的位置所占的权重都相等,可由下面的图表示出来)

(2)高斯函数是单值函数;(对于图像中的每一个像素,经过高斯核滤波后,会有唯一与之对应的像素值)

(3)高斯函数的傅立叶变换频谱是单瓣的;

(4)高斯滤波器宽度(决定着平滑程度)是由参数σ表征的,而且σ和平滑程度的关系是非常简单的;(σ是标准差,σ越小表示原图对应点所占的比重越高,σ越大处理之后图像变得模糊)

(5)二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方增长。

图像的尺度空间就是:二维高斯函数与原始图像卷积运算后的结果

左图是二维高斯函数在数学坐标系下的图像。右图是高斯函数对应的高斯核,也就是说对应各个点所占的比重。高斯核是圆对称的,在图片像素中展现出来的是一个正方形,其大小由高斯模板确定。卷积的结果使原始像素值有最大的权重,距离中心越远的相邻像素值权重也越小。

“尺度空间表达”指的是不同高斯核所平滑后的图片的不同表达,意思就是:原始照片的分辨率,和经过不同高斯核平滑后的照片的分辨率是一样的。但是,对于计算机来说,不同模糊程度,照片“看”上去的样子就不一样了。高斯核宽度越大或者方差越大,图片“看”上去就越模糊。

那么,图片的模糊与找特征点有关系吗?----关系不大

计算机没有主观意识去识别哪里是特征点,它能做的只是分辨出变化率最快的点。彩色图是三通道的,不好检测突变点。需要将RGB图转换为灰度图,此时灰度图为单通道,灰度值在0~255之间分布。

   无论人眼观测照片的距离有多远,只要能辨认出物体关键的轮廓特征,那就可以大致知道图像所表达的信息。计算机也一样,高斯卷积之后,图像虽然变模糊了。但图像的灰度梯度或者轮廓没有变,依然可以找到灰度值突变的点。而这些点,就可以作为候选特征点了,后期再进一步减少点的数量,提高准确率即可。

2.图像金字塔多分辨率表达——降采样

降采样也称下采样,就是说对一个图像进行密集点采样,比如每隔一个像素点取一个像素,这样像素点就会减少,蹄片的尺寸也会随之变小,对采样后的图像进一步采样,就像一个金字塔,逐渐在减小。所谓图像金字塔化:就是先进行图像平滑,再进行降采样,根据降采样率不同,所得到一系列尺寸逐渐减小的图像。通过降采样,我可以得到不同尺度大小的图,也许不是原图,但是对不同尺度降采样的图片经过高斯滤波后,再求LOG、DOG特征时会得到明显的特征点,(可能是因为在某些尺寸下特征点不明显,而在另外一些尺度下特征更加明显。)

 “图像金字塔化”处理速度快,占用存储空间小,而“尺度空间表达”刚好相反。

3.LOG(Laplassian of Gaussian)

高斯模糊和金字塔化都可以得到图片的一部分信息,那么将两者融合起来的话,就得到了LOG图像,高斯拉普拉斯变换图像。其步骤是:先将照片降采样,得到了不同分辨率下的图像金字塔。再对每层图像进行高斯卷积。这样一来,原本的图像金字塔每层只有一张图像,而卷积后,每层又增加了多张不同模糊程度下的照片。

但是我最初的想法是想获得更好的特征点啊,我要这个图有什么用呢?还需要对LOG图进一步提取特征。于是下一个特征叫做DOG。

4.DOG(Difference of Gaussian)

构造高斯差分图像的步骤是:在获得LOG图像后,用其相邻的图像进行相减,得到所有图像重新构造的金字塔就是DOG金字塔。

5.DOG局部极值点
寻找极值点

当得到DOG金字塔后,我们接下来要做的是寻找DOG极值点。每个像素点与其周围的像素点比较,当其大于或者小于所有相邻点时,即为极值点。

比如说,如下图所示,以黄点为检测点,那么其周围的点,除了同层所包围的8个绿点外,还有上一层的9个点与下一层的9个点

我们希望找到的特征点更加精确而且去除边缘特征点的影响。我们更希望保留下来角点的特征,因此想到了一个办法就是harris角点检测,利用水平方向与垂直方向梯度的关系,得到角点作为特征点。我们都知道,在一个角点处,理论上滑动窗口中的梯度应该朝各个方向都有,由此得到角点。

6.方向赋值
经过Harris角点检测算法之后,基本上得到了我们想要的精确特征点了。接下来我们就要求它们的方向。

在DOG 金字塔中,有很多层高斯模糊后的图像。在此,我们对其中一张图像的处理进行说明。当我们精确定位关键点后,需要找到该特征点对应的尺度值σ,根据这一尺度值,将对应的高斯图像的关键点进行有限差分,以3×1.5σ为半径的区域内图像梯度的幅角和幅值,得到:

然后利用直方图统计领域内像素对应的梯度和幅值:梯度方向角为横轴刻度,取45度为一个单位,那么横轴就有8个刻度;纵轴是对应梯度的幅值累加值。

取幅值最高的方向为主方向。有的时候,会出现第二峰值,因为有较多的关键点是多方向的。如果直接把它忽略掉不加以考虑的话,匹配精度会受到很大影响。所以,为了匹配的稳定性,我们将超过峰值能量的百分之80的方向,称为辅方向。

(我觉得这个地方说的这个方向应该和HOG中说的方向是同一个意思。不懂可以参考我图像描述子那片博客)

7.关键点描述

到了这里,我们就已经得到赋值后的SIFT特征点了,其包含了位置,尺度,方向的信息。

接下来的要做的是:关键点的描述,即用一组向量将关键点描述出来。

将坐标轴旋转为关键点的方向,以确保旋转不变性。

下面来描述一下,为什么要旋转一下坐标轴?

在特征点的邻域附近有许许多多的像素,构成了梯度直方图,如果我图片中这个目标旋转了一定角度,那么还按照原来的坐标轴进行特征点匹配的话,我就找不到这个点了。因为图片中的特征点周围各个梯度方向相对于原来的坐标轴已经被旋转了,与原来坐标轴的夹角已经改变了。但是,无论怎么旋转,特征点周围的梯度方向,相对于之前求得的梯度的主方向的角度是不变的。这就是旋转不变的基本理解。so我将所有的特征点周围的16*16(或者其他尺度大小范围内的点)都提取出来,并相对于主方向进行坐标轴的旋转。当有另外的图来匹配的时候,我将另外一张图上的特征点也用同样的方式,将特征点都进行一个旋转,然后有一种方法是一一进行匹配。这样就实现了特征匹配。

8匹配特征点

得到了这些特征点之后就可以用一些分类的方法,或者特征点匹配的方法去将不同图中的特征点找出来进行匹配了。比如说RANSAC算法等。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小趴菜也想当卷王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值