视觉slam与三维重建

SIFT特征提取

2020-05-09  本文已影响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。

上一篇下一篇

猜你喜欢

热点阅读