高斯金字塔(Gaussian Pyramid):高斯金字塔里有两个概念:组(Octave)和层(Level或Interval),每组里有若干层。
高斯金字塔的构造是这样的:
(1)第一组的第一层为原图像,然后将图像做一次高斯平滑(高斯卷积、高斯模糊)高斯平滑里有一个参数σ,在SIFT里作者取1.6;
(2)将σ乘一个比例系数k作为新的平滑因子来平滑第一组第二层得到第三层。
(3)重复若干次,得到L层他们分别对应的平滑参数为:0,σ,kσ,k2σ....。
(4)将最后一幅图像做比例因子为2的降采样得到第二组的第一层,然后对第二组的第一层做参数是σ的高斯平滑,对第二层做kσ的平滑得到第三层.....这里一定注意:每组对应的平滑因子是一样的。而不是像有的资料上说的持续递增。
这样反复形成了O组L层。一般模糊的高斯模板长宽都约为6σ(这里σ为当次的平滑因子,就是可能是kσ,k2σ..)
DoG(Difference of Gaussian)金字塔:他是由高斯金字塔构造出来的,他的第一组第一层是由高斯金字塔的第一组第二层减第一组第一层,他的第一组第二层是由高斯金字塔的第一组第三层减第一组第二层得到,(说的这么繁琐是为了大家能理解的直观点)。每组都这样就生成了DoG金字塔。顺便说一下,DoG金字塔每组图像几乎都是一片黑,但仔细看你能看出轮廓的。
1、在SIFT里高斯金字塔的第一组第一层通常是由一个原图像长宽扩大一倍开始的,这样做是为了可以得到更多的特征点。
2、大家可以发现如果用每组5层的高斯金字塔构造一个DoG金字塔的的话,DoG的每组的层数是4。
3、对于DoG金字塔,特征点的搜索从每组的二层到倒数第二层的(后面说明为什么),所以如果实际用n层那么DoG金字塔应该有n+2层,那么对应的高斯金字塔应该有n+3层。
4、這裡為了得到比較dense的sampling,因此又在每一層octave多切了好幾層,每一層基本上我們需要s+3張image,s+1張是從σ到2σ之間所產上的,另外因為在求extrema的時候為了要跟鄰居相比,所以我們還需要兩張是比σ小一點和比2σ再大一點的image。所以可以看成是Laplacianpyramid的extension。每一層在經過Gaussian filtering過後,把image相減就可以得到相當於是經由DoG filter所產生的image,之後就在這個space上面做運算。由于这样所以高斯金字塔从第二组开始的每组第一层是由上一组的倒数第二层降采样得到的。
尺度空间建立模块,FPGA共有3个模块构成:高斯滤波模块、下采样模块和差分模块;当然里面还有一些细节,比如用到FIFO、RAM还有DCM等等。具体模块可参照我其他设计说明。整个模块的搭建其实就不难了。下一步搞极值点点位。愉快的开始吧!