sift算法

sift算法
sift算法

尺度不变的特征变换(SIFT)简介

1 SIFT简介

David G. Lowe在1999年提出了尺度不变的特征(Scale-Invariant Feature),用来进行物体的识别和图像匹配等[1],并于2004年进行了更深入的发展和并加以完善[2]。SIFT(Scale-Invariant Feature Transform)算子是一种图像的局部描述子,具有尺度、旋转、平移的不变性,而且对光照变化、仿射变换和3维投影变换具有一定的鲁棒性[1]。在Mikolajczyk对包括SIFT算子在内的十种局部描述子所做的不变性对比实验中,SIFT及其扩展算法已被证实在同类描述子中具有最强的健壮性[3]。

SIFT算法的主要思想是在尺度空间寻找极值点,然后对极值点进行过滤,找出稳定的特征点。最后在每个稳定的特征点周围提取图像的局部特性,形成局部描述子并将其用在以后的匹配中。SIFT算法是基于Lindeberg[4]的理论解决了尺度不变性的问题,本文会对尺度空间理论做一些介绍。

SIFT特征除具有前面所述的优点外,还具有很好的独特性,适于在海量特征数据库中进行快速、准确的匹配;另外,算法产生的特征点在图像中的密度很大,速度可以达到实时要求;由于SIFT特征描述子是向量的形式,它可以与其他形式的特征向量进行联合。SIFT的应用十分广泛,包括目标识别、机器人视觉、图像检索、图像拼接、3D建模、手势识别、视频跟踪和运动匹配等。

2 尺度空间理论

SIFT算法提取的特征点具有尺度不变性,也就是说,同一物体在图片上不论尺度大小,都能根据SIFT算法提取到相同的特征点。这种尺度不变性是根据尺度空间理论得来的。

Lindeber g在其1991年发表的博士毕业论文[4]中系统的论述了尺度空间理论。从有关尺度的问题提出开始,他给出了尺度空间的定义,并对尺度空间的转换给出了一些约束。然后用一系列的数学定理形式化的描述了尺度空间以及得到尺度空间所用的核函数应具备的种种性质。他给出表示尺度空间的方法,最后展示了尺度空间一些应用的示例。1994年,Lindeberg在[5]中更加全面、更加系统的论述了尺度空间理论。在2008年,“尺度空间”这一名词,已被列入《计算机科学与工程百科全书》[6]。

2.1 问题提出

在计算机中,一幅图像通常是用像素矩阵来表示的,每个像素拥有整数类型的灰度级,人理解和解释用这种方式表示的图像是很容易的一件事情。但是,如果每个灰度级用小数来表示,人就不容易理解图像。如今使用的矩阵表示法,图像中所蕴含的信息是隐式的。也就是说,人眼从图像中分辨出的有意义信息是隐式的,由于这些信息没有明确的表示出来,计算机并不能感知。对于计算机来说,一个基本的问题是一副图片中哪些点是相互关联的以及哪些点对应着图片场景中的一个物体。这就是原始分组和知觉组织的问题。从认知学的角度讲,在一幅图像中,即使对一个事物没有概念,或者并不熟悉它,人仍然能够感知此物体的结构。对于人脑来说,即使不知道为什么,也能推测场景中什么是重要的,什么仅是背景而已。

想要得知图像中哪些是有意义的,必须先要明确这样一个问题:在一幅图像中,只有在一定的尺度范围内,一个物体才有意义。举一个例子,树枝这个概念,只有在几厘米到几米的距离去观察它,才能感知到它的确是树枝;如果在微米级或者千米级去观察,就不能感知到树枝这个概念了,这样的话可以感知到的是细胞或者是森林的概念。

因而,如果想要描述现实世界的结构,或者将三维物体映射到二维的图像上去,多尺度表示将会至关重要。多尺度表示的概念很容易理解,举例说明,绘制地图时会有比例尺的概念。世界地图中就只能够显示大洲大洋,以及较大的地域和国家;而一个城市地图,甚至可以详细的显示出每条街道。

这里需要强调一点,事物是实实在在的存在的,但是通过图像这个媒介,观察者可以感知到的概念是不同的。

2.2 提出解决办法

2.2.1 多尺度表示

为了使图像中的信息由只有人类可感知的隐式信息,成为计算机可表示的显式信息,可以采用“多尺度表示”(Multi-scale Representation)的图像表示法来解决。在进行图像处理和图像理解时,从图像中提取何种信息,对图像进行何种操作,都是要考虑的基本问题。为了有效的回答这些基本问题,可以对图像分阶段处理,前一阶段处理得到的信息可供后续的处理使用。对于第一阶段的处理,有个基本的约束——处理之前并不知道在图像的场景中到底要提取什么内容;而且,处理所得的特征相对于各种变换(例如光照的变化,图像的尺寸以及视角的变化)要具有鲁棒性。

多尺度表示事先并不知道到底要使用哪些尺度,所以要计算得出所有的尺度以供后面的步骤使用。一个多尺度表示的示意图如图1所示。

图1. 一个多尺度表示的示意图。多尺度表示是用一个有序的信号序列来表示原始图像,序列中

的每个信号都在不同尺度上[5]。

多尺度表示的思想是,将原始信号“嵌入”到采用一个单参数变换得到的一系列信号中去,变换得到的每个信号对应于单参数族中的一个参数(例如图1中t)。一个重要的要求是,多尺度表示中的较粗尺度应该是较细尺度的简化,而且较粗尺度是通过某种固定的方式,由较细尺度图像经过平滑得到。要满足这个性质,可以有多种实现方式。但是一点不变,那就是高斯函

也就是说多尺度表示时丆都会有平滑这一步

数是唯一可用的平滑函数。

实现多尺度表示有多种方式,比如,早期会采用四分树或者八分树,以及图像金字塔。金字塔是结合降采样操作和平滑操作的一种图像表示方式。它的一个很大的好处是,自下而上每一层的像素数都不断减少,这会大大减少计算量;而缺点是自下而上金字塔的量化变得越来越

粗糙,而且速度很快。(需要强调的是,这里的金字塔构造方法和小波金字塔的构造方法是类似的,对某一层的图像进行平滑之后,再做降采样,平滑目的是为了降采样后的像素点能更好的代表原图像的像素点,与多尺度表示中的平滑完全不是一个目的)。图2是金字塔表示法的一个示例。

图2. 金字塔表示法[5]

2.2.2 尺度空间

上面提到的四分树或者八分树以及金字塔表示法,在获得多尺度时所采取的步骤是相当粗略的,尺度与尺度之间的“间隔”太大。而这里要提到的“尺度空间”(Scale-Space)表示法是多尺度表示的另外一种有效方法,它的尺度参数是连续的,并且所有尺度上空间采样点个数是相同的(实际上,一个尺度上得到的就是一幅图像,尺度空间采样点也就是该尺度上图像的像素点。也就是说,尺度空间表示法在各个尺度上图像的分辨率都是一样的)。尺度空间表示的主要思想是,由原始信号(例如一幅图像)生成一系列信号,并用这些信号来表示原始信号,这个过程中,精细尺度的信息被逐步的平滑掉(可以认为是细节信息被丢弃),如图3所示。作为对比,图4显示了尺度空间表示法与金字塔表示法直观上的比较。

图3. 左边的一维信号自下而上被逐步平滑,细节信息逐渐丢失。(1983,Witkin)。

尺度空间表示金字塔表示

图4. 尺度空间表示和金字塔表示的对比[5]。由此也可以形象的看出多尺度和多分辨率的区别。

多尺度在所有尺度上像素数是相同的,细节通过平滑逐步丢失。

要注意的是,并不是所有的尺度函数都可以用于生成尺度空间。因为一个很重要的问题是,从精细尺度到较粗糙的尺度的变换过程中,信息被逐渐的简化和削弱。也就是说,较粗尺度不

可能产生较细尺度中没有的特征。Koenderink[7](1984)和Lindeberg[8](1994)已经证明,在一些合理的约束之下,高斯函数是唯一的尺度空间的平滑核函数[7],而且是唯一的线性平滑核函数[8]。

产生尺度空间的公式可以表示如下:

(1)公式(1)表示,以t作为尺度参数,在整个定义域上用二维高斯核与输入图像做卷积,得到与t对应的尺度(即在该尺度上的一副图像)。也可以采用与之等价的操作:

(2)

