Matlab 不同代码中的混淆

Matlab 不同代码中的混淆,matlab,computer-vision,feature-extraction,Matlab,Computer Vision,Feature Extraction,我下载了三种不同的HoG代码。 使用64x128的映像 1) 使用matlab函数:extractHOGFeatures [hog, vis] = extractHOGFeatures(img,'CellSize',[8 8]); 猪的大小是3780 如何计算: HOG特征长度N基于图像大小和函数参数值 N = prod([BlocksPerImage, BlockSize, NumBins]) BlocksPerImage = floor((size(I)./CellSize – Block

我下载了三种不同的HoG代码。 使用64x128的映像

1) 使用matlab函数:
extractHOGFeatures

[hog, vis] = extractHOGFeatures(img,'CellSize',[8 8]);
猪的大小是3780

如何计算:

HOG特征长度N基于图像大小和函数参数值

N = prod([BlocksPerImage, BlockSize, NumBins])
BlocksPerImage = floor((size(I)./CellSize – BlockSize)./(BlockSize – BlockOverlap) + 1)
2) 第二个HOG函数从下载。 使用相同的图像

H = hog( double(rgb2gray(img)), 8, 9 );

 %  I        - [mxn] color or grayscale input image (must have type double)
%  sBin     - [8] spatial bin size
%  oBin     - [9] number of orientation bins
H
的大小为3024

如何计算:

H        - [m/sBin-2 n/sBin-2 oBin*4] computed hog features
3) 来自vl_专长的HoG代码

cellSize = 8;
 hog = vl_hog(im2single(rgb2gray(img)), cellSize, 'verbose','variant', 'dalaltriggs') ;
vl_hog: image: [64 x 128 x 1]
vl_hog: descriptor: [8 x 16 x 36]
vl_hog: number of orientations: 9
vl_hog: bilinear orientation assignments: no
vl_hog: variant: DalalTriggs
vl_hog: input type: Image
输出为4608


哪一个是正确的?

都是正确的。问题是特征提取功能默认值参数随软件包而异。(例如,opencv、matlab、scikit图像等)。我所说的参数是指winsize、stride、blocksize、scale等

通常,长度为:

 Length = Number of Blocks x Cells in each Block x Number of Bins in each Cell
既然所有的答案都是正确的,你可以用哪一个答案来回答。 您可以尝试使用不同的参数值,并选择适合您的参数值。由于没有固定的方法可以找到正确的值,如果您知道每个参数的更改如何影响结果,这将非常有用

单元格大小:如果增加此值,可能无法捕获小细节

块大小:同样,大单元格大小的大块可能无法帮助您捕获小细节。此外,由于大块意味着照明变化可能更大,并且由于梯度归一化步骤,许多细节将丢失。因此,请相应地选择

重叠/跨步:如果选择重叠块,这将再次帮助您捕获有关图像面片的更多信息。通常设置为块大小的一半

通过相应地选择上述参数的值,可以获得大量信息。但是描述符长度将变得不必要的长


希望这有帮助:)

谢谢,再来一个。我使用libSVM进行分类。我需要将256幅图像的特征矩阵排列为:256x3780,标签向量排列为:256x1?是的,这就是你需要做的。如果你认为我的回答解决了你的问题,请接受我的回答:)祝你好运。你能检查一下吗