特征点提取流程

图像特征点提取流程(sift、surf)

本文简单介绍了sift特征点、surf特征点的提取方式,参杂了个人理解,细节请看一下资料。若本文侵权必删!
参考资料1
参考资料2

sift

第一步 金字塔图像生成与高斯图像处理

  先生成金字塔图像(假设为7层)。这7层金字塔图像的像素数是逐渐降低的。然后对每一层金字塔图像进行不同尺度高斯核处理,这里假设要提取s个尺度的特征点,每一层金字塔可以生成s + 3个高斯模板处理后的图像(后续解释为什么是s和s+3的关系)。这个过程中可以使用2个1维高斯模板代替1个2维高斯模板,可降低计算量,并减少边缘信息消失的问题,成为高斯模板的可分离性。
在这里插入图片描述
在这里插入图片描述
  sift原始论文(或者前面的研究)中是使用高斯拉普拉斯算子来提取特征点,更优的解决方式是使用差分高斯金字塔来代替这种算子,也就是蓝色图像的图像进行特征点提取。这里s+3层的高斯金字塔得到了s+2层(前面黄色的)的差分高斯金字塔(后面蓝色)。

第二步 根据高斯金字塔确定特征点位置和尺度

在这里插入图片描述
  得到用来提取sift特征点的金字塔后(s+2层),进行sift特征点提取。所提取到的特征为上图中画×的点,它是根据上3层差分高斯金子塔图像中,一共9+8+9 = 26个像素值得到的,就是判断×是否比他们都小或者大。故而s+2可以得到s个特征点。至此特征点提取结束。

第三步 特征点主方向

在这里插入图片描述
  选取比如当前关键点的8*8的窗口邻域内的像素进行方向判断。把每个像素的梯度方向和值投影到右侧的直方图中去,x轴是梯度方向,y值是梯度的大小,最终选择直方图中y值最大的x作为主方向,也可以选择一个辅方向。至于每个像素梯度的方向和大小,按照当前像素周围8个像素做梯度计算,正好是8个方向,大小就是像素亮度的差值(这里是猜测的,但大概意思是这样)。

第四步 特征点描述子

在这里插入图片描述
  先按照之前主方向将图像进行旋转,然后选取当前关键点邻域窗内88的像素框作为一个种子点,同样生成一个8个维度的角度直方图。实际可以选择44共16个种子点的邻域窗。最终生成的描述子的维度就是448。但它使用的像素数却是4464(64个像素构成种子点,种子点的维度始终是8)。

surf

第一步 金字塔图像处理

  与sift不同,surf不使用差分金字塔来确定特征点位置。而是使用高斯平滑后的梯度图像,这里会分两步走,也就是正常的高斯平滑(多个尺度的平滑)和二阶梯度提取。梯度提取如下:
;在这里插入图片描述
在这里插入图片描述
这里det值作为生成最终确定极值点的像素值。
 &emsp实际操作的时候,两步合在一起,使用一个高斯模板(不同尺度,模板大小不同)来处理图像。
模板
   图中灰色像素代表0;上图中1为y方向的先高斯滤波然后二阶求导的处理,近似处理为图3,图2位x和y方向上的先高斯滤波然后二阶混合偏导,近似为图4。有了这个近似的模板以后,计算高斯滤波和二阶导数两个步骤就可以一个步骤完成,当上述模板与图像中某一块窗口对齐时,就可求解一个像素值,以提取特征点。
 &emsp为了提高效率,上述模板会与原图像的积分图相结合,得到最终用来确定特征点的金字塔图像。
在这里插入图片描述
   所谓积分图就是把O点到图像中任意一点之间的像素和全部计算,并存储起来。当想匹配一个与模板大小相同(不同模板本身大小是跟着所设置尺度不同而大小不同的)的像素区域时,直接计算ABCD(绿色区域 = A +B +C - D)即可。另外,上图中的模板实例。是经过近似的,只使用了1、-2、-1这几个数字来表示模板,只有这样才能和积分图结合上,提高效率,直接提取公因子一乘就可以。

第二步 提取关键点

   与sift类似

第三步 主方向

   在SURF中,不统计其梯度直方图,而是统计特征点领域内的Harr小波特征。即以特征点为中心,计算半径为6s(S为特征点所在的尺度值)的邻域内,统计60度扇形内所有点在x(水平)和y(垂直)方向的Haar小波响应总和(Haar小波边长取4s),并给这些响应值赋高斯权重系数,使得靠近特征点的响应贡献大,而远离特征点的响应贡献小,然后60度范围内的响应相加以形成新的矢量,遍历整个圆形区域,选择最长矢量的方向为该特征点的主方向。这样,通过特征点逐个进行计算,得到每一个特征点的主方向。该过程的示意图如下:
在这里插入图片描述
  6个扇区中箭头最长的方向为主方向。箭头取决于权重和haar值。

第四步 描述子

  先旋转图像。在旋转过后的图像基础上。选取16个子区域,每个子区域统计25个像素的水平方向和垂直方向的haar小波特征。该haar小波特征为水平方向值之和,水平方向绝对值之和,垂直方向之和,垂直方向绝对值之和(这里就有了4个维度)。因此总共有16 * 4的维度。使用了16 * 25(400)个像素提取出来16 * 4 = 64个描述子维度。
在这里插入图片描述

sift与surf的主要差别

金字塔方面

   sift特征点会对图像进行尺度的缩放,而模板大小固定。surf则相反,原图像大小不免,模板大小会跟随尺度变;
在这里插入图片描述

描述子方面

   sift使用16 * 8 = 128的维度,sutf使用16 * 4 = 64的维度;

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值