SIFT Features

Scale Invariant Feature Transform (SIFT) is an approach for detecting and extracting local feature descriptors that are reasonably invariant to change in illumination, image noise, rotation, scaling, and small changes in viewpoint.

SIFT是一种可以检测并计算出对于在光照、图像噪点、旋转、缩放和视点变换时提取出不变的局部特征值的算法。

Detection stages for SIFT features:

  • Scale-space extrema detection
  • Keypoint localization
  • Orientation assignment
  • Generation of keypoint descriptors

SIFT特征值的计算步骤:

  • 检测尺度空间的极值点
  • 定位关键点
  • 分配指向
  • 关键点的描述符的生成

Scale-space extrema detection

可能理解有误,有待后期确定!!具体参照SIFT进阶

  1. Local extrema detection, the pixel marked ‘x’ is compared against its 26 neighbours in a 3*3*3 neighbourhood that spans adjacent DoG images (from Lowe, 2004)

    1. 局部极值的检测,被标记为‘x’的像素会与其周围的26个像素比较。(即同层的8个像素,以及上下相邻的两层的一共18个像素比较。)
    2. If the pixel is a local maximum or minimum, it is selected as a candidate keypoint.
    3. 如果像素是局部的最大值或者最小值,则会被作为备选的特征值。

For each candidate keypoint:

  • Interpolation of nearby data is used to accurately determine its position.
  • Keypoints with low contrast are removed
  • Responses along edges are eliminated
  • The keypoint is assigned an orientation

对于每一个备选特征值来说:

  • 与附近的数据做插值运算是为了能保证其精确的定位
  • 去掉对比较低的特征值
  • 消除边缘回应
  • 为特征值分配指向

To determine the keypoint orientation, a gradient orientation histogram is computed in the neighbourhood of the keypoint.

为了定位特征值的指向,会使用到一个计算出的周围特征值的变换指向直方图来表示。

Peaks in the histogram correspond to dominant orientations. A separate keypoint is created for the direction corresponding to the histogram maximum, and any other direction within 80% of the maximum value.

直方图中的峰值就是主方向,其他的达到最大值80%的方向可作为辅助方向。

All the properties of the keypoint are measured relative to the keypoint orientation, this provides invariance to rotation.

特征值的所有性质都与特征点的指向相关,这样对于旋转来说就是不变的了。

SIFT feature representation

Once a keypoint orientation has been selected, the feature descriptor is computed as a set of orientation histograms on 4*4 pixel neighbourhoods. The orientation histograms are relative to the keypoint orientation, the orientation data comes from the Gaussian image closest in scale to the keypoint’s scale.

如果一个关键点的指向选定之后,特征描述符就会按照一个邻近4×4像素的指向直方图来计算。指向直方图与关键点的指向相关,指向数据来源于高斯图像最接近关键点的尺度的那些值。

Just like before, the contribution of each pixel is weighted by the gradient magnitude, and a Gaussian with σ 1.5 times the scale of the keypoint.

与之前类似,每一个像素的影响是按照它的梯度的加权来的。

Histograms contain 8 bins each, and each descriptor contains an array of 4 histograms around the keypoint. This leads to a SIFT feature vector with 4*4*8 = 128 elements. This vector is normalized to enhance invariance to changes in illumination.

每个直方图有8方向的梯度方向,每一个描述符包含一个位于关键点附近的四个直方图数组。这就导致了SIFT的特征向量有128维。(先是一个4×4的来计算出一个直方图,每个直方图有8个方向。所以是4×4×8=128维)将这个向量归一化之后,就进一步去除了光照的影响。

SIFT feature matching

  • Find nearest neighbour in a database of SIFT features from training images.
  • For robustness, use ratio of nearest neighbour to ratio of second nearest neighbour
  • Neighbour with minimum Euclidean distance -> expensive search
  • Use an approximate, fast method to find nearest neighbour with high probability.

SIFT特征拟合

  • 在图片的SIFT特征值数据库中找到最近的特征值
  • 为了使的更为健全,使用最近一个点的比去闭上第二近的点
  • 计算临近的点的最短欧式距离(很费时的查找)
  • 使用一个大概、但是更快的且可能性更高的方法来查找最近的邻居。

Recognition using SIFT features

  • Compute SIFT features on the input image
  • Match these features to the SIFT feature database
  • Each keypoint specifies 4 parameters: 2D location, scale, and orientation.
  • To increase recognition robustness: Hough transform to identify clusters of matches that vote for the same object pose.
  • Each keypoint votes for the set of object poses that are consistent with the keypoint’s location, scale, and orientation.
  • Locations in the Hough accumulator that accumulate at least 3 votes are selected as candidate object/pose matches.
  • A verification step matches the training image for the hypothesized object/pose to the image using a least-square fit to the hypothesized location, scale, and orientation of the object.

