不同 HOG 代码的混淆
Confusion in different HOG codes
我已经下载了三个不同的 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函数是从here下载的。
使用了相同的图像
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_feat 的 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。
哪一个是正确的?
全部正确。问题是 HOG 特征提取函数 default 参数因包而异。 (例如 - opencv、matlab、scikit-image 等)。我所说的参数是指 winsize、stride、blocksize、scale 等
通常 HOG 描述符长度为:
Length = Number of Blocks x Cells in each Block x Number of Bins in each Cell
既然都是正确的,那么你用哪个就可以有很多种答案了。
您可以尝试不同的参数值并选择适合您的。由于没有固定的方法来找到正确的值,如果您知道每个参数的变化如何影响结果将会很有帮助。
Cell-size : 如果你增加这个,你可能捕捉不到小细节。
Block-size :同样,大单元格大小的大块可能无法帮助您捕获小细节。此外,由于大块意味着光照变化可能更多,并且由于梯度归一化步骤,很多细节将会丢失。所以相应地选择。
Overlap/Stride:如果您选择重叠块,这将再次帮助您捕获有关图像块的更多信息。通常它被设置为块大小的一半。
通过相应地选择上述参数的值,您可能会获得很多信息。但是描述符长度会变得不必要的长。
希望这对您有所帮助 :)
我已经下载了三个不同的 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函数是从here下载的。 使用了相同的图像
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_feat 的 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。
哪一个是正确的?
全部正确。问题是 HOG 特征提取函数 default 参数因包而异。 (例如 - opencv、matlab、scikit-image 等)。我所说的参数是指 winsize、stride、blocksize、scale 等
通常 HOG 描述符长度为:
Length = Number of Blocks x Cells in each Block x Number of Bins in each Cell
既然都是正确的,那么你用哪个就可以有很多种答案了。 您可以尝试不同的参数值并选择适合您的。由于没有固定的方法来找到正确的值,如果您知道每个参数的变化如何影响结果将会很有帮助。
Cell-size : 如果你增加这个,你可能捕捉不到小细节。
Block-size :同样,大单元格大小的大块可能无法帮助您捕获小细节。此外,由于大块意味着光照变化可能更多,并且由于梯度归一化步骤,很多细节将会丢失。所以相应地选择。
Overlap/Stride:如果您选择重叠块,这将再次帮助您捕获有关图像块的更多信息。通常它被设置为块大小的一半。
通过相应地选择上述参数的值,您可能会获得很多信息。但是描述符长度会变得不必要的长。
希望这对您有所帮助 :)