b) 独特性好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配。 c) 多量性,即使少数的几个物体也可以产生大量SIFT特征向量。 d) 高速性,经优化的SIFT匹配算法甚至可以达到实时的要求。 e) 可扩展性,可以很方便的与其他形式的特征向量进行联合。
SIFT实质是一个基于极值点位置和图像方向直方图统计的特征描述子.其实现步骤分为三步:1、极值点位置获取. 2、关键点方向分配. 3、特征点描述子生成.
3.3.1 极值点获取步骤
首先对原图形进行高斯卷积生成尺度空间,获取空间极值点坐标,最后通过曲率精确定位极值点.
1、 使用不同尺度的高斯核,生成图像金子塔. L(x,y, ) G(x,y, ) I(x,y) 这里(x,y)是空间坐
标,
, 是尺度坐标. 决定图像被平滑程度.其中G(x,y
12
2
)是尺度可变高斯函
数.G(x,y, ) e
(x y)/2
222
.
2、 满足在图像二维平面空间和DOG[19](Difference of Gauss)尺度空间中同时具有局部极值的点作为
SIFT
关键点.DOG
算子定义为两个不同尺度的高斯核的差
分.D(x,y, ) (G(x,y,k ) G(x,y, )) I(x,y) L(x,y,k ) L(x,y, ).
为了寻找尺度空间的极值点,每一个采样点要和它所有的相邻点比较,看其是否比它的图像域和尺度
域的相邻点大或者小.一般采样点要和它处于同一尺度的8个相邻点和上下相邻尺度对应的9×2 个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点.
3、 上面通过拟和三维二次函数确定了关键点的位置和尺度(达到亚像素精度).然而因为DoG 算子
会产生较强的边缘响应,所以SIFT 算法需要舍弃低对比度的关键点和不稳定的边缘响应点以增强匹配稳定性和提高抗噪声能力.舍弃关键点的依据是:一个定义不好的DoG 的极值在横跨边缘的地方有较大的主曲率,而在垂直边缘的方向有较小的主曲率.主曲率通过一个2x2 的Hessian矩
Dxx
阵H求出: H
DxyDxy
令 为最大特征值, 为最 . DOG的主曲率和H的特征值成正比,
Dyy
2
小的特征值,则Tr(H) Dxx Dyy , Det(H) DxxDyy (Dxy).令 ,则
Tr(H)
22
Det(H)
( )
2
( )
2
2
( 1)
2
.
( 1)
2
的值在两个特征值相等的时候最小,
随着r的增大而增大,因此,为了检测主曲率是否在某域值r下,只需检测
一般取 10.
3.3.2 关键点方向分配
Tr(H)
22
Det(H)
<
( 1)
2
.
I
首先针对图像I(x,y),利用关键点邻域像素进行梯度方向计算x
和
Ty
.则(x,y)
点的模值定义为:
.其中L所用的
M(x,y)
其方向定义为:
(x,y) tan(Iy(x,y)/Ix(x,y))
1
尺度为每个关键点各自所在的尺度.
针对图像
I(x,y)
中的所有点
(x,y)
,获取
邻域,并统计
邻域的梯度直方图.梯度直方图的范围是
0~360度,将其分割为 个柱.直方图的峰值则代表了该关键点处邻域梯度的主方向,即作为该关键点的方向. 梯度方向直方图中,当存在另一个相当于主峰值80%能量的峰值时,则将这个方向认为是该关键点的辅方向。
一个关键点可能会被指定具有多个方向(一个主方向,一个以上辅方向),这可以增强匹配的鲁棒性. 一般取
16, 8.通过以上几步, 可检测出图像的SIFT 关键点,每个关键点有三个信息:位置、所处尺
度和方向,由此可以确定一个SIFT 特征区域. 3.3.3 特征点描述子生成
SIFT 描述子是对一个SIFT 特征区域的描述,其生成步骤如下:
1、 首先将坐标轴旋转为SIFT 特征区域的方向,以确保旋转不变性.
2、 接下来以关键点为中心取8×8的窗口。图8左部分的中央黑点为当前关键点的位置,每个小格代表
关键点邻域所在尺度空间的一个像素,箭头方向代表该像素的梯度方向,箭头长度代表梯度模值,图中蓝色的圈代表高斯加权的范围(越靠近关键点的像素梯度方向信息贡献越大)。然后在每4×4的小块上计算8个方向的梯度方向直方图,绘制每个梯度方向的累加值,即可形成一个种子点,如图5右部分所示。此图中一个关键点由2×2共4个种子点组成,每个种子点有8个方向向量信息。这种邻域方向性信息联合的思想增强了算法抗噪声的能力,同时对于含有定位误差的特征匹配也提供了较好的容错性。
图8 SIFT 特征区域的关键点邻域梯度信息生成SIFT 描述子
实际计算过程中,为了增强匹配的稳健性,Lowe建议对每个关键点使用4×4共16个种子点来描述,这样对于一个关键点就可以产生128个数据,即最终形成128维的SIFT特征向量。此时SIFT特征向量已经去除了尺度变化、旋转等几何变形因素的影响,再继续将特征向量的长度归一化,则可以进一步去除光照变化的影响。
3.3.4 SIFT的金字塔方法
原始图形 SIFT图像5913个特征点 原图像 SIFT图像252个特征点 SIFT形成的特征描述子特征点个数不同、无序、而且位置互异.而SVM分类器需要向量同维,因此无法直接使用SVM针对SIFT特征进行分类.
针对该问题,国外进行了很多研究.2007年Kristen提出的金字塔核匹配方法,运算简单而且准确度较高,因此本文采取该方法解决SIFT分类问题.
该方法将特征子数据投影到不同的尺度空间,求同一尺度空间的重叠值.然后再求相邻尺度空间重叠值的
L
交叉值.其采用的核函数如下: K
wN
i
i 0
i
.其核函数具体计算方法如下图.
(a) 点集 (b) 金字塔直方图 (b) 核函数结果
4 实验结果
本文采用Caltech 101数据库作为实验对象,该数据库一共用101种类数据以供识别.本文采用Libsvm作为分类器,其中训练测试样本共3600张图片.图片类型共36种,每种100张.本文采取训练样本和测试样本各占50%进行测试.部分Caltech101数据库图片如下