使用SIFT特征值进行识别

  • 计算输入图像的SIFT特征值
  • 把这些特征值与SIFT特征值数据库进行匹配拟合
  • 每一个关键点详述了4个参数:二维的位置、尺度及指向
  • 为了提高识别的健壮性:使用霍夫转换来识别一串匹配的点,这些点指示了相同的物体姿态
  • 每一个关键点指示的物体姿态应该与关键点的位置、尺度和指向一致
  • 霍夫叠加器叠加了至少3个提议的位置会被选为备选的物体/姿态拟合
  • 核实阶段,使用实验图片去匹配输入图片的假定的物体/姿态,这时使用的是最小二平方来拟合假定的物体位置、尺度和指向。
时间: 2024-11-08 21:52:50

SIFT Features的相关文章

Distinctive Image Features from Scale-Invariant Keypoints(个人翻译+笔记)-介绍

Distinctive Image Features from Scale-Invariant Keypoints,这篇论文是图像识别领域SIFT算法最为经典的一篇论文,导师给布置的第一篇任务就是它.网上找了好多找不到中译本,那就自己动手丰衣足食吧,顺便造福后人,花时间翻译啃下来并做一个笔记在这吧. ---------------------------------------------------------------------------------------------------

【Paper Reading】Object Recognition from Scale-Invariant Features

Paper: Object Recognition from Scale-Invariant Features Sorce: http://www.cs.ubc.ca/~lowe/papers/iccv99.pdf SIFT 即Scale Invariant Feature Transfrom, 尺度不变变换,由David Lowe提出.是CV最著名也最常用的特征.在图像目标识别的应用中,常常要求图像的特征有很好的roboust即不容易受到平移,旋转,尺度缩放,光照,仿射的英雄.SIFT算子具有

OpenCV2学习笔记(十二):SURF与SIFT算法

当尝试在不同图像之间进行特征匹配时,通常会遇到图像的大小.方向等参数发生改变的问题,简而言之,就是尺度变化的问题.每幅图像在拍摄时与目标物体的距离是不同的,因此要识别的目标物体在图像中自然会存在不同的尺寸. 因此,计算机视觉中引入尺度不变的特征,主要的思想是每个检测到的特征点都伴随对应的尺度因子.著名的尺度不变特征检测器SIFT(scale invariant feature transform),具有尺度,旋转,仿射,视角,光照不变性.而加速鲁棒特性特征SURF(Speeded Up Robu

在vs环境中跑动sift特征提取

因为在前两天的学习中发现.在opencv环境中跑动sift特征点提取还是比较困难的. 所以在此,进行记述. 遇到的问题分别有,csdn不愿意花费积分.配置gtk困难.教程海量然而能跑者鲜.描述不详尽等. [然后我却是发现这个borwhess实在是不知道叫先生何名为好.] 话归正题. 以下跑动具体过程: 首先去: http://blog.csdn.net/masibuaa/article/details/9246493 发现main.cpp 也就是:检测sift的部分. 这个回头慢慢凿.先跑起来:

【特征匹配】SIFT原理与C源码剖析

关于SIFT的原理已经有很多大牛的博客上做了解析,本文重点将以Rob Hess等人用C实现的代码做解析,结合代码SIFT原理会更容易理解.一些难理解点的用了☆标注. 欢迎大家批评指正! SIFT(Scale-invariant feature transform)即尺度不变特征转换,提取的局部特征点具有尺度不变性,且对于旋转,亮度,噪声等有很高的稳定性. SIFT特征点提取 本文将以下函数为参照顺序介绍SIFT特征点提取与描述方法. 1.图像预处理 2.构建高斯金字塔(不同尺度下的图像) 3.生

sift算法c语言源代码详细注释

前段时间在做三维测量方面的研究,需要得到物体表面三维数据,sift算法是立体匹配中的经典算法,下面是对RobHess的SIFT源代码的注释.部分内容参考网上,在这里向各位大神表示感谢! http://write.blog.csdn.net/postedit/46620015 /*头文件*/ #ifndef SIFT_H #define SIFT_H #include "cxcore.h" /******************************** Structures ****

哈工大深研院数字图像处理第二次大作业:水果自动识别(2)HSV空间聚类及SIFT算法目标识别

老规矩,直接贴报告~ Programe list: Programe was developed in the condition of Windows aswell as Linux server, programming language is Matlab (www.mathworks.com). Classify.m, Kmeans.m: function for K-means clustering. main_Kmeans.m: main function for K-means c

What does the distance attribute in DMatches mean?

In this context, a feature is a point of interest on the image. In order to compare features, you "describe" them using a feature detector. Each feature is then associated to a descriptor. When you match features, you actually match their descri

图像处理与计算机视觉基础,经典以及最近发展

*************************************************************************************************************** 在这里,我特别声明:本文章的源作者是   杨晓冬  (个人邮箱:[email protected]).原文的链接是 http://www.iask.sina.com.cn/u/2252291285/ish.版权归 杨晓冬 朋友所有. 我非常感谢原作者辛勤地编写本文章,并愿意共