公式(2)采用了物理学中著名的热扩散公式,热扩散公式描述了在均匀介质中,热量是如何向各个方向均匀传导的。注意到(2)式右边是拉普拉斯算子的形式,拉普拉斯算子是各向同性的,这恰好符合热传导的特性。

3 SIFT方法介绍

SIFT特征的优点在前面已经做了说明,下面将对SIFT方法做详细的介绍。SIFT算法有以下几个步骤:

1.检测尺度空间的极值点。

2.抽取稳定的关键点。

3.为每个关键点指定一个或者多个方向。

4.生成特征点描述子。

3.1 相关工作

采用特征点进行图像匹配可以追溯到1981年,Moravec[9]采用角点检测做立体匹配。1988年,Harris和Stephens[10]改进了Moravec的检测器,使检测到的特征更加稳定。1992年,Harris[11]显示了他的角点检测器在运动跟踪和3维重构方面的优势,从此之后,角点检测方法被广泛的使用。但是角点检测有两个问题,一是不但可以检测出角点,而且对边缘也十分敏感;二是它

不是尺度无关的方法。焦点检测最初的应用多在于运动跟踪和立体匹配方面,后来Zhang 等人

[12]在1995年实现了图像角点的匹配。他们使用了角点邻域的关联窗来寻找可能的匹配。 1997年Schmid 和Mohr[13]做出了开创性的工作,他们采用图像的局部特征进行图像匹配,使得一个特征可以和一个大的图像库中的图像做匹配。他们同样采用Harris 角点,但不同的是,他们开创性的使用了旋转不变的、图像局部区域的描述子。

Harris 角点检测对尺度变化十分敏感,Lowe 在1999年实现了局部特征的尺度无关性,并且他提出了新的局部描述子,这种描述子更具独特性和鲁棒性。

最近,有很多工作致力于使局部特征对仿射变换具有不变性:Baumberg, 2000[14]; Tuytelaars and Van Gool, 2000[15]; Mikolajczyk and Schmid, 2002[16]; Schaffalitzky and Zisserman, 2002[17]; Brown and Lowe, 2002[18]。

3.2 尺度空间的极值检测

提取尺度不变的特征点,其主要思想是提取的特征点出现在任何一个尺度上。这样不论图像的尺度如何变化,总能够提取出这种特征点。检测尺度无关的特征点可以通过搜索所有可能的尺度,这可以基于尺度空间理论来解决。

前面已经提到,在一些合理的假设之下,高斯函数是得到图像尺度空间唯一可用的核函数。将图像的尺度定义为一个函数),(y x I ),,(σy x L ,它由高斯函数),,(σy x G 和图像卷积得到:

),(y x I ),,(σy x L = ),,(σy x G * ,

),(y x I

为了在尺度空间中高效的检测稳定关键点的位置,[1][2]提出在高斯差分函数与图像卷积得到的空间),,(σy x D 中寻找极值点,

),,(σy x D = (),,(σk y x G - ),,(σy x G ) *

),(y x I = ),,(σk y x L - ),,(σy x L 。 (3)

其中,相邻两个尺度由一个常数k 分开。

选择这个公式有两个原因。一是这个公式的计算是省时的,因为要描述尺度空间中的特征点,就必须计算输入图像的尺度L ,而这里计算D 时,仅需要计算相邻尺度函数的差值。另外一个原因是函数D 的性质与尺度归一化的拉普拉斯高斯函数——即很相近[8]。而Mikolajczyk 在实验中表明,的极大值和极小值能够产生比其他函数

(包括梯度,Hessian ,Harris 角点函数)更加稳定的特征。

G 22?σG 22?σ

D 和的关系可由以下公式说明,

G 22?

σ

该公式是热扩散公式的另一种表示形式,公式左边的项可以用近似的方法计算:

所以可得:

从公式可以看出,D 和的形式是类似的。由于拉普拉斯函数是尺度无关的,因而高斯差分函数也是尺度无关的。对于所有尺度而言,k 都是一个常数,所以使用D 不会影响极值的选取。当k 趋向于1的时候,误差会越来越小。但是实验表明,即使k 值不接近1(例如k 取G 22?σ2),对极值的选取也没有多大影响。

3.2.1 计算高斯差分图像

前面已经论述,为了求尺度无关的特征点,首先需要计算相邻尺度图像的差分,得到一系列图像并在该图像空间中求极值点。采用金字塔可以高效的计算高斯差分图像,如图5所示:

图5. 构造金子塔,计算高斯图像的差分。 既进行卷积又要进行降采样形成金字塔

金子塔自下而上分为多层,在第一层中,对原始图像不断用高斯函数卷积,得到一系列逐渐平滑的图像。在这一层中,相邻的高斯图像差分得到高斯差分图像。这一组进行完毕后,从中抽取一幅图像A 进行降采样,得到图像B 的面积变为A 的1/4,并将B 作为下一层的初始图像,

重复第一层的过程。选取A 的原则是,得到A 所用的尺度空间参数σ为初始尺度空间参数的2倍。设k = ,在s 个尺度中寻找极值点,则每层要有s+3幅图像,生成s+2幅高斯差分图像。如图6所示:

s /12

(1)

(2)

图6. (1)为图像金字塔,

(2)为生成的高斯差分图像。

通过实验,得到s 、0σ的经验值分别为3和1.6*(*为乘号)。也就是说,k 取。

3/123/123.2.2 计算极值点

上一步中已经生成了高斯差分图像,这一步中要计算该空间中的极值点。如图7所示:

留下了边缘信息

图7. 计算极值点。每一幅高斯差分图像中的一个像素点,要和它所在图像的八邻域像素比较,而且要和它所在图像的上一层和下一层的各九个邻近的像素点比较。 有一个问题是到底要在多少个尺度中寻找极值点,即如何确定s 值。实验表明,s 取3是较好的选择。如果s = 3,则需要5幅高斯差分图像才可以。这里的计算是高效的,因为大多数情况下,只需要几步比较,就可以排除一个像素点,认为它不是极值。 3.3 抽取稳定的关键点 上一步已经求出了极值点,现在要对这些极值点进行筛选,去除不稳定的点,以增强特征

点匹配时的稳定性、提高抗噪声能力。不稳定的点包括低对比度的点和边缘上的点。同时,由于在金子塔中存在降采样的图像,在这些图像中提取的极值点在原始输入图像中到底在什么位

置,也是一个问题。下面将提出上面两个问题的解决方案。

对于某一个尺度上求取的极值点,采用一个3维的2次函数求该极值点在原图像上的位置,并去除低对比度的极值点。首先在某极值点A 对),,(σy x D 进行泰勒展开:

(4) 其中,是到点A 的偏移量。对(4)式求X 的偏导数,并令偏导为零,得到 T y x X ),,(σ=

(5) 如果x )大于0.5,也就意味着这个极值点和另一个采样点(图像中的另一个像素)离得更近。采用插值法求得极值点位置的估计值。

低对比度的点和边缘上的点采样变了位置也

就变了

同时,可以利用)(x D )

去除低对比度的点。将公式(5)带入公式(4)得

通过观察实验结果得出,)(x D )绝对值小于0.03的极值点都将被丢弃。

为了得到稳定的极值点,还要去除边缘的影响,因为边缘上的极值点抗噪性较差。曲面上每个点(非平点)都有两个主方向,并且沿这两个主方向的法曲率(即两个主曲率)分别是曲面在该点法曲率的最大值和最小值。在边缘上的极值点,垂直于边缘的方向上,法曲率最大,沿边缘的方向上,法曲率最小。如果极值点分布在边缘上,该点的法曲率最大值和最小值之比(即两个主曲率之比),一般情况下要比非边缘点的比值大。根据这种思想,我们可以设一个比值的阈值,当比值大于这个阈值就认为极值点在边缘上。

可以采用近似的方法来求主曲率的比值。首先计算待测极值点的海瑟矩阵:

(6)

其中微分可以通过计算邻近点的差值来近似计算。H 的特征值和D 的主曲率对应成比例,这里我们只需要计算H 的较大特征值与较小特征值的比例即可。设α是较大的特征值,β是较小的特征值,由矩阵性质知:

其中用到了矩阵的迹和行列式。通常这里的行列式不会是负值,如果出现负值的情况,即两个主曲率不同号,我们将丢弃这个点,不将其视为极值点。设r=α/β,我们可得:

当r ≥1,是r 的单调递增函数,所以要计算主曲率的比值(即r )是否在某阈值之下,

