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。

    相关文章

      网友评论

        本文标题:SIFT特征提取

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