码迷,mamicode.com
首页 > 编程语言 > 详细

【图像处理之图像的特征检测1】SIFT算法(未完待续)

时间:2016-06-21 08:05:26      阅读:597      评论:0      收藏:0      [点我收藏+]

标签:

本文为本人入门学习所用,由参考多方资料整理而成,完成后将加上参考文献


SIFT简介及相关特点

SIFT全称:尺度不变特征转换(Scale-invariant feature transform)

是一种用来侦测与描述影像中的局部性特征的算法:它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由David Lowe1999年所发表,2004年完善总结。

SIFT算法的特点有:

1. SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;

2. 独特性好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;

3. 多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;

4. 高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;

5. 可扩展性,可以很方便的与其他形式的特征向量进行联合。


SIFT 特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关。对于光线、噪声、些微视角改变的容忍度也相当高。基于这些特性,它们是高度显著而且相对容易撷取,在母数庞大的特征数据库中,很容易辨识物体而且鲜有误认。使用 SIFT特征描述对于部分物体遮蔽的侦测率也相当高,甚至只需要3个以上的SIFT物体特征就足以计算出位置与方位。在现今的电脑硬件速度下和小型的特征数据库条件下,辨识速度可接近即时运算。SIFT特征的信息量大,适合在海量数据库中快速准确匹配。


SIFT算法在一定程度上可解决:

1. 目标的旋转、缩放、平移(RST

2. 图像仿射/投影变换(视点viewpoint

3. 光照影响(illumination

4. 目标遮挡(occlusion

5. 杂物场景(clutter

6. 噪声

尺度空间理论

尺度空间的思想

尺度空间理论的基本思想是:在图像信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取等。

尺度空间方法将传统的单尺度图像信息处理技术纳入尺度不断变化的动态分析框架中,更容易获取图像的本质特征。尺度空间中各尺度图像的模糊程度逐渐变大,能够模拟人在距离目标由近到远时目标在视网膜上的形成过程。

尺度空间满足视觉不变性。该不变性的视觉解释如下:当我们用眼睛观察物体时,一方面当物体所处背景的光照条件变化时,视网膜感知图像的亮度水平和对比度是不同的,因此要求尺度空间算子对图像的分析不受图像的灰度水平和对比度变化的影响,即满足灰度不变性和对比度不变性。另一方面,相对于某一固定坐标系,当观察者和物体之间的相对位置变化时,视网膜所感知的图像的位置、大小、角度和形状是不同的,因此要求尺度空间算子对图像的分析和图像的位置、大小、角度以及仿射变换无关,即满足平移不变性、尺度不变性、欧几里德不变性以及仿射不变性。也可以认为就是使得计算机模拟人的视觉使得不会犯指鹿为马的错误。

尺度空间的数学表示

SIFT算法是在不同的尺度空间上查找关键点,而尺度空间的获取需要使用高斯模糊来实现,Lindeberg等人已证明高斯卷积核是实现尺度变换的唯一变换核,并且是唯一的线性核。

高斯卷积只是表现尺度空间的一种形式,例如在KAZE特征检测算法中用来表现尺度空间的形式变成了PM方程


一个图像的尺度空间,技术分享定义为一个变化尺度的高斯函数技术分享与原图像技术分享的卷积。

  技术分享

其中,*表示卷积运算,

  技术分享

mn表示高斯模板的维度(技术分享确定)(x, y)代表图像的像素位置技术分享尺度空间因子,值越小表示图像被平滑的越少,相应的尺度也就越小。大尺度(模糊的比较狠,技术分享比较大)对应于图像的概貌特征,小尺度对应于图像的细节特征。


高斯模糊以及SIFT的实现概述

高斯模糊

对图像进行直接的二维高斯模糊,因为边界点无法处理将造成像素缺失出现黑边。所以一般的处理方法是将二维高斯模糊拆分为两个一维的高斯模板相乘进行替代。

高斯模糊相比于图像的简单平滑可以保留图像的全局特征但是无法对边缘或者纹理信息进行有效的保护,标准差越大越接近于均值滤波,也就是滤的越狠。邻域中心的像素具备最大的权值

拆分为两个一维的高斯卷积计算在计算边界的时候模板矩阵超出边界的部分将不做计算;此外这种方法的优点为可以减小运算的时间复杂度。

关于卷积,高斯模糊相关知识参见图像处理的关于图像增强部分


SIFT实现步骤

SIFT主要思路:

1)构造图像的尺度空间表示

2)在尺度空间中搜索极值点

3)由极值点建立描述特征向量

4)用特征描述向量进行相似度匹配


LoweSIFT算法分解为如下四步:

1. 尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。

2. 关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。

3. 方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。

4. 关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。


SIFT具体实现步骤

根据上面的概述,我们第一步就是要构建连续的尺度空间;通过连续变化尺度参数获得多尺度下的尺度空间表示序列

回忆上述章节:

关于SIFT算子的优点:

1. 目标的旋转、缩放、平移(RST

2. 图像仿射/投影变换(视点viewpoint

3. 光照影响(illumination

4. 目标遮挡(occlusion

5. 杂物场景(clutter

6. 噪声


SIFT主要思路:

1)构造图像的尺度空间表示

2)在尺度空间中搜索极值点

3)由极值点建立描述特征向量

4)用特征描述向量进行相似度匹配


关于尺度因子:

技术分享尺度空间因子,值越小表示图像被平滑的越少,相应的尺度也就越小。大尺度(模糊的比较狠,技术分享比较大)对应于图像的概貌特征,小尺度对应于图像的细节特征。

尺度空间中各尺度图像的模糊程度逐渐变大,能够模拟人在距离目标由近到远时目标在视网膜上的形成过程。


高斯金字塔的创建

根据上述步骤,第一步就是创建尺度空间,SIFT算子便是根据高斯金字塔创建尺度空间

图像金字塔是同意图像在不同分辨率下抽样得到的一组结果,它是早期图像多尺度的一种表示形式,由不同的高斯核函数卷积得到,多尺度表示随着尺度参数增加,冗余信息也随着增多,多尺度表示的优点在于图像的局部特征可以用简单的形式在不同尺度上描述

金字塔表示则难以分析图像的局部特征。
图像金字塔多分辨率表示(用于图像分割)表示的是每层分辨率减少固定比率,生成快,占用存储空间少。

尺度空间在实现时使用高斯金字塔表示,高斯金字塔的构建分为两部分:


1. 对图像做不同尺度的高斯模糊;

2. 对图像做降采样(隔点采样)


图像的金字塔模型是指,将原始图像不断降阶采样,得到一系列大小不一的图像,由大到小,从下到上构成的塔状模型。原图像为金子塔的第一层,每次降采样所得到的新图像为金字塔的一层(每层一张图像),每个金字塔共n层。金字塔的层数根据图像的原始大小和塔顶图像的大小共同决定,其计算公式如下:

技术分享

后边t的取值可以为0到log2min(m,n)之间的某一整数,此时需要考察顶层图像最小维数的对数值;因为这是金字塔每层隔点采样的结果。

其中MN为原图像的大小,t为塔顶图像的最小维数的对数值。如,对于大小为512*512的图像,当塔顶图像为4*4时,n=7,当塔顶图像为2*2时,n=8。高斯金字塔的组数一般为log2min(m,n)-3因为如果到第九层1*1,这就没有意义了(比高斯模板还要小)



技术分享


为了让尺度体现其连续性,高斯金字塔在简单降采样的基础上加上了高斯滤波。如上图所示,将图像金字塔每层的一张图像使用不同参数做高斯模糊,使得金字塔的每层含有多张高斯模糊图像,将金字塔每层多张图像合称为一组(Octave),金字塔每层只有一组图像,组数和金字塔层数相等,每组含有多张(也叫层Interval)图像。另外,降采样时,高斯金字塔上一组图像的初始图像(底层图像)是由前一组图像的倒数第三张图像隔点采样得到的

高斯差分金字塔

本节的目的是算出极值点,为下一步骤:2)在尺度空间中搜索极值点做准备

2002年Mikolajczyk在详细的实验比较中发现尺度归一化的高斯拉普拉斯函数技术分享的极大值和极小值同其它的特征提取函数,例如:梯度,Hessian或Harris角特征比较,能够产生最稳定的图像特征。

【归一化目的就是将不同尺度上的评判结果统一到一个尺度上,从而可以作比较,作计算。图像归一化就是通过一系列变换(利用图像的不变矩寻找一组参数,使其能够消除其他变换函数对图像变换的影响),将待处理的原始图像转换成响应的唯一标准形式(该图像对平移,旋转,缩放等仿射变换具备不变特性)基于矩的图像归一化过程包括4个步骤:坐标中心化,x-shearing归一化,缩放归一化以及旋转归一化】

而Lindeberg早在1994年就发现高斯差分函数(Difference of Gaussian ,简称DOG算子)与尺度归一化的高斯拉普拉斯函数技术分享非常近似。其中技术分享技术分享的关系可以从如下公式推导得到:

技术分享

利用差分近似代替微分,则有:

  技术分享                 

因此有

技术分享

其中k-1是个常数,并不影响极值点位置的求取。

技术分享

如图所示

技术分享

红色曲线表示的是高斯差分算子,而蓝色曲线表示的是高斯拉普拉斯算子。Lowe使用更高效的高斯差分算子代替拉普拉斯算子进行极值检测,如下:

技术分享

在实际计算时,使用高斯金字塔每组中相邻上下两层图像相减,得到高斯差分图像,如下图所示,进行极值检测。

技术分享

技术分享

空间极值点检测

关键点是由DOG空间的局部极值点组成的,关键点的初步探查是通过同一组内各DoG相邻两层图像之间比较完成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如图3.4所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。
技术分享
由于要在相邻尺度进行比较,如图右侧每组含4层的高斯差分金子塔,只能在中间两层中进行两个尺度的极值点检测,其它尺度则只能在不同组中进行。为了在每组中检测S个尺度的极值点,则DOG金字塔每组需S+2层图像,而DOG金字塔由高斯金字塔相邻两层相减得到,则高斯金字塔每组需S+3层图像,实际计算时S在3到5之间。
当然这样产生的极值点并不全都是稳定的特征点,因为某些极值点响应较弱,而且DOG算子会产生较强的边缘响应。


1)构造图像的尺度空间表示

2)在尺度空间中搜索极值点

3)由极值点建立描述特征向量

4)用特征描述向量进行相似度匹配

技术分享

3)由极值点建立描述特征向量

关键点定位

以上方法检测到的极值点是离散空间的极值点,以下通过拟合三维二次函数来精确确定关键点的位置和尺度,同时去除低对比度的关键点和不稳定的边缘响应点(因为DoG算子会产生较强的边缘响应),以增强匹配稳定性、提高抗噪声能力。

关键点定位的主要步骤有四个关键点,分别是:关键点的精确定位,消除边缘响应,有限差分法求导,三阶矩阵求逆

关键点的精确定位

以上方法检测到的极值点是离散空间的极值点,以下通过拟合三维二次函数来精确确定关键点的位置和尺度,同时去除低对比度的关键点和不稳定的边缘响应点(因为DoG算子会产生较强的边缘响应),以增强匹配稳定性、提高抗噪声能力。

【图像处理之图像的特征检测1】SIFT算法(未完待续)

标签:

原文地址:http://blog.csdn.net/u010369450/article/details/51689253

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!