原文链接:http://www.cnblogs.com/cfantaisie/archive/2011/06/14/2080917.html

 

主要步骤

1)、尺度空间的生成;

2)、检测尺度空间极值点;

3)、精确定位极值点;

4)、为每个关键点指定方向参数;

5)、关键点描述子的生成。

L(x,y,σ), σ= 1.6 a good tradeoff

    D(x,y,σ), σ= 1.6 a good tradeoff

关于尺度空间的理解说明:图中的2是必须的,尺度空间是连续的。  Lowe的论文中 ,

   将第0层的初始尺度定为1.6,图片的初始尺度定为0.5. 在检测极值点前对原始图像的高斯

  平滑以致图像丢失高频信息,所以 Lowe 建议在建立尺度空间前首先对原始图像长宽扩展

  一倍,以保留原始图像信息,增加特征点数量。尺度越大图像越模糊。

next octave 是由 first octave 降采样得到(如2

   尺度空间的所有取值,s为每组层数,一般为3~5

      同一组中的相邻尺度(由于k的取值关系,肯定是上下层)之间进行寻找

     在极值比较的过程中,每一组图像的首末两层是无法进行极值比较的,为了满足尺度

     变化的连续性,我们在每一组图像的顶层继续用高斯模糊生成了 3 幅图像,高斯金字

     塔有每组S+3层图像。DOG金字塔每组有S+2层图像.

   If ratio > (r+1)2/(r), throw it out (SIFT uses r=10)

表示DOG金字塔中某一尺度的图像x方向求导两次

通过拟和三维二次函数以精确确定关键点的位置和尺度(达到亚像素精度)?

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

Identify peak and assign orientation and sum of magnitude to key point

  The user may choose a threshold to exclude key points based on their

                             assigned sum of magnitudes.

      利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数,使算子具备

      旋转不变性。以关键点为中心的邻域窗口内采样,并用直方图统计邻域像素的梯度

      方向。梯度直方图的范围是0~360度,其中每10度一个柱,总共36个柱。随着距

      中心点越远的领域其对直方图的贡献也响应减小.Lowe论文中还提到要使用高斯函

      数对直方图进行平滑,减少突变的影响。

关键点描述子的生成步骤

通过对关键点周围图像区域分块,计算块内梯度直方图,生成具有独特性

          的向量,这个向量是该区域图像信息的一种抽象,具有唯一性。

      每一个小格都代表了特征点邻域所在的尺度空间的一个像素 ,箭头方向代表了像素梯

      度方向,箭头长度代表该像素的幅值。然后在4×4的窗口内计算8个方向的梯度方向直

      方图。绘制每个梯度方向的累加可形成一个种子点。

      每个直方图有8方向的梯度方向,每一个描述符包含一个位于关键点附近的四个直方图

      数组.这就导致了SIFT的特征向量有128维.(先是一个4×4的来计算出一个直方图,

      每个直方图有8个方向。所以是4×4×8=128维)将这个向量归一化之后,就进一步

      去除了光照的影响。

     旋转为主方向

基本概念及一些补充

什么是局部特征?

•局部特征从总体上说是图像或在视觉领域中一些有别于其周围的地方

•局部特征通常是描述一块区域,使其能具有高可区分度

•局部特征的好坏直接会决定着后面分类、识别是否会得到一个好的结果

局部特征需具备的特性

•重复性

•可区分性

•准确性

•数量以及效率

•不变性

局部特征提取算法-sift

•SIFT算法由D.G.Lowe 1999年提出,2004年完善总结。后来Y.Ke将其描述子部分用PCA代替直方图的方式,对其进行改进。

  •SIFT算法是一种提取局部特征的算法,在尺度空间寻找极值点,提取位置,尺度,旋转不变量

•SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性。

•独特性好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配。

•多量性,即使少数的几个物体也可以产生大量SIFT特征向量。

•可扩展性,可以很方便的与其他形式的特征向量进行联合。

尺度空间理论

•尺度空间理论目的是模拟图像数据的多尺度特征

•其基本思想是在视觉信息图像信息处理模型中引入一个被视为尺度的参数, 通过连续变化尺度参数获得不同尺度下的视觉处理信息, 然后综合这些信息以深入地挖掘图像的本质特征。

描述子生成的细节

•以极值点为中心点,并且以此点所处于的高斯尺度sigma值作为半径因子。对于远离中心点的梯度值降低对其所处区域的直方图的贡献,防止一些突变的影响。

•每个极值点对其进行三线性插值,这样可以把此极值点的贡献均衡的分到直方图中相邻的柱子上

归一化处理

•在求出4*4*8的128维特征向量后,此时SIFT特征向量已经去除了尺度变化、旋转等几何变形因素的影响。而图像的对比度变化相当于每个像素点乘上一个因子,光照变化是每个像素点加上一个值,但这些对图像归一化的梯度没有影响。因此将特征向量的长度归一化,则可以进一步去除光照变化的影响。

•对于一些非线性的光照变化,SIFT并不具备不变性,但由于这类变化影响的主要是梯度的幅值变化,对梯度的方向影响较小,因此作者通过限制梯度幅值的值来减少这类变化造成的影响。

PCA-SIFT算法

•PCA-SIFT与标准SIFT有相同的亚像素位置,尺度和主方向。但在第4步计算描述子的设计,采用的主成分分析的技术。

•下面介绍一下其特征描述子计算的部分:

•用特征点周围的41×41的像斑计算它的主元,并用PCA-SIFT将原来的2×39×39维的向量降成20维,以达到更精确的表示方式。

•它的主要步骤为,对每一个关键点:在关键点周围提取一个41×41的像斑于给定的尺度,旋转到它的主方向 ;计算39×39水平和垂直的梯度,形成一个大小为3042的矢量;用预先计算好的投影矩阵n×3042与此矢量相乘;这样生成一个大小为n的PCA-SIFT描述子。

SIFT 特征提取算法总结的更多相关文章

  1. [转]SIFT特征提取分析

    SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,该算法通过求一幅图中的特征点(interest points,or corner points) ...

  2. 特征提取算法(3)——SIFT特征提取算子

    目录: 前言 1.高斯尺度空间GSS 2.高斯差分DOG 用DoG检测特征点 GSS尺度选择 3.图像金字塔建立 用前一个octave中的倒数第三幅图像生成下一octave中的第一幅图像 每层octa ...

  3. SIFT特征提取分析

    SIFT特征提取分析 sift 关键点,关键点检测 读'D. G. Lowe. Distinctive Image Features from Scale-Invariant Keypoints[J] ...

  4. SIFT特征提取分析(转载)

    转载自: http://blog.csdn.net/abcjennifer/article/details/7639681 SIFT(Scale-invariant feature transform ...

  5. 从K近邻算法谈到KD树、SIFT+BBF算法

    转自 http://blog.csdn.net/v_july_v/article/details/8203674 ,感谢july的辛勤劳动 前言 前两日,在微博上说:“到今天为止,我至少亏欠了3篇文章 ...

  6. 从K近邻算法、距离度量谈到KD树、SIFT+BBF算法

    转载自:http://blog.csdn.net/v_july_v/article/details/8203674/ 从K近邻算法.距离度量谈到KD树.SIFT+BBF算法 前言 前两日,在微博上说: ...

  7. 【特征检测】BRISK特征提取算法

    [特征检测]BRISK特征提取算法原创hujingshuang 发布于2015-07-24 22:59:21 阅读数 17840 收藏展开简介        BRISK算法是2011年ICCV上< ...

  8. 3. opencv进行SIFT特征提取

    opencv中sift特征提取的步骤 使用SiftFeatureDetector的detect方法检测特征存入一个向量里,并使用drawKeypoints在图中标识出来 SiftDescriptorE ...

  9. 肺结节CT影像特征提取(二)——肺结节CT图像特征提取算法描述

    摘自本人毕业论文<肺结节CT影像特征提取算法研究> 医学图像特征提取可以认为是基于图像内容提取必要特征,医学图像中需要什么特征基于研究需要,提取合适的特征.相对来说,医学图像特征提取要求更 ...

随机推荐

  1. freeCodeCamp:Factorialize a Number

    计算一个整数的阶乘 如果用字母n来代表一个整数,阶乘代表着所有小于或等于n的整数的乘积. 阶乘通常简写成 n! 例如: 5! = 1 * 2 * 3 * 4 * 5 = 120 /*思路 阶乘等于fo ...

  2. 5、清理mac缓存和关闭后台运行程序

    一.清理mac 缓存  1.用鼠标点击桌面,然后按快捷键Command+Shift+G前往文件夹 2.输入路径:~/Library/Caches/ 3.清除所有的数据,把所有的Caches文件夹得都行 ...

  3. php使用位与运算符【&】或【|】实现权限管理

    权限值是这样的2^0=1,相应2进数为”0001″(在这里^我表示成”次方”,即:2的0次方,下同)2^1=2,相应2进数为”0010″2^2=4,相应2进数为”0100″2^3=8,相应2进数为”1 ...

  4. when you're gone

      when you're gone ——艾薇儿 I always needed time on my own 我真的需要一些独处的时间 I never thought I'd need you th ...

  5. sublime text 也能矩形选择

    原来用editplus,但发现sublime text后便果断选择这个,她真的是很完美,但有一点就是不能像editplus一样矩形选择(Ctrl+鼠标左键这我知道,但感觉很麻烦)而感到小小的不爽... ...

  6. Python 2 —— 基本数据类型及其运算

    基本运算 一.数字 **表示乘方运算 12 / 3 = 4.0浮点数 12 // 3 = 4整数 二.字符串 1.表示 单行:'...'或者"..." 多行:'''...'''或者 ...

  7. 分享一下SQLSERVER技术交流QQ群里的群共享资源

    分享一下SQLSERVER技术交流QQ群里的群共享资源 SQLSERVER技术交流QQ群已经开了一段时间了,人数已经有了100多号人, 而群里面很多SQLSERVER爱好者上传了他们宝贵的SQLSER ...

  8. linux下vi操作出现E325: ATTENTION的解决方法

    #rm  ***.***.swp #rm: remove regular file `.Test.java.swp'? y # OK,完成.再用VI打开就可以了.

  9. 聊聊JS与设计模式之(工厂Factory)篇------(麦当劳的故事)

    一,总体概要 1,笔者浅谈 说起设计模式其实并不是什么很新奇的概念,它也不是基于特定语言所形成的产物,它是基于软件设计原则以及相关的方法论和经过特定时期衍生出的若干解决方案.本文会以一个实例带入大家学 ...

  10. shellKali Linux Web 渗透测试— 初级教程(第三课)

    shellKali Linux Web 渗透测试— 初级教程(第三课) 文/玄魂 目录 shellKali Linux Web 渗透测试—初级教程(第三课) 课程目录 通过google hack寻找测 ...