一、Dense SIFT Sampling
DSIFT在寻找显著点时不是尝试使用一个分类器判断是否是显著点,而是为了简化,所有显著点是均匀分布(equally dense across )在图像的各个区域的。在采样时有个涉及不同尺度下采样步长(pixel stride)是否应该相同的问题。窗口移动同样的步长,在更大的尺度下,窗口要大些,这会使得相邻窗口的重叠区域面积比率变大,从而使得采样的冗余较小尺度下的冗余要大。当前流行的多尺度采样方法倾向的就是这种策略。DSIFT也是使用这种策略,因为要简单得多。
二、Dense SIFT计算过程
1)读入一副灰度图像(彩色图像要转成灰度图像),DSIFT算法首先要将图像等分成一个个小的像素块(frames)。
2)然后每个像素块再分成更小的块,比如4*4=16块,代表中心keypoint,在vlfeat中对应numBinX和numBinY。计算每个块在8个方向上的梯度直方图,在vlfeat中对应numBinT。这16个块每个块的大小有binSize指定。同时根据窗口移动步长StepX和StepY移动窗口。
3)计算出每个小块中心像素的梯度后,可以采用两种方法计算出descriptor,一种是各个位置等权重方式,一种是高斯核函数方式。两种方式都可以使用卷积来实现。
4)根据卷积窗口参数,与卷积梯度,得到descriptor。
计算的值主要是如下两种卷积窗口:
三、DSIFT的相关参数计算
1)frame个数(D)的计算。frame的水平宽度为
binSizeX∗numBinX
,垂直高度为
binSizeY∗numBinY
,计算方式如下:
2)每个8*8大小的块对应的descriptor就是一个4*4*8维数的向量,整个图像如果分成D个块的话,那么DSIFT特征的维数就是D*4*4*8。一副图像特征的维数为:
D∗numBinT∗numBinX∗numBinY
。