原博客来自:http://blog.csdn.net/zddblog/article/details/7521424

定义:

尺度不变特征转化是一种计算机视觉算法,用于侦测和描述物体的局部性特征,在空间尺度中寻找极值点,这个点是关于大小,明暗,仿射变换稳定的,由David Lowe在1999年发表,2004年总结。

应用场景:

物体识别、机器人地图感知与导航、影像缝合、3d场景建立、手势识别、影像追踪、动作对比。

专利所属:

英属哥伦比亚大学。

简述:

局部影像特征的描述与侦测可以帮助识别物体,sift特征是基于物体上的一些局部外观的兴趣点而与影响的大小和旋转无关。对于光线、噪声、些微视角改变的容忍度也相当高。由于sift存在的这些特性,使得他们十分显著并且相对容易被撷取(采择精华)。在母数庞大的特征数据库中,很容易辨识物体而且鲜有误认。使用sift特征描述被部分遮挡的物体的准确率也相当高,最少只需要三个点就能确定物体的位置与方位。在先进的电脑硬件速度下和小型的特征数据库条件下,便是速度接近即时运算。sift特征的信息量大,适合在海量数据库中快速准确匹配。

sift算法的特点:

1、sift特征是图像的局部特征,它对旋转、大小缩放、亮度明暗保持不变性,对视角变化、放射变化、噪声也保持一定程度的稳定性;

2、独特性(Distinctiveness)好,信息量丰富,适合在海量特征数据库中进行快速准确地匹配。

3、多量性,即使少数几个物体也会产生大量的sift特征

4、高速性,经过优化的sift匹配算法甚至可以达到实时要求

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

sift算法可以解决的问题:

由于目标自身状态、场景所处的环境和城乡器材的城乡特性等因素会影响配准/目标识别跟踪的性能。而sift算法在一定程度上可以解决:

1、目标的旋转、缩放、平移(RST)

2、图像仿射/投影变换(视点viewpoint)

3、光照影响(illumination)

4、目标遮挡(occlusion)

5、杂物场景(clutter)

6、噪声

sift算法实质:

在不同尺度空间上查找关键点(特征点),并计算出关键点的方向。sift所查找到的关键点是一些十分突出,不会因光照,仿射变换和噪声等因素而变化的点,如角点,边缘点,暗区的亮点及亮区的暗点等。

实现sift算法的步骤:

4步

1、尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。

2、关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选取则依据他们的稳定程度。

3、方向确定:基于图像局部的梯度方向,给每个位置的关键点一个或多个方向。所有后面对图像数据的操作都对图像进行方向、尺度、旋转的变换,从而提供针对于这些变换具有健壮性的特征点。

4、关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和明暗变化。

第一步:高斯模糊
概述。

sift算法是在不同的尺度空间上查找关键点,而尺度空间的获取需要使用搞死模糊来实现。【使用高斯卷积实现尺度变化。他们说这是唯一靠谱的方式。

来源:

http://ask.csdn.net/questions/157428

https://www.zhihu.com/question/23341785

记住它是唯一变换核儿好了。

先看 http://blog.csdn.net/zddblog/article/details/7521424

了解概况,然后看 http://bbs.csdn.net/topics/390340232  你发现已经能用上一篇文章的知识点回答一些这篇文章中网友的一些提问了。比如把2维高斯模糊采用分离的方式进行计算,会大幅提高运算速度。

然后这里有一个高斯模糊的完成版本:http://www.cnblogs.com/hoodlum1980/p/4528486.html

然后看看阮一峰先生的这个分享:

http://www.ruanyifeng.com/blog/2012/11/gaussian_blur.html

看到0 3 10个像素的模糊我忽然想到了,或许尺度不变的缘由就在高斯模糊,记得把图像放大会失真么?对了!就是这里,如果一张已经确定的图片放在计算机上显示,不断放大,看到的东西会越来越接近像素点,那么,那么如果无论多少个像素的模糊都能提取到兴趣点,那么这个兴趣点是不是与缩放无关也就是大小不敏感的特征点。

