SIFT SUFT FAST ORB

SIFT

Scale Invariant Feature Transform,尺度不变特征变换。SIFT特征对旋转、尺度缩放、亮度变化等保持不变性,是一种非常稳定的局部特征。

SIFT算法主要有以下几个步骤:

  • 高斯差分金字塔的构建
    使用组和层的结构构建了一个具有线性关系的金字塔(尺度空间),这样可以在连续的高斯核尺度上查找图像的特征点;另外,它使用一阶的高斯差分来近似高斯的拉普拉斯核,大大的减少了运算量。
  • 尺度空间的极值检测及特征点的定位
    搜索上一步建立的高斯尺度空间,通过高斯差分来识别潜在的对尺度和旋转不变的特征点。但是,在离散空间中,局部极值点可能并不是真正意义的极值点,真正的极值点有可能落在离散点的间隙中,SIFT通过尺度空间DoG函数进行曲线拟合寻找极值点。
  • 特征方向赋值
    基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向,后续的所有操作都是对于关键点的方向、尺度和位置进行变换,从而提供这些特征的不变性。
  • 特征描述子的生成
    通过上面的步骤已经找到的SIFT特征点的位置、方向、尺度信息,最后使用一组向量来描述特征点及其周围邻域像素的信息。

SURF

Speeded Up Robust Features。加速版的SIFT。

SURF的流程和SIFT比较类似,这些改进体现在以下几个方面:

  • 特征点检测是基于Hessian矩阵,依据Hessian矩阵行列式的极值来定位特征点的位置。并且将Hession特征计算与高斯平滑结合在一起,两个操作通过近似处理得到一个核模板。
  • 在构建尺度空间时,使用box filter与源图像卷积,而不是使用DoG算子。
  • SURF使用一阶Haar小波在x、y两个方向的响应作为构建特征向量的分布信息。

FAST

Features From Accelerated Segment Test,以速度快而著称

检测局部像素灰度变化明显的地方,

FAST算法提取角点的步骤:

  • 在图像中选择像素p,假设其灰度值为:IpIp
  • 设置一个阈值T,例如:IpIp的20%
  • 选择p周围半径为3的圆上的16个像素,作为比较像素
  • 假设选取的圆上有连续的N个像素大于Ip+TIp+T或者Ip−TIp−T,那么可以认为像素p就是一个特征点。(N通常取12,即为FAST-12;常用的还有FAST-9,FAST-11)。

不可避免的也有一些缺点

  • 检测到的特征点过多并且会出现“扎堆”的现象。这可以在第一遍检测完成后,使用非最大值抑制(Non-maximal suppression),在一定区域内仅保留响应极大值的角点,避免角点集中的情况。
  • FAST提取到的角点没有方向和尺度信息

上面的介绍的SIFT和SURF算法都包含有各自的特征点描述子的计算方法,而FAST不包含特征点描述子的计算,仅仅只有特征点的提取方法,这就需要一个特征点描述方法来描述FAST提取到的特征点,以方便特征点的匹配。下面介绍一个专门的特征点描述子的计算算法。

BRIEF描述子

BRIEF是一种二进制的描述子,其描述向量是0和1表示的二进制串。0和1表示特征点邻域内两个像素(p和q)灰度值的大小:如果p比q大则选择1,反正就取0。在特征点的周围选择128对这样的p和q的像素对,就得到了128维由0,1组成的向量。那么p和q的像素对是怎么选择的呢?通常都是按照某种概率来随机的挑选像素对的位置。
BRIEF使用随机选点的比较,速度很快,而且使用二进制串表示最终生成的描述子向量,在存储以及用于匹配的比较时都是非常方便的,其和FAST的搭配起来可以组成非常快速的特征点提取和描述算法。

ORB

Oriented FAST and Rotated BRIE

  • 使用非最大值抑制,在一定区域内仅仅保留响应极大值的角点,避免FAST提取到的角点过于集中。
  • FAST提取到的角点数量过多且不是很稳定,ORB中可以指定需要提取到的角点的数量N,然后对FAST提取到的角点分别计算Harris响应值,选择前N个具有最大响应值的角点作为最终提取到的特征点集合。
  • FAST提取到的角点不具有尺度信息,在ORB中使用图像金字塔,并且在每一层金字塔上检测角点,以此来保持尺度的不变性。
  • FAST提取到的角点不具有方向信息,在ORB中使用灰度质心法(Intensity Centroid)来保持特征的旋转不变性。

 

你可能感兴趣的:(VSLAM,Image,Processing)