转自:http://www.cnblogs.com/cfantaisie/archive/2011/06/14/2080917.html
主要步骤
1)、尺度空间的生成;
2)、检测尺度空间极值点;
3)、精确定位极值点;
4)、为每个关键点指定方向参数;
5)、关键点描述子的生成。
![](https://i-blog.csdnimg.cn/blog_migrate/45bd624b880dd875690606ad2f862381.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9b096972d044220165e9b1195b0f9f29.png)
L(x,y,σ), σ= 1.6 a good tradeoff
![](https://i-blog.csdnimg.cn/blog_migrate/bd39bd7fddbbfc71a57bfad10af83f6f.png)
D(x,y,σ), σ= 1.6 a good tradeoff
![](https://i-blog.csdnimg.cn/blog_migrate/801c3db27441816946bb2723b1fa3791.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/5de88880c6d2f81a9ff666d644b35959.png)
关于尺度空间的理解说明:图中的2是必须的,尺度空间是连续的。在 Lowe的论文中 ,
将第0层的初始尺度定为1.6,图片的初始尺度定为0.5. 在检测极值点前对原始图像的高斯
平滑以致图像丢失高频信息,所以 Lowe 建议在建立尺度空间前首先对原始图像长宽扩展
一倍,以保留原始图像信息,增加特征点数量。尺度越大图像越模糊。
![](https://i-blog.csdnimg.cn/blog_migrate/9734af5aa11c41ff9f9a8ac86f117be3.png)
next octave 是由 first octave 降采样得到(如2)
![](https://i-blog.csdnimg.cn/blog_migrate/48d52faaf293ee10e3c9674300d09b12.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4aeca77000f62588de208aa82d873b59.png)
尺度空间的所有取值,s为每组层数,一般为3~5
![](https://i-blog.csdnimg.cn/blog_migrate/80fa58f36eb6dd48b19a81b551ca7ba1.png)
同一组中的
相邻尺度(由于k的取值关系,肯定是上下层)之间进行寻找
![](https://i-blog.csdnimg.cn/blog_migrate/adc294abb02df20ed79a3b1f3fb3c679.png)
在极值比较的过程中,每一组图像的首末两层是无法进行极值比较的,
为了满足尺度
变化的连续性,我们在每一组图像的顶层继续用高斯模糊生成了 3 幅图像,高斯金字
塔有每组S+3层图像。DOG金字塔每组有S+2层图像.
![](https://i-blog.csdnimg.cn/blog_migrate/7fd99bd9010ce54e36854b7e2975a187.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5c7b256795729a9f40a53b3aea2e201a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3c0352918db35db8c22c9eeec727d9dd.png)
If ratio > (r+1)2/(r), throw it out (SIFT uses r=10)
![](https://i-blog.csdnimg.cn/blog_migrate/57cdea99940e3fa209d891c6ce2dbf3c.png)
通过拟和三维二次函数以精确确定关键点的位置和尺度(达到亚像素精度)?
![](https://i-blog.csdnimg.cn/blog_migrate/32b2b7d67fb186cf1660b3b4918209aa.png)
直方图中的峰值就是主方向,其他的达到最大值80%的方向可作为辅助方向
![](https://i-blog.csdnimg.cn/blog_migrate/9ff124c1d24c02aa862a291881fe9965.jpeg)
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论文中还提到要使用高斯函
数对直方图进行平滑,减少突变的影响。
![](https://i-blog.csdnimg.cn/blog_migrate/91dfa2efb8b38badb301d9ebeb59d082.png)
关键点描述子的生成步骤
![](https://i-blog.csdnimg.cn/blog_migrate/c4be09f39133a1114bd4af2f0781ea5d.png)
通过对关键点周围图像区域分块,计算块内梯度直方图,生成具有独特性
的向量,这个向量是该区域图像信息的一种抽象,具有唯一性。
![](https://i-blog.csdnimg.cn/blog_migrate/35a1d6f05d99d2a000fc18315911c14c.png)
每一个小格都代表了特征点邻域所在的尺度空间的一个像素 ,箭头方向代表了像素梯
度方向,箭头长度代表该像素的幅值。然后在4×4的窗口内计算8个方向的梯度方向直
方图。
绘制每个梯度方向的累加可形成一个种子点。
![](https://i-blog.csdnimg.cn/blog_migrate/758369849798dc3df1ec4a47c274fe09.png)
每个直方图有8方向的梯度方向,每一个描述符包含一个位于关键点附近的四个直方图
数组.
这就导致了SIFT的特征向量有128维.(先是一个4×4的来计算出一个直方图,
每个直方图有8个方向。所以是4×4×8=128维)将这个
向量归一化之后,就进一步
去除了光照的影响。
![](https://i-blog.csdnimg.cn/blog_migrate/2974b3eefa5de91c530847f9ab468198.png)
旋转为主方向
![](https://i-blog.csdnimg.cn/blog_migrate/74f614b285403c1079de98ce56fb26b7.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/add31b3796d4acf1b3ba4a335db92b72.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4ba4a169e16784960eb52ad52a4e6a25.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e4dc5b41c9e2dc95f0126a3411bfb10b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8e7b581964317951a610c7400f9c203a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9b98cae3b7e0c9419822ce2c53800f73.png)
基本概念及一些补充
什么是局部特征?
•局部特征从总体上说是图像或在视觉领域中一些有别于其周围的地方
•局部特征通常是描述一块区域,使其能具有高可区分度
•局部特征的好坏直接会决定着后面分类、识别是否会得到一个好的结果
局部特征需具备的特性
•重复性
•可区分性
•准确性
•数量以及效率
•不变性
局部特征提取算法-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描述子。