【阮一峰先生这里有这样一句话:“如果使用简单平均,显然不是很合理,因为图像都是连续的,越靠近的点关系越密切,越远离的点关系越疏远。因此,加权平均更合理,距离越近的点权重越大,距离越远的点权重越小。”跟李飞之前说的:“老师说有颜色的互相渗透,一个深色的葡萄酒瓶上面不可能只是深色,必然有灯光以及其他地方映到瓶子上的浅色,如果你这个视角后面是白色的墙,那么就应该把很少的白色点在瓶子上,同时白色的墙上也应该有深色瓶子的印记,并且两个色区越是靠的近这种渗透就要越多,如果越远渗透就越小。”来自:http://blog.csdn.net/bzdwdmzjsmff/article/details/51317430 第二个点像素部分的描述有了契合。】

看到某些东西总是不知道是什么,比如。其实我现在就是不知道是什么。解释是正态分布的标准差。并且我也知道越大图像越扁平,越小,图像越高瘦。可是对于某一张图片来说,要进行高斯模糊,这个是什么呢?

在opencv里面cvSmooth(img, out, CV_GAUSSIAN,1,31);

要指定,关于x的模糊和y的模糊,也就是说这个函数已经把2维高斯模糊变成了分离高斯模糊用以减小计算量。并且可以让图像完成对水平竖直两个维度的平滑。

哦哦哦,好想想清了,是指图像的偏离程度,我们以前学的只是,是说通常只要算左右3内的计算量,用以运算权重影响,也就是采用3结果比较不准确,但我们当时的学习其实计算到这个范围内就准了,如果是6的话,就可以保证相关像素的影响。但是如果我们取了10,准确率还会高,事实上如果包含了整个数轴的话,必然会符合真实的结果,但是这样做并不值得,因为没有必要,所以通常把这个在计算机图像处理程序中取到(6+1)*(6+1),3在左,1是它本身,3在右。可是的取值是什么来着?

具体的运算过程如:http://www.ruanyifeng.com/blog/2012/11/gaussian_blur.html

中四五所描述的那样。灰图直接算,彩图就按rgb分别算。

1、可是还是不懂的取值是怎么得到的。

模糊部分就算是完成了,sigma的取值从0.6,到默认的1 【这里说默认是1.http://www.cnblogs.com/JohnShao/archive/2011/06/02/2067800.html】到10,好像多少都是可以的,可是 这个的取值有什么规范么?

所以第一大步就完成了,接下来,是关键点定位,方向确定,关键点描述。

第二大步:尺度空间极值检测

尺度空间使用高斯金字塔表示。Tony Linderberg指出尺度规范化的LoG(Laplacion of Gaussian)算子具有真正的尺度不变性,Lowe使用高斯差分金字塔近似LoG算子,在尺度空间检测稳定的关键点。【还不知道是啥意思】

3.1尺度空间理论

历史:

尺度空间理论的基本思想:

在图像信息处理模型中,引入一个被称为尺度的参数,

