首页 > 其他 > 详细

opencv笔记--SIFT

时间:2020-06-14 13:31:22      阅读:55      评论:0      收藏:0      [点我收藏+]

    SIFT(Scale Invariant Feature Transform) 由 David Lowe 于 2004 年提出。SIFT 算法在不同尺度下检测最强特征点,并给出特征点描述。由于特征点描述基于主方向与尺度信息,故可以使用描述信息对不同尺度,不同方向特征点进行比对。主要步骤如下:

    1)使用不同尺度 DoG 算子在 (图像平面,尺度)空间上寻找极值;

    2)使用 二次函数 极值确定特征点精确位置与尺度;

    3)使用 梯度 信息确定各个特征点方向;

    4)基于 特征点方向与特征点尺度 计算特征点描述信息;

 

    1 检测尺度空间上极值

    与 "Blob检测" 博文大体一致,使用不同尺度 高斯函数 对原图像卷积,再对卷积图像求差值,得到原图像不同尺度下的 DoG 响应。

    将不同尺度下  DoG 排列起来即形成了一个三维函数,其因变量为:位置(x, y), 尺度 技术分享图片技术分享图片

    在离散函数 技术分享图片 上,对比每个点与周边 26 个邻接点关系,当其值均大于邻接点值或者均小于邻接点值时,确定为候选特征点。如下图:

      技术分享图片

     以下有两点细节不太理解:

    1)使用不同 技术分享图片 高斯函数即可实现不同尺度查找,那么上图中对原图下采样是否是多余?

    2)已经知道在使用 Laplacian of Gaussian 检测关键点时,不同尺度高斯函数产生的响应不一致,需要使用 技术分享图片 进行归一化处理。

          而 DoG 等价于 归一化  LoG, 推论如下:

          根据 heat diffusion equation ,技术分享图片技术分享图片

          技术分享图片。   ?

 

    2 提升特征点位置精度

     将函数 技术分享图片  视为连续函数,利用二阶泰勒公式可以得到特征点更精确位置与尺度,具体如下:

     1)以离散情形下计算特征点位置作为起始点,技术分享图片 表示相对于起始点偏移量;

     2)二阶泰勒表达式为 技术分享图片

     3)对二阶泰勒表达式求一阶偏导并令其值为0 

     

    

      

    

   

 

参考资料 Learning OpenCV 3   Adrian Kaehler & Gary Bradski

              Distinctive Image Features from Scale-Invariant Keypoints   David G. Lowe

opencv笔记--SIFT

原文:https://www.cnblogs.com/luofeiju/p/13123977.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!