只需要判断上式左边的项是否在阈值之下即可。实验表明,阈值通常选择r = 10。

r r /)1(2+

3.4 为关键点指定方向

SIFT 特征的一个关键的特性是旋转不变性,实现旋转不变的基本思想是采用“相对”的概念。为关键点赋一个方向,定义的关键点描述子是相对于这个方向的,因而可以实现匹配时图像的旋转无关性。

为了实现尺度无关,根据关键点所在的尺度选择与该尺度最相近的高斯平滑图像L 。对于L 上的每个点,计算梯度和方向:

),(y x L

以关键点为中心,划定一个邻域,利用所有在此区域内的点的梯度形成一个方向直方图。直方图的横坐标是梯度方向,共36项,每项代表了10度的范围;纵坐标是梯度大小,对于归到横坐标上任一项内所有的点,将其梯度大小相加,其和作为纵坐标。如图8所示:

图8. 方向直方图

从直方图中选出纵坐标值最大的一项的方向作为该关键点的主方向。如果存在其他方向,纵坐标的大小大于主方向纵坐标大小的80%,也将其作为该关键点的方向。特征点有多个方向的情况下,实际上是在此位置上有多个关键点,他们的方向不同。

另外,为了获得更好的稳定性,可以对关键点邻域的梯度大小进行高斯加权。有方法改进了采用直方图指定方向的方式,改用PCA 求关键点的主方向。

本页已使用福昕阅读器进行编辑。福昕软件(C)2005-2010,版权所有,仅供试用。

3.5 局部描述子

前面已经为关键点赋予了图像位置、尺度以及方向,这一步将根据关键点周围的局部特性计算一个特征描述子。这个描述子还需要对仿射变换、光照变换等具有一定的鲁棒性。

如图9所示,在关键点周围取一个邻域,并对其中点的梯度做高斯加权。这个邻域分为四个子区域,每个子区域取八个方向,生成图8所示的相同形式的直方图。

图9. 图中显示了8x8的像素矩阵,以及圆形的邻域,邻域被划分为2x2个子区域,每个子区域

形成一个八方向的梯度直方图。

实际上,在实验中使用了16x16的像素区域,并且邻域划分为4x4个子区域。每个子区域生成一个描述子,一个描述子中涉及8个方向。所以每个关键点有4x4x8 = 128维。

这里还用到一些生理学知识,一个生物视觉模型尤其是初级视觉皮层中的复杂神经细胞的工作方式。复杂神经细胞对梯度的方向和空间频率的区分十分敏感,但对视网膜上梯度的位置不作十分精确的区分,允许位置做稍许改变。1997年Edelman,Intrator和Poggio根据这种模型假设复杂神经细胞在视角发生一定变化时,也能够认为物体匹配并识别出3维物体。

为了对光线变化更具鲁棒性,描述子都被归一化到单位长度。如果图像的对比度发生变化,每个像素值都会乘上一个数值,归一化后,对比度的影响被消除了。对于图像亮度的变化,每个像素值都会加上一个数值,然而这对计算的梯度是没有影响的。因此,该描述子对亮度的仿射变换是鲁棒的。对于非线性的光线变化,梯度大小会受影响,但是梯度的方向不会有大的变化,我们可以根据前面描述的生物学原理解决此问题。在128维的单位向量中,滤除梯度大小大于0.2的梯度值,然后重新归一化。也就是说,梯度大小的作用被虚弱了,而方向信息的作用被强化了。0.2是实验得出的经验值。

3.6 特征匹配和特征应用

至此,SIFT 特征提取的方法已经介绍完毕,下面将介绍特征匹配以及进行对象识别等应用所用到的方法和技巧。这一部分,用到的方法是十分巧妙的。

为了进行对象识别,首先将每个特征与特征数据库进行匹配,其中,数据库里的特征是从训练图像中提取的。这样得到的很多成功匹配是错误的,因为有些特征并不具有很强的独特性,或者有些特征是从背景中提取的。为了增大匹配成功的概率,首先识别出在一个对象上的特征点的聚类,然后通过具体的几何模型查看聚类是否正确。

3.6.1 特征匹配

一个特征在特征数据库中匹配可以使用最近邻的方法,而最近邻定义为特征向量的欧氏距离。然而如上面所述,会有很多的误匹配出现。所以没有和数据库中特征很好的匹配的特征点可以被忽略掉。考虑一种方法是对最近邻的欧氏距离设定一个全局的阈值,实验表明这种方法的效果并不是很好,因为有些特征具有很强的区分性,而另一些则要弱一些,所以全局的阈值不合适。另一种方法是利用最近邻和次最近邻的相对值,这种相对的做法更趋合理,在旋转不变性中也用到了相对的方法。

如果同一场景有多幅训练图像,某一特征点A 的次最近邻定义为——数据库中来自不同对象的特征点B ,在不同的对象中,B 是A 的最近邻;也就是说,B 是所有误匹配中A 的最近邻。对于正确匹配,最近邻要比错误匹配中的最近邻大很多才能提供稳定的匹配效果。对于错误匹配时的最近邻,同样的距离下也会有很多其他的误匹配。我们可以认为次最近邻匹配在一定程度上提供了错误匹配的密度,也提供了区分性差的特征的一个样本。

图10显示了随着最近邻和次最近邻的比值的变化,得出的正确匹配和错误匹配的概率密度。可以看出两个曲线的峰值位置相差很大,在正确匹配概率达到峰值时,错误匹配的概率很小。这对我们设定阈值是非常有利的。

本页已使用福昕阅读器进行编辑。福昕软件(C)2005-2010,版权所有,仅供试用。

图10. 随着最近邻和次最近邻比值(Ratio)的变化,得出的正确匹配和错误匹配概率密度函数曲线。实验采用了包含40,000个特征点的数据库。

3.6.2 寻找最近邻

在进行大库的匹配时,用穷举法进行最近邻搜索会带来大量的时间消耗。采用k-d tree可以加速搜索,但是效果还不是特别明显。因此采用Beis和Lowe[19]在1997年提出的Best-Bin-First (BBF)的算法。这个算法较大的提高了运行速度,而且以很大的概率找到最近邻。BBF算法实际上是改变了k-d tree算法的搜索顺序,以此来尽快的搜索到最近邻。1993年Arya和Mount[20]首先研究了搜索顺序,在1998年Arya等人[21]又对计算复杂度做了更深入的研究。算法中使用了基于堆的优先队列来高效的决定搜索顺序。当搜索到一定个数的近邻时,就可以停止算法。实验表明BBF算法性能很好,因为我们仅考虑Ratio(最近邻距离/次最近邻距离)< 0.8的情形,所以不必花费大量时间在很多相似的距离中寻找最近邻上面。

3.6.3 采用霍夫变换进行聚类

为了提高对象识别的性能,我们希望用最少数目的匹配特征来辨识对象。一幅典型的图片上可以提取2,000多个SIFT特征点,这些特征点可能来自不同的对象,也可能来自背景。若采用3.6.1的方法只保留Ratio < 0.8的匹配,可以去掉大部分由于背景点所产生的错误匹配,但仍

然无法解决来自不同对象的误匹配。考虑采用霍夫变换[22]对同一个物体中的特征进行聚类。首先将目标几何约束模型H的参数离散化,然后通过匹配对建立投票空间,按照一定阈值搜索投票空间中的极大值,所对应的匹配对认为是正确的匹配。

图11显示采用Ratio阈值法以及进一步采用霍夫变换聚类所获得的实验效果。从图中可以看出,最终结果十分理想。

(a)(b)

(c)

(d)

(e)

图11. (a)(b)为原始采集的两幅图像,(c)为直接采用最近邻的方法进行匹配的结果,(d)为采用距离之比的方法改进后的匹配结果,(e)为在上一步的基础上再进行聚类后的匹配结果。

正如前面所叙述,SIFT特征的应用是十分广泛的。其他各方面的应用,都是在上述方法的基础上进行的拓展和集成。这里就不再赘述了。

4 总结与思考

SIFT方法与其说是一种算法,不如说是一套图像特征提取和匹配的方案。SIFT全称为“尺度无关的特征转换”,因而SIFT特征的尺度无关性是其最大特点。实现尺度无关的方法基于尺度

空间理论,该理论经过多人尤其是Lindeberg 的发展已经相对成熟。而尺度无关也是SIFT 方法中最具理论背景的一部分,其实SIFT 作为一个方法体系,其提取的特征还具有旋转不变性、对关照、仿射变换等具有鲁棒性的特点。

如果说尺度无关性部分是最具理论深度的解决方案,实现其它特点所用的方法则是十分巧理论法中包含很多值得借鉴的知识和技巧。SIFT 的成功有赖于前人的积累,Lowe 等学妙和灵活的。在抽取稳定特征点部分,采用了一个3维二次函数对极值点进行拟合,以求极值点的确切位置,并以此滤除了低对比度的点;用海瑟矩阵求取主曲率比值的近似,去除了沿边缘分布的点。之前提取图像特征点的方法,例如Harris 角点检测,或者对尺度敏感或者对边缘也比较敏感,而SIFT 方法则全部解决了这些问题。在为关键点指定方向部分,为了实现旋转不变性而采用了“相对”的思想,并定义了具有很强区分性的描述子。大量的实验证明了这种描述子的有效性,描述子采用了关键点周围点的梯度信息,这种方法未见有深厚的理论基础,所以这部分或许还有改进的余地。在特征匹配部分,最原始的NN 方法出现了很多误匹配,但Lowe 等人提出了很多行之有效且十分巧妙的方法达到了很好的匹配效果。一方面,求最近邻距离与误匹配最近邻(即次最近邻)距离之比,并设定阈值排除大部分由于背景产生的误匹配;另一方面,采用基于霍夫变换的聚类,极大的排除了来自其他对象的误识别。

SIFT 之所以如此流行([1,2]共被引用6,000余次,而且有广泛应用),一方面是由于用到的基础较为成熟,在前人的基础上进行了创新、改进和集成;另一方面主要是由于该方法效果很好,对之前方法关键性的不足做了有效的改进;其他方面,比如公开源码等开放作风也获得了诸多青睐。

总之,SIFT 方者在机器视觉以及计算机的其他领域的广泛积累和较深造诣,以及思考出的一系列行之有效的、颇具智慧的方法。可以利用SIFT 的思想或者方法,在诸多领域加以应用,相信能够在一定程度上解决很多问题。然而,任何方法都不是完美的,就SIFT 方法本身来说,也有其不完美之处,比如对关照、仿射变换并不是完全鲁棒,对弹性形变更是无法适应,这些都是有待解决的问题。

[1] David G. Lowe, Object recognition from local scale-invariant features, International Conference

[2] eypoints, International

[3] ation of local descriptors. IEEE Transaction

[4] al Sketch.PhD thesis, Royal

[5] Series in Engineering and

[6] and Sons,

2008.

[7] cs , 50:363-396, 1984.

les.

[9] ternational Joint Conference on Artificial

[10] ge detector. Fourth Alvey Vision

[11] Vision, A. Blake and A. Yuille (Eds.), MIT

[12]geras, O., and Luong, Q.T. A robust technique for matching two

[13]l grayvalue invariants for image retrieval. IEEE Trans. on Pattern

[14]arated views. In Conference on

.

[15]s.

[16] or. In European

[17] “How

on Computer Vision, Corfu, Greece, pp. 1150-1157, September 1999.

Darid G .Lowe, Distinctive Image Features from Scale —invariant K Journal of Computer Vision , 60(2):91~110, 2004.

K. Mikolajczyk and C. Schmid. A performance evalu on Pattern Analysis and Machine Intelligence , 27:1615-1630, 2005.

T. Lindeberg. Discrete Scale-Space Theory and the Scale-Space Prim Institute of Technology, Department of Numerical Analysis and Computing Science, Royal Institute of Technology, S-100 44 Stockholm, Sweden,May 1991.

T. Lindeberg. Scale-Space Theory in Computer Vision. International Computer Science . Kluwer Academic Publishers, Dordrecht, the Netherlands, 1994.

Encyclopedia of Computer Science and Engineering (Benjamin Wah, ed), John Wiley V ol-ume IV , pages 2495-2504, Hoboken, New Jersey,

https://www.360docs.net/doc/ec9430385.html,/10.1002/9780470050118.ecse609, Sep Koenderink, J.J. The structure of images. Biological Cyberneti [8] T. Lindeberg,. Scale-space theory: A basic tool for analysing structures at different sca Journal of Applied Statistics , 21(2):224-270, 1994.

Moravec, H. Rover visual obstacle avoidance. In In Intelligence , Vancouver, Canada, pp. 785-790, 1981.

Harris, C. and Stephens, M. A combined corner and ed Conference , Manchester, UK, pp. 147-151, 1988.

Harris, C. Geometry from visual motion. In Active Press, pp. 263-284, 1992.

Zhang, Z., Deriche, R., Fau uncalibrated images through the recovery of the unknown epipolar geometry. Artificial

Intelligence , 78:87-119, 1995.

Schmid, C., and Mohr, R. Loca Analysis and Machine Intelligence , 19(5):530-534, 1997.

Baumberg, A. Reliable feature matching across widely sep Computer Vision and Pattern Recognition , Hilton Head, South Carolina, pp. 774-781, 2000 Tuytelaars, T., and Van Gool, L. Wide baseline stereo based on local, affinely invariant region In British Machine Vision Conference , Bristol, UK, pp. 412-422, 2000.

Mikolajczyk, K., and Schmid, C. An affine invariant interest point detect Conference on Computer Vision (ECCV), Copenhagen, Denmark, pp. 128-142, 2002.

Schaffalitzky, F., and Zisserman, A. Multi-view matching for unordered image sets, or

do I organize my holiday snaps?”, In European Conference on Computer Vision , Copenhagen, [18] ariant features from interest point groups. In British Machine

[19] ate nearest-neighbour search in

erto [20]pproximate nearest neighbor queries in fixed dimensions. In

993.

[21][22]54, 1962. Denmark, pp. 414-431, 2002.

Brown, M. and Lowe, D.G. Inv Vision Conference , Cardiff, Wales, pp. 656-665, 2002.

Beis, J. and Lowe, D.G. Shape indexing using approxim highdimensional spaces. In Conference on Computer Vision and Pattern Recognition , Pu Rico, pp. 1000-1006, 1997.

Arya, S., and Mount, D.M. A Fourth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA’93), pp. 271-280, 1 Arya, S., Mount, D.M., Netanyahu, N.S., Silverman, R., and Wu, A.Y. An optimal algorithm

