SIFT的来龙去脉-&- 个人代码实现(opencv3;C++)

SIFT(尺度不变特征变换)是一种强大的图像特征点检测算法,由David G. Lowe提出。本文深入探讨SIFT的角点检测、尺度空间、高斯金字塔与DOG金字塔的构建,并对SIFT流程进行总结,同时附带个人使用OpenCV3的C++代码实现。
摘要由CSDN通过智能技术生成

/*
*copyright : 刘振.南京大学
*time : 2018.07.20
*/

SIFT(Scale Invariant Feature Transform)是一种提取图像中稳定特征点的算法,具有。它在1999年由David.G.Lowe提出,并于2004年改进,想精准理解SIFT思想的童鞋建议阅读一下论文 ,Lowe论文地址:http://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf

内容简介:
1. 角点检测
2. 尺度、图像金字塔
3. LOG、DOG算子
4. sift的流程概述
5. sift细节点
6. 代码实现

一、角点检测

这个暂时不多说,参考这篇博客。https://blog.csdn.net/linolzhang/article/details/54342610

二、尺度空间

{ 尺度,一般表示物体的尺寸与尺码,也用来表示处事或看待事物的标准。
} ———以上摘自百度百科。

尺度是特征的尺度,离开尺度谈特征都是耍流氓。拿山水图举个例,“此处有座山”是在一个宏大的尺度上提取,而“此处有个人” 尺度就相对很小,“此处有个蚂蚁”就是更小的尺度了。 提取”山“这个大尺度特征,要求我们忽略小尺度细节,这里到底有没有人、有没有蚂蚁这些细节都不影响结果。因此提取图像特征、或者确定特征点都是在一定尺度上进行的,可将尺度看作特征的一个参数。
当然上一段是人类大脑思考的过程,具体图像处理中,我们的特征提取算子都是基于固定像素级别、且对所有图所有位置所有像素权值共享的(事实上sift中 特征点检测算子的大小固定、特征描述算子的大小有所浮动)。也就是说对所有图算子提取的尺度都几乎相同,这可如何是好?
不打紧,既然特征大小固定、那就改变图像,两种方法。1)滤波,一般采用高斯滤波。滤波会消除图像的细节、增大算子的感知野。相当于变相增加了算子提取的特征的尺度。2)缩放图像。算子f 提取的1/2大小图像特征,相当于原图中两倍尺度的特征。 采用高斯模糊和图像缩放组合生成的一系列图,使得同样的算子能提取原图的不同尺度特征,我们将这些尺度称为 对应的图像的尺度。

必须一提的是,在sift中图像的尺度统一由高斯滤波的程度σ来度量,图像1/2下采样并改变其尺度,原因是因为:1)sift中特征描述算子的”宽度大小”并不固定,而是与图像的大小、图像的尺度成线性关系。假设图像a特征描述算子宽度为L,下采样图像b尺度不变,算子宽度为L*1/2*1=L/2。 L/2在b中提取的特征的尺度 和L在a中提取的特征的尺度是一样的。
2)经过足够程度的高斯模糊,局部细节已经完全抹去,下采样不会损失任何细节。

至此,我们将特征的尺度变成了图像的尺度,并为SIFT高斯金字塔的定义做好了铺垫。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值