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%能量的峰值时,则将这个方向认为是该关键点的辅方向。