我正在尝试使用vl_dsift来获取每个像素的128 * 1特征向量。因此,我希望得到的矩阵具有大小
128 *(#OfPixels)
然而,当我在尺寸为(192 * 168)的图像上使用它时,结果描述符给出尺寸(128 * 31,185),其中binsize为1,放大系数为1。
I = imread('Faces\yaleB11_P00A-130E+20.pgm');
size(I)
figure
imshow(I)
binSize = 1 ;
magnif = 1 ;
Is = vl_imsmooth(single(I), sqrt((binSize/magnif)^2 - .25)) ;
[f, d] = vl_dsift(single(I), 'size', binSize) ;
size(f)
size(d)
答案 0 :(得分:1)
我担心你无法提取图像中所有像素的特征向量。
从图中可以看出,Dense SIFT描述符几何'在以下链接(http://www.vlfeat.org/api/dsift.html)中,密集筛选从4乘4窗口中提取特征。由于该框不能移动到图像之外,因此4×4窗口的左上框可以是第一像素,即(1,1)。因此,在这种情况下(假设您的bin大小为1),4×4窗口的中心位于(2.5,2.5),换句话说,在x和y方向上的第2和第3像素之间。请注意,在这种情况下,4×4窗口覆盖16个像素,这些像素为[1,4] x [1,4]像素。
现在说出你的尺寸为n-by-m的图像。 以相同的方式,当4乘4窗口的右下方箱位于最后一个像素(n,m处的像素)时,4乘4窗口的中心将处于[n-1.5,m-1.5]。在您的情况下,您的功能将从2.5 x 2.5的像素开始,并将以190.5 x 166.5
结束所以最重要的是,4乘4窗口的中心从X方向行进,从