SIFT特征提取

1.构建尺度空间

图1.尺度空间与高斯差分

其中:

        阶(Octave)数:

        每阶有效样本(Sample)数:

        每阶总样本数:

        高斯空间:每个Octave中的左半部分

        高斯差分空间:每个Octave中的右半部分

2.关键点检测

图2.粗定位(左)与细定位(右)

2.1:粗定位

        对每个Octave中的有效高斯差分图(图1红色)中的每个点,在位置和尺度构成的三维空间中寻找极值(图2左)。

2.2:细定位

        假设经过粗定位检测到的点为图二右侧绿色的点,如何将其进一步精确化呢?

        假设绿色点为,红色点为,。

        变量空间如下图:

图3.差分图(DoG)对应的变量空间

        设差分函数为,则:

        一阶导数:

                

                

                

                

        二阶导数:

                

                

                

                ▽^2f= \left[\begin{matrix} \frac{∂^2f }{∂x^2 }  & \frac{∂^2f }{∂x∂y } &\frac{∂^2f }{∂x∂\sigma  } \\  \frac{∂^2f }{∂x∂y } &  \frac{∂^2f }{∂y^2 }&\frac{∂^2f }{∂y∂\sigma  }\\  \frac{∂^2f }{∂x∂\sigma  } &  \frac{∂^2f }{∂y∂\sigma  }  &\frac{∂^2f }{∂\sigma ^2 }\end{matrix}\right]

        根据二阶泰勒展开式得:

                

                

                删除的点。

2.3:消除边缘响应

        DoG在边缘处值较大,需要避免检测到边缘,记关键点处的海森矩阵为

        (海森矩阵详细介绍见:https://www.jianshu.com/p/4cf554bfc058),保留满足公式

       的关键点。

3.确定关键点方向

在以关键点为中心的8x8窗口内统计方向直方图,每隔10度算一个方向,总共36个bin,360度。

图4.确定主方向,注意左图每个箭头长度不一样

计算公式如下:

窗口内每个点的方向为,方向对应的模长为,统计窗口内所有点得到图4右侧的图,选取

bin最大的作为主方向,如果有别的bin大于最大bin的百分之80,则也将那个bin对应的方向作

候选主方向。

4.生成描述子

将以关键点为中心的16x16图像窗口分成4x4=16个block,每个block统计梯度直方图。

图5.图像窗口划分block并计算每个block的梯度直方图

将每个block对应的梯度直方图串联起来,形成128维特征向量,注意图4的颜色对应。

图6.将block对应的梯度直方图按顺序串联起来,形成特征向量

归一化处理:特征向量模长为1且每个维度不大于0.2。

你可能感兴趣的:(SIFT特征提取)