SIFT算法的一些基本概念
2009-12-18 19:55
基本概念:
降采样:
对于一幅图像而言的降采样就是每隔几行、几列得到取一点,组成一个新的图像。以比例因子为2(fact of 2)的降采样来说:就是対一幅图像每隔一行一列取一点。对于n×n的图像就变为n/2×n/2的图像了。比例因子为2的降采样是SFIT要用到的!
升采样:
其实一种插值,就是在一幅图像里利用相关的插值运算得到一幅大的图像!比如比例因子为2的升采样就是每个相邻像素点种插值出一个像素(这里包括X、Y两个方向)。对于n×n的图像就变为2n×2n的图像了。顺便说下插值,就是一种利用已有数据对位置数据的估计。比如我第10秒走了12米,第20走了30,那么我用线性插值估计我第15秒走了(30-12)/2+12=21米,当然插值的方法有很多!
图像金字塔:
简单的说是一个图像集,由一个原始图像经过降采样得到一幅图像,再对新的图像做降采样,重复多次构成的一组集合。如果形象的把这些图像摞起来就想一个金字塔,故此得名。
高斯卷积:
就是权函数为高斯函数的卷积模板运算,高斯卷积有一次和二次...。通常做高斯卷积后的图像会比原图像平滑但也会模糊,所以又称高斯模糊!因为这不能写公式,很多的细节可以看下面的附件里的图片!
高斯金字塔:
高斯金字塔里有两个概念:组(Octave)和层(Level或Interval),每组里有若干层!高斯金字塔的构造是这样的,第一组的第一层为原图像,然后将图像做一次高斯平滑(高斯卷积、高斯模糊)高斯平滑里有一个参数σ,在SIFT里作者取1.6,然后将σ乘一个比例系数k作为新的平滑因子来平滑第一组第二层得到第三层。重复若干次,得到L层他们分别对应的平滑参数为:0,σ,kσ,k2σ....。然后将最后一幅图像做比例因子为2的降采样得到第二组的第一层,然后对第二组的第一层做参数是σ的高斯平滑,对第二层做kσ的平滑得到第三层.....这里一定注意:每组对应的平滑因子是一样的!而不是像有的资料上说的持续递增。这样反复形成了O组L层。一般模糊的高斯模板长宽都约为6σ(这里σ为当次的平滑因子,就是可能是kσ,k2σ..)
DoG(Difference of Gaussian)金字塔:
他是由高斯金字塔构造出来的,他的第一组第一层是由高斯金字塔的第一组第二层减第一组第一层,他的第一组第二层是由高斯金字塔的第一组第三层减第一组第二层得到,(说的这么繁琐是为了大家能理解的直观点)。没组都这样就生成了DoG金字塔。顺便说一下,DoG金字塔每组图像几乎都是一片黑,但仔细看你能看出轮廓的。
两个金字塔在SIFT算法里的特殊说明:
1、在SIFT里高斯金字塔的第一组第一层通常是由一个原图像长宽扩大一倍开始的,这样做是为了可以得到更多的特征点
2、大家可以发现如果用每组5层的高斯金字塔构造一个DoG金字塔的的话,DoG的每组的层数是4。
3、对于DoG金字塔,特征点的搜索从每组的二层到倒数第二层的(后面说明为什么),所以如果实际用n层那么DoG金字塔应该有n+2层,那么对应的高斯金字塔应该有n+3层。
4、由于这样所以高斯金字塔从第二组开始的每组第一层是由上一组的倒数第二层降采样得到的。
梯度:
就是一个有方向和长度的向量,它的意义是一个函数的某一点上数值变化最大的方向和变化量。在图像中一个像素点的梯度是由它周围的8个点计算得到的。(公式见附件的图)
K-d树:
一种数据结构,用于搜索高维最邻近点,他是一种二叉树,每个节点是一个高维向量。对于他的具体说明我没仔细看呢,如果做到最后需要请大家参考这个:顺便说下维基百科不错!!
http://en.wikipedia.org/wiki/Kd-tree
尺度:
这个概念最让我郁闷,现在弄的不是很清楚。我现在的理解就是(这不是它的概念):
1、表示同一事物所用到的图像像素量,用的多尺度就小,用的少尺度就大。
2、它和图像的清晰程度有关,如上面说的高斯模糊,那么因子σ越大得到的图像越模糊,那么尺度越大!
3、图像的旋转、平移尺度是不变的,但是放大、缩小、尺度就变了。