图像金字塔(pyramid)与 SIFT 图像特征提取(feature extractor)
2016-11-10 11:55
411 查看
David Lowe(SIFT 的提出者)
其支持在
整个算法分为以下几个部分:
1、构建尺度空间
这是一个初始化操作,尺度空间理论目的是模拟图像数据的多尺度特征。
高斯卷积核是实现尺度变换的唯一线性核,于是一副二维图像的尺度空间(多尺度特征自然在尺度空间中定义)定义为:
L(x,y,σ)=G(x,y,σ)⋆I(x,y)
二维的高斯卷积核的形式为:G(x,y,σ)=12πσ2e−(x2+y2)/2σ2
σ 大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的 σ 值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。为了有效的在尺度空间检测到稳定的关键点,提出了高斯差分尺度空间(DOG scale-space)。利用不同尺度的高斯差分核与图像卷积生成。
D(x,y,σ)==(G(x,y,kσ)−G(x,y,σ))⋆I(x,y)L(x,y,kσ)−L(x,y,σ)
图像金字塔的建立:对于一幅图像I,建立其在不同尺度(scale)的图像,也成为子八度(octave),这是为了scale-invariant,也就是在任何尺度都能够有对应的特征点,第一个子八度的scale为原图大小,后面每个octave为上一个octave降采样的结果,即原图的1/4(长宽分别减半),构成下一个子八度(高一层金字塔)。
2、LoG 近似 DoG 找到关键点<检测DOG尺度空间极值点>
为了寻找尺度空间的极值点,每一个采样点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。 一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点,如图所示。
3、除去不好的特征点
SIFT 特征提取分析
0. 图像金字塔变换(matlab)
matlab 对图像金字塔变换接口的支持(impyramid),十分简单好用。
其支持在
reduce和
expand两种方式的变换,分别是成比例的缩小和放大。
% 加载图像数据到内存 I = imread('cameraman.tif'); size(I) % reduce ==> {2, 4, 8} I1 = impyramid(I, 'reduce'); size(I1) I2 = impyramid(I1, 'reduce'); size(I2) I3 = impyramid(I2, 'reduce'); size(I3) figure a1 = subplot(1, 4, 1); imshow(I), xs = get(a1, 'xlim'); ys = get(a1, 'ylim'); a2 = subplot(1, 4, 2); imshow(I1), set(a2, 'xlim', xs, 'ylim', ys); a3 = subplot(1, 4, 3); imshow(I2), set(a3, 'xlim', xs, 'ylim', ys); a4 = subplot(1, 4, 4); imshow(I3) set(a4, 'xlim', xs, 'ylim', ys); I1 = impyramid(I, 'expand'); size(I1) I2 = impyramid(I1, 'expand'); size(I2) I3 = impyramid(I2, 'expand'); size(I3) figure a1 = subplot(1, 4, 1); imshow(I3), xs = get(a1, 'xlim'); ys = get(a1, 'ylim'); a2 = subplot(1, 4, 2); imshow(I2), set(a2, 'xlim', xs, 'ylim', ys); a3 = subplot(1, 4, 3); imshow(I1), set(a3, 'xlim', xs, 'ylim', ys); a4 = subplot(1, 4, 4); imshow(I) set(a4, 'xlim', xs, 'ylim', ys);
1. SIFT
SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,该算法通过求一幅图中的特征点(interest points,or corner points)及其有关 scale 和 orientation 的描述子(descriptor)得到特征并进行图像特征点匹配,获得了良好效果。整个算法分为以下几个部分:
1、构建尺度空间
这是一个初始化操作,尺度空间理论目的是模拟图像数据的多尺度特征。
高斯卷积核是实现尺度变换的唯一线性核,于是一副二维图像的尺度空间(多尺度特征自然在尺度空间中定义)定义为:
L(x,y,σ)=G(x,y,σ)⋆I(x,y)
二维的高斯卷积核的形式为:G(x,y,σ)=12πσ2e−(x2+y2)/2σ2
σ 大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的 σ 值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。为了有效的在尺度空间检测到稳定的关键点,提出了高斯差分尺度空间(DOG scale-space)。利用不同尺度的高斯差分核与图像卷积生成。
D(x,y,σ)==(G(x,y,kσ)−G(x,y,σ))⋆I(x,y)L(x,y,kσ)−L(x,y,σ)
图像金字塔的建立:对于一幅图像I,建立其在不同尺度(scale)的图像,也成为子八度(octave),这是为了scale-invariant,也就是在任何尺度都能够有对应的特征点,第一个子八度的scale为原图大小,后面每个octave为上一个octave降采样的结果,即原图的1/4(长宽分别减半),构成下一个子八度(高一层金字塔)。
2、LoG 近似 DoG 找到关键点<检测DOG尺度空间极值点>
为了寻找尺度空间的极值点,每一个采样点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。 一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点,如图所示。
3、除去不好的特征点
SIFT 特征提取分析
相关文章推荐
- VLFeat——SIFT图像特征提取(VC++实现)
- 图像处理中,SIFT,FAST,MSER,STAR等特征提取算法的比较与分析(利用openCV实现)
- SIFT图像特征提取 python3.4 + opencv3.1.0代码
- VLFeat(1)——SIFT图像特征提取(VC++实现)
- FPGA图像处理之SIFT特征提取
- 使用EMGU.CV对图像进行SIFT和SURF特征提取
- sift图像特征提取与匹配算法代码
- 图像算法之三:特征提取算子之SIFT
- sift图像特征提取与匹配算法代码
- 模式匹配之sift--- sift图像特征提取与匹配算法代码
- 图像特征提取5:SIFT特征
- 【图像特征提取12】OpenCv的SIFT图像局部特征提取描述算法C++代码的实现
- 图像特征提取:SIFT定位算法关键步骤的说明
- 【图像特征提取13】SIFT原理之KD树+BBF算法解析
- 图像特征提取与匹配之SIFT算法
- OpenCV--SIFT图像特征提取
- 【图像特征提取14】PCA-SIFT原理及源码解析
- VLFeat——SIFT图像特征提取(VC++实现)【转载】
- 使用vl_sift提取图像特征
- 图像特征提取5:SIFT特征