for approximate nearest neighbor searching . Journal of the ACM, 45:891-923, 1998.

Hough, P.V.C. Method and means for recognizing complex patterns. U.S. Patent 30696

SIFT算法原理

3.1.1尺度空间极值检测 尺度空间理论最早出现于计算机视觉领域,当时其目的是模拟图像数据的多尺度特征。随后Koendetink 利用扩散方程来描述尺度空间滤波过程,并由此证明高斯核是实现尺度变换的唯一变换核。Lindeberg ,Babaud 等人通过不同的推导进一步证明高斯核是唯一的线性核。因此,尺度空间理论的主要思想是利用高斯核对原始图像进行尺度变换,获得图像多尺度下的尺度空间表示序列,对这些序列进行尺度空间特征提取。二维高斯函数定义如下: 222()/221 (,,)2x y G x y e σσπσ-+= (5) 一幅二维图像,在不同尺度下的尺度空间表示可由图像与高斯核卷积得到: (,,(,,)*(,)L x y G x y I x y σσ)= (6) 其中(x,y )为图像点的像素坐标,I(x,y )为图像数据, L 代表了图像的尺度空间。σ称为尺度空间因子,它也是高斯正态分布的方差,其反映了图像被平滑的程度,其值越小表征图像被平滑程度越小,相应尺度越小。大尺度对应于图像的概貌特征,小尺度对应于图像的细节特征。因此,选择合适的尺度因子平滑是建立尺度空间的关键。 在这一步里面,主要是建立高斯金字塔和DOG(Difference of Gaussian)金字塔,然后在DOG 金字塔里面进行极值检测,以初步确定特征点的位置和所在尺度。 (1)建立高斯金字塔 为了得到在不同尺度空间下的稳定特征点,将图像(,)I x y 与不同尺度因子下的高斯核(,,)G x y σ进行卷积操作,构成高斯金字塔。 高斯金字塔有o 阶,一般选择4阶,每一阶有s 层尺度图像,s 一般选择5层。在高斯金字塔的构成中要注意,第1阶的第l 层是放大2倍的原始图像,其目的是为了得到更多的特征点;在同一阶中相邻两层的尺度因子比例系数是k ,则第1阶第2层的尺度因子是k σ,然后其它层以此类推则可;第2阶的第l 层由第一阶的中间层尺度图像进行子抽样获得,其尺度因子是2k σ,然后第2阶的第2层的尺度因子是第1层的k 倍即3 k σ。第3阶的第1层由第2阶的中间层尺度图像进行子抽样获得。其它阶的构成以此类推。 (2)建立DOG 金字塔 DOG 即相邻两尺度空间函数之差,用(,,)D x y σ来表示,如公式(3)所示: (,,)((,,)(,,))*(,)(,,)(,,)D x y G x y k G x y I x y L x y k L x y σσσσσ=-=- (7) DOG 金字塔通过高斯金字塔中相邻尺度空间函数相减即可,如图1所示。在图中,DOG 金字塔的第l 层的尺度因子与高斯金字塔的第l 层是一致的,其它阶也一样。

