我正在尝试使用 vl_dsift 获取每个像素的 128*1 特征向量。因此我希望得到的矩阵具有大小
128*(像素数)
然而,当我在尺寸为 (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)
恐怕您无法提取图像中所有像素的特征向量。
正如您可以从以下链接中的图“密集 SIFT 描述符几何”中看到的那样(http://www.vlfeat.org/api/dsift.html http://www.vlfeat.org/api/dsift.html)密集筛选从 4×4 窗口中提取特征。由于该框无法移出图像,因此 4×4 窗口的左上角 bin 可以位于第一个像素,即 (1,1)。因此,在这种情况下(假设 bin 大小为 1),4×4 窗口的中心位于 (2.5, 2.5),换句话说,位于 x 和 y 方向上的第二个和第三个像素之间。请注意,在这种情况下,4×4 窗口覆盖 16 个像素,即 [1,4] x [1,4] 像素。
现在说出你的图像大小为 n×m。
以同样的方式,当 4×4 窗口的右下 bin 位于最后一个像素(n,m 处的像素)时,4×4 窗口的中心将位于 [n-1.5, m-1.5]。在您的情况下,您的功能将从 2.5 x 2.5 像素开始,以 190.5 x 166.5 结束
所以底线是 4×4 窗口的中心从 ' 沿 X 方向移动XMIN + 3/2 * SIZE”到“MAX - 3/2 * SIZE”,步长为“STEP”。其中 XMIN 和 XMAX 分别是 X 方向上的第一个和最后一个像素。 Y 轴相同(请参阅链接中的底部段落“几何结构的更多详细信息”http://www.vlfeat.org/matlab/vl_dsift.html http://www.vlfeat.org/matlab/vl_dsift.html)。结果,4×4 窗口遍历整个图像。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)