SIFT特征提取及其opencv实现

SIFT特征提取及其opencv实现

SIFT特征提取算法的实质是寻找图像中对位置、尺度、旋转等保持不变的关键点,其步骤主要有如下四步:

  1. 尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。
  2. 关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
  3. 方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
  4. 关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。

关于SIFT特征提取的资料很多,这里只说明几个地方。首先对于尺度的变换,Lindeberg等人已证明高斯卷积核是实现尺度变换的唯一变换核,并且是唯一的线性核。在SIFT算法中,用DOG算子来获得不同尺度下的图像特征,之所以用DOG(高斯差分算子)来进行这种处理,是因为,2002年Mikolajczyk在详细的实验比较中发现尺度归一化的高斯拉普拉斯函数的极大值和极小值同其它的特征提取函数,例如:梯度,Hessian或Harris角特征比较,能够产生最稳定的图像特征。而Lindeberg早在1994年就发现高斯差分函数 与尺度归一化的高斯拉普拉斯函数非常近似。这个在参考的博客中有详细的介绍和推导。为了获得旋转不变性,我们需要利用直方图统计各个方向关键点的个数来作为处理,选择峰值的80%作为辅助方向。在寻找极值点的过程中,会用每个像素点和其领域的8个点以及上下两

你可能感兴趣的:(CV,CV)