【学习笔记】SIFT尺度不变特征 (配合UCF-CRCV课程视频)
SIFT尺度不变特征
D. Lowe. Distinctive image features from scale-invariant key points, IJCV 2004
-Lecture 05 - Scale-invariant Feature Transform (SIFT)
- https://www.youtube.com/watch?v=NPcMS49V5hg
本文是上面UCF-CRCV课程视频的学习笔记。
DOG(Difference of Gaussian)角点 / Harris point(角点) 通过z轴旋转 点位置与未旋转的点 位置重合
所以角点Harris Point具有旋转不变性
Invariance to image scale and rotation
SIFT cares Local features
Steps for Extracting Key Points
1 Scale space peak selection
Potential locations for finding features
2 Key point localization
Accurately locating the feature key points
3 Orientation Assignment
Assigning orientation to the key points
4 Key point descriptor(SIFT descriptor)
Describing the key point as a high dimensional vector
detector VS descriptor
Scales
sigma for Canny and LG edge detection?
用来做高斯平滑的sigma如何选择。mask 的 width
zero-crossing检测出来边缘点(角点),zero-cross就是二阶导数为0的点。
Scale space(尺度空间)(Witkin, IJCAI 1983)
每一个弧形弯度定点都是一个zero-crossing
小的点会被更大scale的点包围并且替代
总结:实施全光谱尺寸的扫表,然后画出具有包含关系的zero-crossing如上图。
理解尺寸空间曲线(拱形曲线,bottom开口,顶部闭合;建立区间树)。
介绍:
尺度空间的生成目的是模拟图像数据多尺度特征。高斯卷积核是实现尺度变化的唯一线性核。
对计算机视觉而言,无法预知某种尺度的物体结构是有意的,因此有必要将所有尺度的结构表示出来。
比如温度曲线的采集,不能是无限的,这里在一定温度范围进行量化采集,温度范围即是选择的尺度。
多尺度表示方法:空间金字塔
Laplacian-of-Gaussian(LoG)
通过 LoG平滑,得到多scale的图片空间。
如何确定该点是interest point(或者说是角点):
取得当前尺度该点p 的9个neighbors和上下两种尺度的各9各neighbors,如果p的尺度是27各点中的最大值或者最小值点,那么p是Interest point。最后得到了(x, y, sigma)代表该点。
Approximation of LoG by Difference of Gaussians
(k*sigm) a Gasussian filter ~~~ LoG 是通过热传导方程推导的(Heat Equation)
typically, sigma = 1.6 k = sqrt(2);
Building a Scale Space
高斯卷积核是实现尺度变换的唯一线性核,于是一副二维图像的尺度空间定义为:
其中 G(x,y,σ) 是尺度可变高斯函数 ;(x,y)是空间坐标,是尺度坐标。σ大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的σ值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。为了有效的在尺度空间检测到稳定的关键点,提出了高斯差分尺度空间(DOG scale-space)。利用不同尺度的高斯差分核与图像卷积生成。
关于octave(八度)是为了实现高斯差分尺度空间,利用不同尺度的高斯差分核与图像卷积生成。每一个octave的输入都是上一层octave降采样的输出,这里因为采样的时候x , y都各减小一半,整个图像降采样之后就变为原来的1/4.
其实就是为了让每一个octave的变化差异更大,而进行认为的划分。
通过实验曲线表明
每一个octave 中有3个scale 最好。
sigma = 1.6
去掉一系列离群点的方法
Orientation Assignment
为了实现旋转不变性,计算key point(x, y)的中央导数,梯度级,L(smooth image)的方向

方向上将360度分为36个bin。统计每一个key point 的邻居的方向梯度。

梯度和边缘是更加稳定的feature 相比较于 raw intensity values
Descriptor是描述特征的重要工具

上图左(并不是全部neighbors,是全部neighbors的 1/2),image中有key point找到16*16 neighbors
16 * 16 / 4 * 4 (blocks) = 16 (histograms)
each 4 * 4 = 16 blocks using 1 histogram
16 (histograms) * 8(demensions) = 128 (demensions) -> vector -> Sift-descriptor
然后又是实验表明:
4 x 4 blocks && 8 bins 最好
Key Point matching
foreach (d1 in A_Descriptors)
foreach (d2 in B_Descriptors)
find_minimum_Euclidean_distance_beteween(d1, d2);
0.1 0.15... very close best match 0.1 / second match 0.15 = ratio = 80%
if ratio low, first match looks good
if high, could be ambiguous match
ratio 用来衡量第一近和第二近的两个点之间的相近程度,如果接近80% 那么干脆两个点都不选。因为有两个matching你不知道哪一个才是最好的!
Ratio 可以对correct matching num 产生影响