SIFT算法实现及代码详解

经典算法SIFT实现即代码解释: 以下便是sift源码库编译后的效果图:

为了给有兴趣实现sift算法的朋友提供个参考,特整理此文如下。要了解什么是sift算法,请参考:九、图像特征提取与匹配之SIFT算法。ok,咱们下面,就来利用Rob Hess维护的sift 库来实现sift算法: 首先,请下载Rob Hess维护的sift 库: https://www.360docs.net/doc/ec9430385.html,/hess/code/sift/ 下载Rob Hess的这个压缩包后,如果直接解压缩,直接编译,那么会出现下面的错误提示: 编译提示:error C1083: Cannot open include file: 'cxcore.h': No such file or directory,找不到这个头文件。 这个错误,是因为你还没有安装opencv,因为:cxcore.h和cv.h是开源的OPEN CV头文件,不是VC++的默认安装文件,所以你还得下载OpenCV并进行安装。然后,可以在OpenCV文件夹下找到你所需要的头文件了。 据网友称,截止2010年4月4日,还没有在VC6.0下成功使用opencv2.0的案例。所以,如果你是VC6.0的用户请下载opencv1.0版本。vs的话,opencv2.0,1.0任意下载。 以下,咱们就以vc6.0为平台举例,下载并安装opencv1.0版本、gsl等。当然,你也可以用vs编译,同样下载opencv(具体版本不受限制)、gsl等。 请按以下步骤操作: 一、下载opencv1.0 https://www.360docs.net/doc/ec9430385.html,/projects/opencvlibrary/files/opencv-win/1.0/OpenCV_1.0.exe

SIFT算法英文详解

SIFT: Scale Invariant Feature Transform The algorithm SIFT is quite an involved algorithm. It has a lot going on and can be come confusing, So I’ve split up the entire algorithm into multiple parts. Here’s an outline of what happens in SIFT. Constructing a scale space This is the initial preparation. You create internal representations of the original image to ensure scale invariance. This is done by generating a “scale space”. LoG Approximation The Laplacian of Gaussian is great for finding interesting points (or key points) in an image. But it’s computationally expensive. So we cheat and approximate it using the representation created earlier. Finding keypoints With the super fast approximation, we now try to find key points. These are maxima and minima in the Difference of Gaussian image we calculate in step 2 Get rid of bad key points Edges and low contrast regions are bad keypoints. Eliminating these makes the algorithm efficient and robust. A technique similar to the Harris Corner Detector is used here. Assigning an orientation to the keypoints An orientation is calculated for each key point. Any further calculations are done relative to this orientation. This effectively cancels out the effect of orientation, making it rotation invariant. Generate SIFT features Finally, with scale and rotation invariance in place, one more representation is generated. This helps uniquely identify features. Lets say you have 50,000 features. With this representation, you can easily identify the feature you’re looking for (sa y, a particular eye, or a sign board). That was an overview of the entire algorithm. Over the next few days, I’ll go through each step in detail. Finally, I’ll show you how to implement SIFT in OpenCV! What do I do with SIFT features? After you run through the algorithm, you’ll have SIFT features for your image. Once you have these, you can do whatever you want. Track images, detect and identify objects (which can be partly hidden as well), or whatever you can think of. We’ll get into this later as well. But the catch is, this algorithm is patented. >.< So, it’s good enough for academic purposes. But if you’re looking to make something commercial, look for something else! [Thanks to aLu for pointing out SURF is patented too] 1. Constructing a scale space Real world objects are meaningful only at a certain scale. You might see a sugar cube perfectly on a table. But if looking at the entire milky way, then it simply does not exist. This multi-scale nature of objects is quite common in nature. And a scale space attempts to replicate this concept

SIFT 特征提取算法详解

SIFT 特征提取算法总结 主要步骤 1)、尺度空间的生成; 2)、检测尺度空间极值点; 3)、精确定位极值点; 4)、为每个关键点指定方向参数; 5)、关键点描述子的生成。 L(x,y,σ), σ= 1.6 a good tradeoff

D(x,y,σ), σ= 1.6 a good tradeoff

关于尺度空间的理解说明:图中的2是必须的,尺度空间是连续的。在 Lowe 的论文中, 将第0层的初始尺度定为1.6,图片的初始尺度定为0.5. 在检测极值点前对原始图像的高斯平滑以致图像丢失高频信息,所以Lowe 建议在建立尺度空间前首先对原始图像长宽扩展一倍,以保留原始图像信息,增加特征点数量。尺度越大图像越模糊。 next octave 是由first octave 降采样得到(如2) , 尺度空间的所有取值,s为每组层数,一般为3~5 在DOG尺度空间下的极值点 同一组中的相邻尺度(由于k的取值关系,肯定是上下层)之间进行寻找

在极值比较的过程中,每一组图像的首末两层是无法进行极值比较的,为了满足尺度 变化的连续性,我们在每一组图像的顶层继续用高斯模糊生成了 3 幅图像, 高斯金字塔有每组S+3层图像。DOG金字塔每组有S+2层图像.

If ratio > (r+1)2/(r), throw it out (SIFT uses r=10) 表示DOG金字塔中某一尺度的图像x方向求导两次 通过拟和三维二次函数以精确确定关键点的位置和尺度(达到亚像素精度)?

直方图中的峰值就是主方向,其他的达到最大值80%的方向可作为辅助方向 Identify peak and assign orientation and sum of magnitude to key point The user may choose a threshold to exclude key points based on their assigned sum of magnitudes. 利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数,使算子具备 旋转不变性。以关键点为中心的邻域窗口内采样,并用直方图统计邻域像素的梯度 方向。梯度直方图的范围是0~360度,其中每10度一个柱,总共36个柱。随着距中心点越远的领域其对直方图的贡献也响应减小.Lowe论文中还提到要使用高斯函 数对直方图进行平滑,减少突变的影响。

SIFT算法C语言逐步实现详解

SIFT算法C语言逐步实现详解(上) 引言: 在我写的关于sift算法的前倆篇文章里头,已经对sift算法有了初步的介绍:九、图像特征提取与匹配之SIFT算法,而后在:九(续)、sift算法的编译与实现里,我也简单记录下了如何利用opencv,gsl等库编译运行sift程序。 但据一朋友表示,是否能用c语言实现sift算法,同时,尽量不用到opencv,gsl等第三方库之类的东西。而且,Rob Hess维护的sift 库,也不好懂,有的人根本搞不懂是怎么一回事。 那么本文,就教你如何利用c语言一步一步实现sift算法,同时,你也就能真正明白sift算法到底是怎么一回事了。 ok,先看一下,本程序最终运行的效果图,sift 算法分为五个步骤(下文详述),对应以下第二--第六幅图:

sift算法的步骤 要实现一个算法,首先要完全理解这个算法的原理或思想。咱们先来简单了解下,什么叫sift算法: sift,尺度不变特征转换,是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由David Lowe 在1999年所发表,2004年完善总结。 所谓,Sift算法就是用不同尺度(标准差)的高斯函数对图像进行平滑,然后比较平滑后图像的差别, 差别大的像素就是特征明显的点。 以下是sift算法的五个步骤: 一、建立图像尺度空间(或高斯金字塔),并检测极值点 首先建立尺度空间,要使得图像具有尺度空间不变形,就要建立尺度空间,sift算法采用了高斯函数来建立尺度空间,高斯函数公式为:

上述公式G(x,y,e),即为尺度可变高斯函数。 而,一个图像的尺度空间L(x,y,e) ,定义为原始图像I(x,y)与上述的一个可变尺度的2维高斯函数G(x,y,e) 卷积运算。 即,原始影像I(x,y)在不同的尺度e下,与高斯函数G(x,y,e)进行卷积,得到L(x,y,e),如下: 以上的(x,y)是空间坐标,e,是尺度坐标,或尺度空间因子,e的大小决定平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的e值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。 尺度,受e这个参数控制的表示。而不同的L(x,y,e)就构成了尺度空间,具体计算的时候,即使连续的高斯函数,都被离散为(一般为奇数大小)(2*k+1) *(2*k+1)矩阵,来和数字图像进行卷积运算。 随着e的变化,建立起不同的尺度空间,或称之为建立起图像的高斯金字塔。 但,像上述L(x,y,e) = G(x,y,e)*I(x,y)的操作,在进行高斯卷积时,整个图像就要遍历所有的像素进行卷积(边界点除外),于此,就造成了时间和空间上的很大浪费。 为了更有效的在尺度空间检测到稳定的关键点,也为了缩小时间和空间复杂度,对上述的操作作了一个改建:即,提出了高斯差分尺度空间(DOG scale-space)。利用不同尺度的高斯差分与原始图像I(x,y)相乘,卷积生成。 DOG算子计算简单,是尺度归一化的LOG算子的近似。 ok,耐心点,咱们再来总结一下上述内容: 1、高斯卷积 在组建一组尺度空间后,再组建下一组尺度空间,对上一组尺度空间的最后一幅图像进行二分之一采样,得到下一组尺度空间的第一幅图像,然后进行像建立第一组尺度空间那样的操作,得到第二组尺度空间,公式定义为 L(x,y,e) = G(x,y,e)*I(x,y)

SIFT算法分析

SIFT算法分析 1 SIFT 主要思想 SIFT算法是一种提取局部特征的算法,在尺度空间寻找极值点,提取位置,尺度,旋转不变量。 2 SIFT 算法的主要特点: a)SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性。 b)独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进 行快速、准确的匹配。 c)多量性,即使少数的几个物体也可以产生大量SIFT特征向量。 d)高速性,经优化的SIFT匹配算法甚至可以达到实时的要求。 e)可扩展性,可以很方便的与其他形式的特征向量进行联合。 3 SIFT 算法流程图:

4 SIFT 算法详细 1)尺度空间的生成 尺度空间理论目的是模拟图像数据的多尺度特征。 高斯卷积核是实现尺度变换的唯一线性核,于是一副二维图像的尺度空间定义为: L( x, y, ) G( x, y, ) I (x, y) 其中G(x, y, ) 是尺度可变高斯函数,G( x, y, ) 2 1 2 y2 (x ) 2 e / 2 2 (x,y)是空间坐标,是尺度坐标。大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。 为了有效的在尺度空间检测到稳定的关键点,提出了高斯差分尺度空间(DOG scale-space)。利用不同尺度的高斯差分核与图像卷积生成。 D( x, y, ) (G( x, y,k ) G( x, y, )) I ( x, y) L( x, y,k ) L( x, y, ) DOG算子计算简单,是尺度归一化的LoG算子的近似。图像金字塔的构建:图像金字塔共O组,每组有S层,下一组的图像由上一 组图像降采样得到。 图1由两组高斯尺度空间图像示例金字塔的构建,第二组的第一副图像由第一组的第一副到最后一副图像由一个因子2降采样得到。图2 DoG算子的构建: 图1 Two octaves of a Gaussian scale-space image pyramid with s =2 intervals. The first image in the second octave is created by down sampling to last image in the previous

sift算法详解

尺度不变特征变换匹配算法详解 Scale Invariant Feature Transform(SIFT) Just For Fun 张东东zddmail@https://www.360docs.net/doc/ec9430385.html, 对于初学者,从David G.Lowe的论文到实现,有许多鸿沟,本文帮你跨越。 1、SIFT综述 尺度不变特征转换(Scale-invariant feature transform或SIFT)是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由David Lowe在1999年所发表,2004年完善总结。 其应用范围包含物体辨识、机器人地图感知与导航、影像缝合、3D模型建立、手势辨识、影像追踪和动作比对。 此算法有其专利,专利拥有者为英属哥伦比亚大学。 局部影像特征的描述与侦测可以帮助辨识物体,SIFT特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关。对于光线、噪声、些微视角改变的容忍度也相当高。基于这些特性,它们是高度显著而且相对容易撷取,在母数庞大的特征数据库中,很容易辨识物体而且鲜有误认。使用SIFT特征描述对于部分物体遮蔽的侦测率也相当高,甚至只需要3个以上的SIFT物体特征就足以计算出位置与方位。在现今的电脑硬件速度下和小型的特征数据库条件下,辨识速度可接近即时运算。SIFT特征的信息量大,适合在海量数据库中快速准确匹配。 SIFT算法的特点有: 1.SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性; 2.独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配; 3.多量性,即使少数的几个物体也可以产生大量的SIFT特征向量; 4.高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;

SIFT算法与RANSAC算法分析

概率论问题征解报告: (算法分析类) SIFT算法与RANSAC算法分析 班级:自23 姓名:黄青虬 学号:2012011438 作业号:146

SIFT 算法是用于图像匹配的一个经典算法,RANSAC 算法是用于消除噪声的算法,这两者经常被放在一起使用,从而达到较好的图像匹配效果。 以下对这两个算法进行分析,由于sift 算法较为复杂,只重点介绍其中用到的概率统计概念与方法——高斯卷积及梯度直方图,其余部分只做简单介绍。 一. SIFT 1. 出处:David G. Lowe, The Proceedings of the Seventh IEEE International Conference on (Volume:2, Pages 1150 – 1157), 1999 2. 算法目的:提出图像特征,并且能够保持旋转、缩放、亮度变化保持不变性,从而 实现图像的匹配 3. 算法流程图: 原图像 4. 算法思想简介: (1) 特征点检测相关概念: ◆ 特征点:Sift 中的特征点指十分突出、不会因亮度而改变的点,比如角点、边 缘点、亮区域中的暗点等。特征点有三个特征:尺度、空间和大小 ◆ 尺度空间:我们要精确表示的物体都是通过一定的尺度来反映的。现实世界的 物体也总是通过不同尺度的观察而得到不同的变化。尺度空间理论最早在1962年提出,其主要思想是通过对原始图像进行尺度变换,获得图像多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取等。尺度空间中各尺度图像的模糊程度逐渐变大,能够模拟人在距离目标由近到远时目标在视网膜上的形成过程。尺度越大图像越模糊。 ◆ 高斯模糊:高斯核是唯一可以产生多尺度空间的核,一个图像的尺度空间,L (x,y,σ) ,定义为原始图像I(x,y)与一个可变尺度的2维高斯函数G(x,y,σ) 卷积运算 高斯函数: 高斯卷积的尺度空间: 不难看到,高斯函数与正态分布函数有点类似,所以在计算时,我们也是 ()()() ,,,,*,L x y G x y I x y σσ=()22221 ()(),,exp 22i i i i x x y y G x y σπσσ??-+-=- ? ??

SIFT算法和卷积神经网络算法在图像检索领域的应用分析

