0%

SIFT特征

1. Intro

什么是SIFT?Scale Invariant Feature Transform

对下列变化不敏感

  • 尺度变换
  • 旋转
  • 光照
  • 视角

SIFT算法较为复杂,主要分为两个大的部分

  1. 找出特征点
  2. 目的是去掉一些不重要的细节。方法:高斯模糊
  3. 变化大的区域就是边缘、点、角
  4. 描述特征点
  5. HoG,在1.2中找出的特征点为中心选16x16的区域
  6. 又可以分为4x4个子区域,每个子区域都可以积算一个梯度,8个bin里
  7. 一共是4x4x8=128维的特征向量

2. Details

  1. 找出特征点

  2. 目的是去掉一些不重要的细节。方法:高斯模糊,不同的level

  3. 不断resize,变成金字塔形状,不同的octaves。每次resize之后都高斯模糊。

建议的值octave=4,level=5

  1. 生成Difference of Gaussians (DoG),变化大的区域就是边缘、点、角

这是对Laplacian of Gaussian (LoG) 的一个近似

  • 好处:LoG不具有尺度不变性,而DoG有
  • 坏处:引入了其他的常量k,但不影响特征点位置,所以无所谓
  1. 确定极大点、极小点

  2. 粗略估计,如果在3层,27个点中是最大或最小的,就作为极值点。注意:最低或者最高层不做,因为没有相邻的三层。得到的点就是关键点

2021-07-15-17-14-39

  1. 利用差分图计算亚像素,可以更精确
    $$
    D(\mathbf{x})=D+\frac{\partial D^{T}}{\partial \mathbf{x}} \mathbf{x}+\frac{1}{2} \mathbf{x}^{\mathrm{T}} \frac{\partial^{2} D}{\partial \mathbf{x}^{2}} \mathbf{x}
    $$

  2. 描述特征点

  3. HoG,在1.2中找出的特征点为中心选16x16的区域

  4. 又可以分为4x4个子区域,每个子区域都可以积算一个梯度,8个bin里

  5. 一共是4x4x8=128维的特征向量