SIFT 特征点

SIFT 特征点

sift特征点是非常传统计算机视觉中非常重要的方法,也是最广为人知的算法之一。它也是一个复杂的算法,考虑了尺度特性、旋转特性等。具有如下的优势:

  • 局部性:特征点是局部的,不会受到遮挡的影响
  • 可区分性:能从巨大的数据集中区分每个特征
  • 质量:提取特征点的质量非常高
  • 高效:能够取得接近实时的表现
  • 可拓展性:能够轻易的拓展成其他类型的特征点,以提高其鲁棒性

算法主要包括如下几个步骤:

  • 尺度空间极值检测
  • 特征点定位
  • 方向估计
  • 特征点描述子

尺度空间极值选择

尺度空间

同一个物体在不同尺度下呈现出不同的状态,近的物体能够看到更多的细节远出物体仅剩下主要轮廓并更加模糊。
因此构建如下图所示的尺度空间,模拟人在不同远近看到同一物体不同的效果。

金字塔的每一层包含多张相同尺寸图片,但是采用不同参数的高斯模糊得到不同清晰度的图片,从上到下变得越来越模糊。而金字塔的不同层之间具有不同尺寸大小的图片,相邻两层之间是两倍的关系。
SIFT 特征点_第1张图片

DOG(Difference of Gaussian kernel)差分高斯核

差分高斯核类似于响应函数,即能够描述当前点是特征点的可能性。具体采用构建的尺度空间金字塔,在每一层不同清晰程度图片之间进行差分得到差分高斯核。
SIFT 特征点_第2张图片

为何采用如此方式计算出来的数据能够表明当前位置为特征点的概率呢?

关键点搜索

如果某个点是当前层中周围八个点及上一层中周围9个点和下一层中周围9个点共26个点中的极值,那么该点则被判定为极值点即关键点。
SIFT 特征点_第3张图片

特征点定位

三次线性插值

为了提高特征点的定位精度,对特征点的位置进行了曲线拟合,利用周围点数据拟合曲线得到曲线极值作为提取得到的特征点的精确位置。
SIFT 特征点_第4张图片

边缘点去除

由于DOG对边缘同样具有较高的响应,因此会检测得到大量的边缘点,需要进行剔除,具体采用与Harris角点类似的策略,即通过特征点判断当前位置是边缘or角点。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t31G6K42-1640760037181)(https://storage.live.com/items/B149F35319CAD365!2072?authkey=ANFgi5h3UzMEHv8)]

方向估计

  1. 对特征点位置3 σ \sigma σ邻域窗口内计算其梯度的幅值和方向
  2. 将梯度方向0-360分为36组
  3. 按照高斯分布加权对不同方向的梯度值进行统计
  4. 确定统计量最多的方向为主方向
  5. 保留统计量超过最大值百分之八十的方向为辅方向
    SIFT 特征点_第5张图片

特征点描述子

首先选取周围16x16像素点,将其分为4x4大小的子区域,总共16个子区域。
SIFT 特征点_第6张图片

然后对每个子区域统计八个方向的梯度方向直方图,每个子区域用这8个统计结果进行描述。
SIFT 特征点_第7张图片

最后得到 8 x 16 = 128 个数据作为描述符向量。

  • 旋转不变性
    • 对计算的梯度信息减去当前特征点的旋转角度进行归一化即可
  • 光照不变性
    • 对于梯度大于0.2的数据同一限制到0.2,这样光照变强对比变强,相对梯度变大也会被限制到同样的0.2,保证了光照不变性。

你可能感兴趣的:(特征点提取,传统特征点方法,算法,计算机视觉,特征点,sift)