最后
pagerank 和 论文cities的统计思想类似。 考察论文被人引用的次数,类似统计网站被别的网站链接的次数。
H index = 5 means 你已经写了至少5篇papers,这些文章至少被引用了5次。
【学习笔记】SIFT尺度不变特征 (配合UCF-CRCV课程视频)的更多相关文章
- 基础学习笔记之opencv(6):实现将图片生成视频
基础学习笔记之opencv(6):实现将图片生成视频 在做实验的过程中.难免会读视频中的图片用来处理,相反将处理好的图片又整理输出为一个视频文件也是非经常常使用的. 以下就来讲讲基于opencv的C+ ...
- OpenCV-Python SIFT尺度不变特征变换 | 三十九
目标 在这一章当中, 我们将学习SIFT算法的概念 我们将学习找到SIFT关键点和描述算符. 理论 在前两章中,我们看到了一些像Harris这样的拐角检测器.它们是旋转不变的,这意味着即使图像旋转了, ...
- [ExtJS5学习笔记]第二十节 Extjs5配合数组的push方法,动态创建并加载组件
本文地址:http://blog.csdn.net/sushengmiyan/article/details/39226773 官方例子:http://docs.sencha.com/extjs/5. ...
- MYSQL进阶学习笔记九:MySQL事务的应用!(视频序号:进阶_21-22)
知识点十:MySQL 事务的应用 (21-22) 为什么要引入事务: 为什么要引入事务这个技术呢?现在的很多软件都是多用户,多程序,多线程的.对同一表可能同时有很多人在用,为保持数据的一致性,所以提出 ...
- Java学习笔记(韩顺平教育 b站有课程)
Java重要特点 面向对象(oop) 健壮性:强类型机制,异常处理,垃圾的自动收集 跨平台性的 (一个编译好的.class可以在多个系统下运行) TEST.java -> TEST.class ...
- 【官方文档】Nginx模块Nginx-Rtmp-Module学习笔记(三)流式播放Live HLS视频
源码地址:https://github.com/Tinywan/PHP_Experience HTTP Live Streaming(HLS)是由Apple Inc.实施的非常强大的流视频协议.HLS ...
- MYSQL进阶学习笔记十二:MySQL 表分区!(视频序号:进阶_29,30)
知识点十三:MySQL 表的分区(29) 一.什么要采用分区: 分区的定义: 当数据量过大的时候(通常是指百万级或千万级数据的时候),这时候需要将一张表划分几张表存储.一些查询可以得到极大的优化,这主 ...
- MYSQL进阶学习笔记五:MySQL函数的创建!(视频序号:进阶_13)
知识点六:MySQL函数的创建(13) 内置函数: 自定义函数: 首先查看是否已经开启了创建函数的功能: SHOW VARIABLES LIKE ‘%fun%’; 如果变量的值是OFF,那么需要开启 ...
- MYSQL进阶学习笔记二:MySQL存储过程和局部变量!(视频序号:进阶_4-6)
知识点三:MySQL存储过程和局部变量(4,5,6) 存储过程的创建: 创建存储过程的步骤: 首先选中数据库 改变分隔符,不让分号作为执行结束的标记.(通常情况下,改变分隔符命令 DELIMI ...
随机推荐
- Win8系统如何关闭用户账户控制UAC
按WIN+S,屏幕右侧出现搜索框,在搜索框中输入UAC,然后单击"更改用户账户控制设置" 然后把弹出的窗口改成"从不通知"就可以了
- 畅通project续
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submission(s) ...
- 安装和配置Apache-tomcat
https://tomcat.apache.org/download-90.cgi 我随便下载了一个,而且解压了 我把路径:G:\php\apache-tomcat-9.0.6\bin 放入path, ...
- C++卷积神经网络实例:tiny_cnn代码具体解释(6)——average_pooling_layer层结构类分析
在之前的博文中我们着重分析了convolutional_layer类的代码结构.在这篇博文中分析相应的下採样层average_pooling_layer类: 一.下採样层的作用 下採样层的作用理论上来 ...
- rand和srand的用法(转载)
首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明. rand(产生随机数)表头文件: #include<stdlib.h> ...
- [libcurl]_[0基础]_[使用libcurl下载大文件]
场景: 1. 在Windows编程时, 下载http页面(html,xml)能够使用winhttp库,可是并非非常下载文件,由于会失败. 由此引出了WinINet库,无奈这个库的稳定性比較低,使用样例 ...
- How to Use SFTP ?
Usage Build a SFTP session with your linux like server, e.g, by the tool "Xshell" or any y ...
- SQLServer导出单表数据
采用生成脚本---仅数据.. 如果是部分数据,可以先把部分数据备份到一个表中 select * into .. from ...
- C++中各大有名的科学计算库
在 C++中,库的地位是非常高的.C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论.现实中,C++的库门类繁多,解决 的问题也是极其广泛,库从轻量 ...
- 修改系统时间(取得服务器时间,使用SetLocalTime API函数,需要UAC权限)
我的客户遇到系统时间不对,自己又不会改,于是想到利用服务端时间来修改本地的系统时间. 第一步,把下面xml存成uac.xml文件备用. <?xml version="1.0" ...