图像特征提取-SIFT

2019-08-22  本文已影响0人  sunny4handsome

在没有神经网络之前,学者提出了大量的依赖于先验知识的传统特征提取算法。在图像特征领域,SIFT个人认为是具有里程碑意义的一篇论文。我个人的学习习惯是在学习任何领域之前先看一下这个领域的研究综述,然后再啃几篇关键的、里程碑式的论文。图像特征提取算法有很多,比如有SURF、ORB、LBP、HAAR等等。本文重点说明SIFT,有时间会补充其他几个算法。SIFT(Scale-Invariant Feature Transform)自1999年由David Lowe提出以后被广泛的应用于CV的各种领域:图像识别,图像检索,3D重建等等

1. 基本概念

1.1 灰度

1.2 图像滤波与卷积

滤波一般指就是一个二维矩阵(卷积核),卷积就是用这个矩阵与原图像进行卷积运算得到一个新的图像。


卷积运算

1.3 尺度

尺度是一个视觉问题,不是数学问题,简单的来讲就是你在不同距离上观察一个物体,产生的视觉感受是不同的。比如你站在不同距离观察一片雪花,离的越远你感受的形状越接近于a->b->c->d的顺序,就是越远,你看到的越是一个大概的轮廓。


image.png

1.4 SIFT中的尺度空间的概念

2. SIFT特征提取步骤

一幅图像的SIFT特征提取,分为4个步骤:

2.1 尺度空间极值检测

SIFT特征点其实就是尺度空间中稳定的点/极值点,那么,为了得到这些稳定点

2.1.1 尺度空间的建立(高斯金字塔的建立)

对于一幅输入图像,为了进行sift特征检测、实现scale-invariant(任何尺度下都能够有对应的特征点),需要对该图像的尺度空间进行分析,即建立高斯金字塔图像、得到不同scale的图像,这里的高斯金字塔与最原始的高斯金字塔稍微有点区别,因为它在构造尺度空间时,将这些不同尺度图像分为了多个Octave、每个Octave又分为了多层。下图给出了Sift中的高斯金字塔的结构图;


高斯金字塔
高斯金字塔说明
image.png
2.1.2 尺度空间中特征点的检测(DoG中极值点的检测)

构造完尺度空间(差分高斯金字塔)后,接下来的任务就是“在尺度中间中检测出图像中的稳定特征点”:

对于DoG中每一个采样点(每一个Octave中每一层),将其与它邻域内所有像素点(8+18=26)进行比较,判断其是否为局部极值点(极大或者极小),更加具体地:如下图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。 一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点。但要注意:这种相邻层之间的极值点的寻找是在同一Octave中的相邻尺度之间进行寻找的,而不要跨组!


image.png
2.1.3 关键点位置及尺度确定

通过拟和“三维二次函数”可以精确确定关键点的位置和尺度(达到亚像素精度),具体方法还未知,可以得到一系列的SIFT候选特征点集合,但由于这些关键点中有些具有较低的对比对,有些输属于不稳定的边缘响应点(因为DoG算子会产生较强的边缘响应),所以,为了增强匹配稳定性、提高抗噪声能力,应该将这2类关键点去除,实现对候选SIFT特征点集合的进一步净化:

2.2 关键点方向确定

2.3 特征向量生成

上面只是得到了每个关键点的方向,接下来,需要确定每个关键点的特征向量,具体方式如下:

3. SIFT特征的匹配

现有A、B两幅图像,分别利用上面的方法从各幅图像中提取到了k1个sift特征点和k2个特征点及其对应的特征描述子,即k1 * 128维和k2 * 128维的特征,现在需要将两图中各个scale(所有scale)的描述子进行匹配。
接下来采用关键点特征向量的欧式距离来作为两幅图像中关键点的相似性判定度量。

参考资料

[1] SIFT特征提取及匹配
[2] 图像处理之特征提取

上一篇下一篇

猜你喜欢

热点阅读