SIFT算法原理(2)-极值点的精确定位
在SIFT解析(一)建立高斯金字塔中,我们得到了高斯差分金字塔;
检测DOG尺度空间极值点
SIFT关键点是由DOG空间的局部极值点组成的.以中心点进行3X3X3的相邻点比较,检测其是否是图像域和尺度域的相邻点的极大值或极小值.
(1)为了确保不是噪声我们先进型阈值二值化;
n和S一样,你想提取多少个图片的特征;(n)S表示每组提取多少层
(2)在差分金字塔中找极值点
特征点是由DOG空间的局部极值点组成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。特征点是由DOG空间的局部极值点组成的。如上图,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。
由于像素是离散的,且尺度空间也是离散的(前后尺度成k倍),有可能找到的极值点是真正极值点旁边的点,如下图:
因此需要极值点的精确定位; 利用已知的离散空间点插值得到的连续空间极值点的方法叫做子像素插值(Sub-pixel Interpolation)。
(3)极值点的精确定位
为了提高关键点的稳定性,需要对尺度空间DoG函数进行曲线拟合。利用DoG函数在尺度空间的Taylor展开式(拟合函数)为:
求导方法:就是利用相邻像素差值代替求导
可参考:sift算法原理详解(三)
检测到的极值点对应极值点的方程为:
(4)舍去低对比度的极值点
其中,代表相对插值中心的偏移量,当它在任一维度上的偏移量大于0.5时(即x或y或
),意味着插值中心已经偏移到它的邻近点上,所以必须改变当前关键点的位置。同时在新的位置上反复插值直到收敛;也有可能超出所设定的迭代次数或者超出图像边界的范围,此时这样的点应该删除,在Lowe中进行了5次迭代。另外,
过小的点易受噪声的干扰而变得不稳定,所以将
小于某个经验值(Lowe论文中使用0.03,Rob Hess等人实现时使用0.04/S)的极值点删除。同时,在此过程中获取特征点的精确位置(原位置加上拟合的偏移量)以及尺度()。
对应公式:T取0.04,n和S一样,你想提取多少个图片的特征;(n)S表示每组提取多少层
(5)边缘效应的去除(Hessian矩阵)
具体的海森矩阵数学公式可以参考:https://blog.csdn.net/qq_33854260/article/details/69808970 和 https://blog.csdn.net/qq_39521554/article/details/78895869
其与图像的关系:https://blog.csdn.net/lwzkiller/article/details/55050275
H(x,y)就是高斯差分金字塔中对x,y的二阶导数,及
然后我们需要知道矩阵的迹(Tr(H))是矩阵的特征根之和(α和β)和行列式的计算(Det(H));
首先我们知道在OpenCV——Harris、Shi Tomas、自定义、亚像素角点检测
harris焦点检测中的特征值的变化可以检测出边缘;
同理,既然我们能检测出边缘,就可以剔除边缘点;及希望特征根α和β两个值相差不多,及没有边缘效应;故希望r小于一定的阈值;
令为α最大特征值,β为最小的特征值,则公式的值在两个特征值相等时最小,随着的增大而增大。值越大,说明两个特征值的比值越大,即在某一个方向的梯度值越大,而在另一个方向的梯度值越小,而边缘恰恰就是这种情况。所以为了剔除边缘响应点,需要让该比值小于一定的阈值,因此,为了检测主曲率是否在某域值r下,只需检测
(4-7)
式(4-7)成立时将关键点保留,反之剔除。
原文链接:https://blog.csdn.net/qq_37374643/article/details/88606351
参考:SIFT算法原理详解
SIFT算法原理(2)-极值点的精确定位的更多相关文章
- SIFT算法原理(3)-确定关键点的主方位,构建关键点描述符
介绍官网:https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_sift_intro/py_sift_intro.html ...
- SIFT算法大综合
SIFT算法原理+参看资料+问题issue 参考书籍——<图像局部不变性特征与描述>王永明.王贵锦著 SIFT特征点提取——详见博客:https://blog.csdn.net/ling ...
- SIFT算法:KeyPoint找寻、定位与优化
SIFT算法:DoG尺度空间生产 SIFT算法:KeyPoint找寻.定位与优化 SIFT算法:确定特征点方向 SIFT算法:特征描述子 目录: 1.找寻 2.定位 3.优化 1 KeyPoint ...
- SIFT算法
备注:源代码还未理解,所以未附上——下周任务 一.SIFT算法 1.算法简介 尺度不变特征转换即SIFT (Scale-invariant feature transform)是一种计算机视觉的算法 ...
- 计算机视觉-sift(1)原理
1999年由David Lowe首先发表于计算机视觉国际会议(International Conference on Computer Vision,ICCV),2004年再次经David Lowe整 ...
- OpenCV计算机视觉学习(13)——图像特征点检测(Harris角点检测,sift算法)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 前言 ...
- SIFT算法详解(转)
http://blog.csdn.net/zddblog/article/details/7521424 目录(?)[-] 尺度不变特征变换匹配算法详解 Scale Invariant Feature ...
- 【转】 SIFT算法详解
尺度不变特征变换匹配算法详解Scale Invariant Feature Transform(SIFT)Just For Fun zdd zddmail@gmail.com 对于初学者,从Davi ...
- sift算法c语言实现
前段时间在做三维測量方面的研究.须要得到物体表面三维数据.sift算法是立体匹配中的经典算法.以下是对RobHess的SIFT源码的凝视.部分内容參考网上,在这里向各位大神表示感谢. http://b ...
随机推荐
- Java基础之五、Java编程思想(1-7)
一.对象导论 1:多态的可互换对象 面向对象程序设计语言使用了后期绑定的概念. 当向对象发送消息时,被调用的代码直到运行时才能确定.也叫动态绑定. 2:单根继承结构 所有的类最终都继承自单一的基类,这 ...
- Java线程池中线程的生命周期
设:我们有一个coreSize=10,maxSize=20,keepAliveTime=60s,queue=40 1.池初始化时里面没有任何线程. 2.当有一个任务提交到池就创建第一个线程. 3.若继 ...
- pytest文档32-allure描述用例详细讲解
前言 pytest+allure是最完美的结合了,关于allure的使用,本篇做一个总结. allure报告可以很多详细的信息描述测试用例,包括epic.feature.story.title.iss ...
- R语言入门:向量初探
R语言主要用于统计,因此引入了向量这个概念将更好地进行统计计算,在其他无法引入向量的语言当中则会使用循环来计算一些大规模的数据,在R语言当中则不需要,下面我们来看看R语言当中向量的具体用法吧! 首先, ...
- HTML5中input新增类型+表单新增属性+其他标签属性
@ (猴头) Input 新增属性 email 邮箱(只在手机端有效) url 网址(只在iphone手机有效) tel 手机号(只在手机端有效) number 数字(右侧有上下按钮,只能输入 ...
- mysql基于二进制文件的主从复制
1.设置主服务器配置 必须在主服务器上启用二进制日志,因为二进制日志是将更改从主服务器复制到从服务器的基础,如果未启用log-bin,则无法进行复制 复制组内的每个服务 ...
- 浅谈python的第三方库——numpy(终)
本文作为numpy系列的总结篇,继续介绍numpy中常见的使用小贴士 1 手动转换矩阵规格 转换矩阵规格,就是在保持原矩阵的元素数量和内容不变的情况下,改变原矩阵的行列数目.比如,在得到一个5x4的矩 ...
- opencv —— 在 VS 中的配置
添加一个新的 .cpp 文件到工程中 打开菜单栏视图中的属性管理器 选择 Debug|x64 ...
- maven的核心概念——依赖
一.STS集成maven(以下是mac版的STS) 1.点击Spring Tool Suite,点击preferences maven中的installations 点击add,选择对应的路径即可 点 ...
- maven的核心概念——坐标
7.1 几何中的坐标 [1]在一个平面中使用x.y两个向量可以唯一的确定平面中的一个点. [2]在空间中使用x.y.z三个向量可以唯一的确定空间中的一个点. 7.2 Maven的坐标 使用如下三个向量 ...