SIFT特征提取

作者: 低调小帅哥 | 来源:发表于2020-05-09 23:58 被阅读0次

1.构建尺度空间

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

其中:

        阶(Octave)数:O=3

        每阶有效样本(Sample)数:S=3

        每阶总样本数:N=S+3

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

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

2.关键点检测

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

2.1:粗定位

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

2.2:细定位

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

        假设绿色点为p_{0} =[x_{0},y_{0},\sigma _{0}]^T ,红色点为p =[x,y,\sigma]^T \delta p=p-p_{0}

        变量空间如下图:

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

        设差分函数为f(x,y,\sigma ),则:

        一阶导数:

                \frac{∂f}{∂a} =\frac{f(x+1,y,\sigma )-f(x-1,y,\sigma )}{2h_{x} }

                \frac{∂f}{∂y} =\frac{f(x,y+1,\sigma )-f(x,y-1,\sigma )}{2h_{y} }

                \frac{∂f}{∂\sigma } =\frac{f(x,y,\sigma +1)-f(x,y,\sigma -1)}{2h_{\sigma } }

                ▽f=[\frac{∂f}{∂x} ,\frac{∂f}{∂y} ,\frac{∂f}{∂\sigma } ]

        二阶导数:

                \frac{∂^2f }{∂x^2 } =\frac{f(x+1,y,\sigma)+ f(x-1,y,\sigma )-2f(x,y,\sigma )}{d^2x  }

                \frac{∂^2f }{∂y^2 } =\frac{f(x,y+1,\sigma)+ f(x,y-1,\sigma )-2f(x,y,\sigma )}{d^2y}

                \frac{∂^2f }{∂\sigma ^2 } =\frac{f(x,y,\sigma+1)+ f(x,y,\sigma -1)-2f(x,y,\sigma )}{d^2x}

\frac{∂^2f }{∂x∂y} =\frac{[f(x+1,y+1,\sigma)+ f(x-1,y-1,\sigma )]-[f(x+1,y-1,\sigma )+f(x-1,y+1,\sigma )]}{4d_{x}d_{y}  }

\frac{∂^2f }{∂x∂\sigma } =\frac{[f(x+1,y,\sigma+1)+ f(x-1,y,\sigma -1)]-[f(x+1,y,\sigma-1 )+f(x-1,y,\sigma+1 )]}{4d_{x}d_{\sigma }  }

\frac{∂^2f }{∂y∂\sigma } =\frac{[f(x,y+1,\sigma+1)+ f(x,y-1,\sigma -1)]-[f(x,y+1,\sigma -1)+f(x,y-1,\sigma+1)]}{4d_{y}d_{\sigma }  }

                ▽^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]

        根据二阶泰勒展开式得:

                \delta p=▽^2 f(p_{0} )^{-1} ▽f^T(p_{0})

                f(p)=f(p_{0} )+\frac{1}{2} ▽f(p_{0})^T (p-p_{0} )

                删除|f(p)|<0.03的点。

2.3:消除边缘响应

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

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

       \frac{trace(H)^2 }{det(H)} <\frac{(r+1)^2 }{r} ,r=10的关键点。

3.确定关键点方向

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

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

计算公式如下:

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

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

候选主方向。

4.生成描述子

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

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

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

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

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

相关文章

  • OpenCV-Python之——图像SIFT特征提取

    SIFT特征提取算法 SIFT的全称是Scale Invariant Feature Transform,尺度不变...

  • openCV:SIFT特征提取

    SIFT特征提取算法 定义 SIFT的全称是Scale Invariant Feature Transform,尺...

  • OpenCV提取图片的SIFT特征

    SIFT理论介绍 参考前面做的笔记:SIFT原理 用OpenCV实现SIFT特征提取 1.实现代码:

  • SIFT特征的原理

    学习资料 SIFT特征提取分析-Rachel Zhang的专栏 SIFT原理与源码分析(图文并茂,最详细) Ope...

  • 图像特征提取方法

    特征提取方法: 1、SIFT(Scale-invariant feature transform)尺度不变特征变换...

  • SIFT特征提取

    SIFT特征 SIFT(Scale-invariant feature transform)是一种检测局部特征算法...

  • SIFT特征提取

    1.构建尺度空间 其中: 阶(Octave)数: 每阶有效样本(Sample)数: 每阶总样本...

  • 3. opencv提取SIFT特征

    opencv中sift特征提取的步骤 使用SiftFeatureDetector 的detect方法检测特征存入一...

  • 计算机视觉

    2019-06-23图像特征提取方法:Haar、Gabor、LBP、SIFT、HOG Haar 这个好像不错:第九...

  • 图像特征提取-SIFT

    在没有神经网络之前,学者提出了大量的依赖于先验知识的传统特征提取算法。在图像特征领域,SIFT个人认为是具有里程碑...

网友评论

    本文标题:SIFT特征提取

    本文链接:https://www.haomeiwen.com/subject/wavrnhtx.html