我下载了三种不同的HoG代码。使用64x128的图像
1)使用matlab函数:extractHOGFeatures,
[hog, vis] = extractHOGFeatures(img,'CellSize',[8 8]);hog的大小是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 binsH的大小是3024。
如何计算:
H - [m/sBin-2 n/sBin-2 oBin*4] computed hog features3) HoG代码来自vl_feat。
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。
哪一个是对的?
发布于 2017-05-04 08:52:21
一切都是正确的。问题是HOG特征提取函数默认参数随包而变化。(例如- opencv,matlab,scikit-image等)。我指的参数是,大小、步幅、尺寸、比例等。
通常HOG描述符的长度是:
Length = Number of Blocks x Cells in each Block x Number of Bins in each Cell既然一切都是正确的,你可以用多种方法来回答。您可以尝试不同的param值,并选择适合您的。由于没有固定的方法来找到正确的值,如果您知道每个参数的更改如何影响结果,这将是有帮助的。
单元大小:如果增加这个值,可能不会捕获小细节.
块大小:同样,大单元大小的大块可能无助于捕获小细节。此外,由于大块意味着光照的变化可以更多,并由于梯度归一化步骤,许多细节将丢失。因此,选择相应的。
如果选择重叠块,Overlap/Stride:再次帮助您捕获有关图像修补程序的更多信息。通常情况下,它被设置为块的一半。
通过相应地选择上述参数的值,您可能有很多信息。但是描述符长度会变得不必要的长。
希望这会有所帮助:)
https://stackoverflow.com/questions/43773298
复制相似问题