《sift算法详解》阅读笔记的更多相关文章

  1. 阅读《RobHess的SIFT源码分析:综述》笔记

    今天总算是机缘巧合的找到了照样一篇纲要性质的文章. 如是能早一些找到就好了.不过“在你认为为时已晚的时候,其实还为时未晚”倒是也能聊以自慰,不过不能经常这样迷惑自己,毕竟我需要开始跑了! 就照着这个大 ...

  2. RobHess的SIFT源码分析:imgfeatures.h和imgfeatures.c文件

    SIFT源码分析系列文章的索引在这里:RobHess的SIFT源码分析:综述 imgfeatures.h中有SIFT特征点结构struct feature的定义,除此之外还有一些特征点的导入导出以及特 ...

  3. RobHess的SIFT源码分析:综述

    最初的目的是想做全景图像拼接,一开始找了OpenCV中自带的全景拼接的样例,用的是Stitcher类,可以很方便的实现全景拼接,而且效果很好,但是不利于做深入研究. 使用OpenCV中自带的Stitc ...

  4. 阅读《RobHess的SIFT源码分析:综述》笔记2

    今天开始磕代码部分. part1: 1. sift特征提取. img1_Feat = cvCloneImage(img1);//复制图1,深拷贝,用来画特征点 img2_Feat = cvCloneI ...

  5. element-ui button组件 radio组件源码分析整理笔记(一)

    Button组件 button.vue <template> <button class="el-button" @click="handleClick ...

  6. element-ui 组件源码分析整理笔记目录

    element-ui button组件 radio组件源码分析整理笔记(一) element-ui switch组件源码分析整理笔记(二) element-ui inputNumber.Card .B ...

  7. element-ui Carousel 走马灯源码分析整理笔记(十一)

    Carousel 走马灯源码分析整理笔记,这篇写的不详细,后面有空补充 main.vue <template> <!--走马灯的最外层包裹div--> <div clas ...

  8. STL源码分析读书笔记--第二章--空间配置器(allocator)

    声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...

  9. element-ui MessageBox组件源码分析整理笔记(十二)

    MessageBox组件源码,有添加部分注释 main.vue <template> <transition name="msgbox-fade"> < ...

  10. element-ui switch组件源码分析整理笔记(二)

    源码如下: <template> <div class="el-switch" :class="{ 'is-disabled': switchDisab ...

随机推荐

  1. 使用logback.xml配置来实现日志文件输出

    转自:http://sungang-1120.iteye.com/blog/2104296 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback- ...

  2. ramips芯片,openwrt安装njit8021xclient

    1.软件安装包 http://pan.baidu.com/s/1tcY2p 解压并通过winscp上传至路由器,利用putty进入控制台,依次输入以下4条命令,每次输入后点一次执行opkg insta ...

  3. 取消本地SVN文件夹与服务器关联

    问题:之前建了一个SVN代码库,同步了代码上去,但中途发现建库时的规则搞错了,就把服务器上的库给删了重建,然后改变本地代码的svn服务器关联地址,但使用Relocate一直报错. 错误有两种情况:1. ...

  4. HDU-4749 Parade Show KMP算法 | DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4749 题意:给两个串S和P,求S串中存在多少个与P串的大小关系一样的串. 因为数字的范围是1<= ...

  5. 开源软交换系统 FreeSwitch 与 Asterisk 比较

    Asterisk 与freeswitch都是流行的开源软交换服务器,Asterisk出现的比较早,大概在1999年开始此项目,应该是最流行的开源软交换服务器,整个社区上下游都已经很成熟. freesw ...

  6. 你真的了解一段Java程序的生命史吗

    作为一名程序猿 ,我们每天都在写Code,但你真的了解它的生命周期么?今天就来简单聊下它的生命历程,说起一段Java Code,从出生到game over大体分这么几步:编译.类加载.运行.GC. 编 ...

  7. Hibernate之基于主键映射的一对一关联关系

    1. 基于主键的映射策略:指一端的主键生成器使用foreign策略,表明根据"对方"的主键来生成自己的主键,自己并不能独立生成主键.并用<param> 子元素指定使用当 ...

  8. codeforces 630KIndivisibility(容斥原理)

    K. Indivisibility time limit per test 0.5 seconds memory limit per test 64 megabytes input standard ...

  9. 在Linux下部署activemq

    今天的任务就是在一台新的服务器上继续部署activemq.其实都蛮简单的.首先先下载包:115U盘下载 2 上传到linux下的某个文件夹下.解压缩 tar -zxvf apache-activemq ...

  10. 使用SVG Path绘图

    最近一个项目,需要做个Web版本的设计器,用来进行工厂流水线布局的设计. 项目中采用了SVG.JS来做,但是以前流水线是采用单纯的画线的方式实现.客户提出希望用不同的底纹表示不同的流水线,经过一番调查 ...