SIFT算法和卷积神经网络算法在图像检索领域的应用分析 1、引言 基于内容的图像检索是由于图像信息的飞速膨胀而得到关注并被提出来的。如何快速准确地提取图像信息内容是图像信息检索中最为关键的一步。传统图像信息检索系统多利用图像的底层特征,如颜色、纹理、形状以及空间关系等。这些特征对于图像检索有着不同的结果,但是同时也存在着不足,例如:颜色特征是一种全局的特征,它对图像或图像区域的方向、大小等变化不敏感,所以颜色特征不能很好的捕捉图像中对象的局部特征,也不能表达颜色空间分布的信息。纹理特征也是一种全局特征,它只是物体表面的一种特性,并不能完全反映物体的本质属性。基于形状的特征常常可以利用图像中感兴趣的目标进行检索,但是形状特征的提取,常常受到图像分割效果的影响。空间关系特征可以加强对图像内容的描述和区分能力,但空间关系特征对图像或者,目标的旋转、平移、尺度变换等比较敏感,并且不能准确地表达场景的信息。图像检索领域急需一种能够对目标进行特征提取,并且对图像目标亮度、旋转、平移、尺度甚至仿射不变的特征提取算法。 2、SIFT特征 SIFT(Scale-Invariant Feature Transform,尺度不变特征转换)是一种电脑视觉的算法,用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由David Lowe在1999年所发表,2004年完善总结。 局部特征的描述与侦测可以帮助辨识物体,SIFT特征是基于物体上的一些局部外观的兴趣点,与目标的大小和旋转无关,对于光线、噪声、些微视角改变的容忍度也相当高。使用SIFT特征描述对于部分物体遮蔽的侦测成功率也相当高,甚至只需要3个以上的SIFT 物体特征就足以计算出位置与方位。在现今的电脑硬件速度和小型的特征数据库条件下,辨识速度可接近即时运算。SIFT特征的信息量大,也适合在海量数据库中快速准确匹配。 SIFT算法的特点有: (1)SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变形,是非常稳定的局部特征,现在应用非常广泛。(仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并加上一个平移,变换为另一个向量空间。) (2)独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配; (3)多量性,即使少数的几个物体也可以产生大量的SIFT特征向量; (4)高速性,经优化的SIFT匹配算法甚至可以达到实时的要求; (5)可扩展性,可以很方便的与其他形式的特征向量进行联合。 SIFT算法可以解决的问题:目标的自身状态、场景所处的环境和成像器材的成像特性等因素影响图像配准/目标识别跟踪的性能。 而SIFT算法在一定程度上可解决:

SIFT算法实现原理步骤

SIFT 算法实现步骤 :1 关键点检测、2 关键点描述、3 关键点匹配、4 消除错配点 1关键点检测 1.1 建立尺度空间 根据文献《Scale-space theory: A basic tool for analysing structures at different scales 》我们可知,高斯核是唯一可以产生多尺度空间的核,一个图像的尺度空间,L (x,y,σ) ,定义为原始图像I(x,y)与一个可变尺度的2维高斯函数G(x,y,σ) 卷积运算。 高斯函数 高斯金字塔 高斯金子塔的构建过程可分为两步: (1)对图像做高斯平滑; (2)对图像做降采样。 为了让尺度体现其连续性,在简单 下采样的基础上加上了高斯滤波。 一幅图像可以产生几组(octave ) 图像,一组图像包括几层 (interval )图像。 高斯图像金字塔共o 组、s 层, 则有: σ——尺度空间坐标;s ——sub-level 层坐标;σ0——初始尺度;S ——每组层数(一般为3~5)。 当图像通过相机拍摄时,相机的镜头已经对图像进行了一次初始的模糊,所以根据高斯模糊的性质: -第0层尺度 --被相机镜头模糊后的尺度 高斯金字塔的组数: M 、N 分别为图像的行数和列数 高斯金字塔的组内尺度与组间尺度: 组内尺度是指同一组(octave )内的尺度关系,组内相邻层尺度化简为: 组间尺度是指不同组直接的尺度关系,相邻组的尺度可化为: 最后可将组内和组间尺度归为: ()22221 ()(),,exp 22i i i i x x y y G x y σπσσ??-+-=- ? ??()()(),,,,*,L x y G x y I x y σσ=Octave 1 Octave 2 Octave 3 Octave 4 Octave 5σ2σ 4σ8 σ 0()2s S s σσ= g 0σ=init σpre σ()() 2log min ,3O M N ??=-?? 1 12S s s σσ+=g 1()2s S S o o s σσ++=g 222s S s S S o o σσ+=g g 121 2(,,,) i n k k k σσσσ--L 1 2 S k =

遥感图像处理在汶川地震中的应用分析

遥感图像处理在汶川地震中的应用分析 摘要 随着卫星技术的快速发展,遥感技术被越来越广泛的应用于国民经济的各个方面。本文结合汶川地震中遥感技术的应用实例,系统阐述了遥感应用于应急系统中需要解决的一系列关键技术问题。并就数据获取、薄云去除、图像镶嵌、图像解译,以及灾后重建中的若干关键技术问题展开了分析。关键词:遥感;地震;应用;关键技术 1 引言 长期以来,人们不断遭受到各种自然灾害的侵害,如地震、火山、洪水等,同时,由人为因素导致的灾难也不断发生,如火灾、恐怖袭击等。这些灾害具备破坏性、突发性、连锁性、难预报性等特点,往往容易造成重大的人员伤亡和巨大的财产损失。为了有效的应对突发事件,产生了各类应急系统。 灾区数据的实时获取足所有应急系统的基础。对于区域性的灾害,传统的地面调查方式,由于速度慢、面积小、需要人员现场勘查等无法避免的特点,很难满足应急系统的需要。相对而言,遥感技术有其得天独厚的优势:遥感传感器能实时的、大面积的、无接触的获取灾区数据,因此成为绝大多数应急系统中数据获取的主要手段。为了使遥感数据能满足应急系统中基础数据的要求,需要经过数据获取、数据预处理、图像解译等阶段的处理,最终提取出准确的遥感信息。下面将根据这三个阶段的处理技术展开阐述与分析,并以汶川地震为例,介绍遥感技术在应急救灾及灾后重建中的应用。 2 数据获取 灾害发生后,由于地形、气象等客观因素的影响,通过单一的遥感传感器往往很难获得灾区所有数据,需要充分发挥多种传感器的优势,获取灾区的各种类型数据,主要包括光学与SAR卫星遥感影像、光学与SAR航空遥感影像两大类。 2.1 光学与SAR卫星遥感影像的获取 此类数据包括国内外的众多高分辨率光学与SAR卫星遥感影像。从时间上说,重点是灾害发生前后数据的获取,以快速确定灾区的位置和前后的变化。 2.2 光学与SAR航空遥感影像的获取 此类数据是利用高空遥感琶机、无人机和卣升机等高、低空遥感平台,搭载遥感传感器,快速

SIFT特征提取分析

SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,该算法通过求一幅图中的特征点(interest points, or corner points)及其有关scale 和orientation 的描述子得到特征并进行图像特征点匹配,获得了良好效果,详细解析如下: 算法描述 SIFT特征不只具有尺度不变性,即使改变旋转角度,图像亮度或拍摄视角,仍然能够得到好的检测效果。整个算法分为以下几个部分: 1. 构建尺度空间 这是一个初始化操作,尺度空间理论目的是模拟图像数据的多尺度特征。 高斯卷积核是实现尺度变换的唯一线性核,于是一副二维图像的尺度空间定义为: 其中G(x,y,σ) 是尺度可变高斯函数 (x,y)是空间坐标,是尺度坐标。σ大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的σ值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。为了有效的在尺度空间检测到稳定的关键点,提出了高斯差分尺度空间(DOG scale-space)。利用不同尺度的高斯差分核与图像卷积生成。 下图所示不同σ下图像尺度空间:

关于尺度空间的理解说明:2kσ中的2是必须的,尺度空间是连续的。在 Lowe的论文中,将第0层的初始尺度定为1.6(最模糊),图片的初始尺度定为0.5(最清晰). 在检测极值点前对原始图像的高斯平滑以致图像丢失高频信息,所以Lowe 建议在建立尺度空间前首先对原始图像长宽扩展一倍,以保留原始图像信息,增加特征点数量。尺度越大图像越模糊。 图像金字塔的建立:对于一幅图像I,建立其在不同尺度(scale)的图像,也成为子八度(octave),这是为了scale-invariant,也就是在任何尺度都能够有对应的特征点,第一个子八度的scale为原图大小,后面每个octave为上一个octave降采样的结果,即原图的1/4(长宽分别减半),构成下一个子八度(高一层金字塔)。

sift算法的MATLAB程序

