SIFT简化版理解
1. 构建高斯差分金字塔
高斯金字塔
将原始图像不断降阶采样,原图像为金字塔的第一层,每次降采样得到金字塔的一层,整个金字塔共n层。金字塔层数又原始图像的大小和塔顶图像的大小共同决定。
n = l o g 2 m i n ( M , N ) − t , t ∈ [ 0 , l o g 2 m i n ( M , N ) ] n = log_2{min(M,N)}-t, t\in[0, log_2{min(M,N)}] n=log2min(M,N)−t,t∈[0,log2min(M,N)]
其中M,N分别为原始图像的shape, t为塔顶图像大小取对数。如512x512的图像,有
此处,t = l o g 2 1 log_21 log21=1
为了让尺度体现连续性,高斯金字塔在简单降采样的基础上,添加了高斯滤波。
对最初每层一张图像进行不同参数的高斯滤波,使得每层得到一组(Octave)图像大小相同,但模糊程度不同的大小。每一组的多张图像称为层Interval图像。降采样时,高斯金字塔上一层图像的初始图像是由前一组的倒数第三张图像隔点采样得到。如下图所示。
高斯差分金字塔
对高斯金字塔每组中的图像执行上下两层相减,得到差分图像。
2. 空间极值点检测
关键点是DOG空间的局部极值点,而局部极值点是通过将该图像与上下相邻的图像比较得到。如图,中间的检测点要和它的8个相邻点以及相同尺度上下相邻图像对应的9个点进行比较,一共8+9x2=26个点进行比较,得到极大值或极小值点。最后利用子像素插值得到连续空间的极值点。
为了在DOG空间每组中检测S个尺度的关键点,由于每组第一张和最后一张图像无法完成上述的比较,所以需要S+2个高斯差分图像。同时,高斯差分图像是由高斯金字塔图像相减得到,故高斯金字塔每组需要S+3个图像。如上图高斯差分金字塔形成过程:高斯金字塔每组5张图像,对应差分图像每组4张。
构建尺度空间需要确定的参数
σ \sigma σ:尺度空间坐标
O O O:金字塔的总组(octave)数
S S S:每组组内总层数 应该是要检测的关键点的数目,总层数为S+3
关键点的尺度坐标计算如下:
σ ( o , s ) = σ 0 2 o + s S o ∈ [ 0 , . . . , O − 1 ] , s ∈ [ 0 , . . . , S + 2 ] \sigma(o, s) =\sigma_02^{o+\frac{s}{S}} o\in[0, ..., O-1], s\in[0, ..., S+2] σ(o,s)=σ