vlfeat dense sift理解

一、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移动窗口。
vlfeat dense sift理解_第1张图片
3)计算出每个小块中心像素的梯度后,可以采用两种方法计算出descriptor,一种是各个位置等权重方式,一种是高斯核函数方式。两种方式都可以使用卷积来实现。
4)根据卷积窗口参数,与卷积梯度,得到descriptor。

计算的值主要是如下两种卷积窗口:
vlfeat dense sift理解_第2张图片

三、DSIFT的相关参数计算

1)frame个数(D)的计算。frame的水平宽度为 binSizeXnumBinX ,垂直高度为 binSizeYnumBinY ,计算方式如下:
vlfeat dense sift理解_第3张图片
2)每个8*8大小的块对应的descriptor就是一个4*4*8维数的向量,整个图像如果分成D个块的话,那么DSIFT特征的维数就是D*4*4*8。一副图像特征的维数为: DnumBinTnumBinXnumBinY

你可能感兴趣的:(索引技术)