% [image, descriptors, locs] = sift(imageFile) % % This function reads an image and returns its SIFT keypoints. % Input parameters: % imageFile: the file name for the image. % % Returned: % image: the image array in double format % descriptors: a K-by-128 matrix, where each row gives an invariant % descriptor for one of the K keypoints. The descriptor is a vector % of 128 values normalized to unit length. % locs: K-by-4 matrix, in which each row has the 4 values for a % keypoint location (row, column, scale, orientation). The % orientation is in the range [-PI, PI] radians. % % Credits: Thanks for initial version of this program to D. Alvaro and % J.J. Guerrero, Universidad de Zaragoza (modified by D. Lowe) function [image, descriptors, locs] = sift(imageFile) % Load image image = imread(imageFile); % If you have the Image Processing Toolbox, you can uncomment the following % lines to allow input of color images, which will be converted to grayscale. % if isrgb(image) % image = rgb2gray(image); % end [rows, cols] = size(image); % Convert into PGM imagefile, readable by "keypoints" executable f = fopen('tmp.pgm', 'w'); if f == -1 error('Could not create file tmp.pgm.'); end fprintf(f, 'P5\n%d\n%d\n255\n', cols, rows); fwrite(f, image', 'uint8'); fclose(f); % Call keypoints executable if isunix command = '!./sift '; else command = '!siftWin32 '; end command = [command ' tmp.key']; eval(command); % Open tmp.key and check its header g = fopen('tmp.key', 'r'); if g == -1

SIFT算法分析

SIFT算法分析 1 SI F T主要思想 S IF T算法就是一种提取局部特征得算法,在尺度空间寻找极值点,提取位置,尺度,旋转不变量。 2 SI FT算法得主要特点 a)SIFT特征就是图像得局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度得稳定性。 b )独特性(Dis t in c t iv e n es s)好,信息量丰富,适用于在海量特征数据库中进行快速、准确得匹配? c) 多量性,即使少数得几个物体也可以产生大量S IFT特征向量。 d) 高速性,经优化得SIF T匹配算法甚至可以达到实时得要求。 e) 可扩展性,可以很方便得与其她形式得特征向量进行联合。 3 SI F T算法流程图: 爹尺度空间扱值点检测 特征点的精确定位 I*

特征点的主方向计算 描述子的构造 特征向童I*

4 SIFT 算法详细 1)尺度空间得生成 尺度空间理论目得就是模拟图像数据得多尺度特征 . 高斯卷积核就是实现尺度变换得唯一线性核,于就是一副二维图像得尺度 空间定义为: 其中就是尺度可变高斯函数, (x ,y )就是空间坐标,就是尺度坐标.大小决定图像得平滑程度,大尺度对 应图像得概貌特征,小尺度对应图像得细节特征。大得值对应粗糙尺度 (低分辨 率),反之,对应精细尺度(高分辨率)。 为了有效得在尺度空间检测到稳定得关键点,提出了高斯差分尺度空间 (D O G seal e — s p ace ).利用不同尺度得高斯差分核与图像卷积生成。 D(x,y, ) (G(x, y,k ) G(x, y, )) I(x,y) L(x, y,k ) L(x, y,) D OG 算子计算简单,就是尺度归一化得L o G 算子得近似。 图像金字塔得构建:图像金字塔共O 组,每组有S 层,下一组得图像由上一组图 像降采样得到。 图1由两组高斯尺度空间图像示例金字塔得构建, 第二组得第一副图像由第 一组得第一副到最后一副图像由一个因子 2降采样得到。图2 DoG 算子得构建: t o last image in t h e p revio us 图 1 Tw o o ct a ves of a G aus sia n s cale-spac e i ma g e pyr amid with s = 2 inte r vals 、Th e fir s t image i n t h e sec o nd o e t a ve is created b y dow n sa m p l ing Oj-taw J Octave 聖

深度解析:移动机器人的几种视觉算法

深度解析:移动机器人的几种视觉算法谈到移动机器人,大家第一印象可能是服务机器人,实际上无人驾驶汽车、可自主飞行的无人机等等都属于移动机器人范畴。它们能和人一样能够在特定的环境下自由行走/飞行,都依赖于各自的定位导航、路径规划以及避障等功能,而视觉算法则是实现这些功能关键技术。 如果对移动机器人视觉算法进行拆解,你就会发现获取物体深度信息、定位导航以及壁障等都是基于不同的视觉算法,本文就带大家聊一聊几种不同但又必不可少的视觉算法组成。 本文作者陈子冲,系Segway Robot架构师和算法负责人。 移动机器人的视觉算法种类 Q:实现定位导航、路径规划以及避障,那么这些过程中需要哪些算法的支持? 谈起移动机器人,很多人想到的需求可能是这样的:“嘿,你能不能去那边帮我拿一杯热拿铁过来。”这个听上去对普通人很简单的任务,在机器人的世界里,却充满了各种挑战。为了完成这个任务,机器人首先需要载入周围环境的地图,精确定位自己在地图中的位置,然后根据地图进行路径规划控制自己完成移动。 而在移动的过程中,机器人还需要根据现场环境的三维深度信息,实时的躲避障碍物直至到达最终目标点。在这一连串机器人的思考过程中,可以分解为如下几部分的视觉算法: 1.深度信息提取 2.视觉导航 3.视觉避障 后面我们会详细说这些算法,而这些算法的基础,是机器人脑袋上的视觉传感器。 视觉算法的基础:传感器 Q:智能手机上的摄像头可以作为机器人的眼睛吗? 所有视觉算法的基础说到底来自于机器人脑袋上的视觉传感器,就好比人的眼睛和夜间视力非常好的动物相比,表现出来的感知能力是完全不同的。同样的,一个眼睛的动物

对世界的感知能力也要差于两个眼睛的动物。每个人手中的智能手机摄像头其实就可以作为机器人的眼睛,当下非常流行的Pokeman Go游戏就使用了计算机视觉技术来达成AR 的效果。 像上图画的那样,一个智能手机中摄像头模组,其内部包含如下几个重要的组件:镜头,IR filter,CMOS sensor。其中镜头一般由数片镜片组成,经过复杂的光学设计,现在可以用廉价的树脂材料,做出成像质量非常好的手机摄像头。 CMOS sensor上面会覆盖着叫做Bayer三色滤光阵列的滤色片。每个不同颜色的滤光片,可以通过特定的光波波长,对应CMOS感光器件上就可以在不同位置分别获得不同颜色的光强了。如果CMOS传感器的分辨率是4000x3000,为了得到同样分辨率的RGB 彩色图像,就需要用一种叫做demosaicing的计算摄像算法,从2绿1蓝1红的2x2网格中解算出2x2的RGB信息。

OpenCV SIFT特征算法详解与使用

SIFT概述 SIFT特征是非常稳定的图像特征,在图像搜索、特征匹配、图像分类检测等方面应用十分广泛,但是它的缺点也是非常明显,就是计算量比较大,很难实时,所以对一些实时要求比较高的常见SIFT算法还是无法适用。如今SIFT算法在深度学习特征提取与分类检测网络大行其道的背景下,已经越来越有鸡肋的感觉,但是它本身的算法知识还是很值得我们学习,对我们也有很多有益的启示,本质上SIFT算法是很多常见算法的组合与巧妙衔接,这个思路对我们自己处理问题可以带来很多有益的帮助。特别是SIFT特征涉及到尺度空间不变性与旋转不变性特征,是我们传统图像特征工程的两大利器,可以扩展与应用到很多图像特征提取的算法当中,比如SURF、HOG、HAAR、LBP等。夸张一点的说SIFT算法涵盖了图像特征提取必备的精髓思想,从特征点的检测到描述子生成,完成了对图像的准确描述,早期的ImageNet 比赛中,很多图像分类算法都是以SIFT与HOG特征为基础,所有SIFT算法还是值得认真详细解读一番的。SIFT特征提取归纳起来SIFT特征提取主要有如下几步: ?构建高斯多尺度金字塔 ?关键点精准定位与过滤 ?关键点方向指派 ?描述子生成 构建高斯多尺度金字塔 常见的高斯图像金字塔是每层只有一张图像,大致如下: 上述的是通过图像金字塔实现了多分辨率,如果我们在每一层高斯金字塔图像生成的时候,给予不同的sigma值,这样不同的sigam就会产生不同模糊版本的图像,在同一层中就是实现不同尺度的模糊图像,再结合高斯金

字塔,生成多个层多个尺度的金字塔,就是实现了图像的多尺度金字塔。同一张图像不同尺度高斯模糊如下: 为了在每层图像中检测 S 个尺度的极值点,DoG 金字塔每层需 S+2 张图像,因为每组的第一张和最后一张图像上不能检测极值,DoG 金字塔由高斯金字塔相邻两张相减得到,则高斯金字塔每层最少需 S+3 张图像,实际计算时 S 通常在2到5之间。SIFT算法中生成高斯金字塔的规则如下(尺度空间不变性): 关键点精准定位与过滤 对得到的每层DOG图像,计算窗口3x3x3范围除去中心点之外的26点与中心点比较大小,寻找最大值或者最小值(极值点),如下图:

相关文档
最新文档