首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同HOG代码的混淆

不同HOG代码的混淆
EN

Stack Overflow用户
提问于 2017-05-04 03:17:26
回答 1查看 678关注 0票数 4

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

1)使用matlab函数:extractHOGFeatures

代码语言:javascript
复制
[hog, vis] = extractHOGFeatures(img,'CellSize',[8 8]);

hog的大小是3780。

如何计算:

HOG特征长度N是根据图像大小和函数参数值确定的。

代码语言:javascript
复制
N = prod([BlocksPerImage, BlockSize, NumBins])
BlocksPerImage = floor((size(I)./CellSize – BlockSize)./(BlockSize – BlockOverlap) + 1)

2)第二个HOG函数是从这里下载的。使用相同的图像

代码语言:javascript
复制
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。

如何计算:

代码语言:javascript
复制
H        - [m/sBin-2 n/sBin-2 oBin*4] computed hog features

3) HoG代码来自vl_feat。

代码语言:javascript
复制
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。

哪一个是对的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-04 08:52:21

一切都是正确的。问题是HOG特征提取函数默认参数随包而变化。(例如- opencv,matlab,scikit-image等)。我指的参数是,大小、步幅、尺寸、比例等。

通常HOG描述符的长度是:

代码语言:javascript
复制
 Length = Number of Blocks x Cells in each Block x Number of Bins in each Cell

既然一切都是正确的,你可以用多种方法来回答。您可以尝试不同的param值,并选择适合您的。由于没有固定的方法来找到正确的值,如果您知道每个参数的更改如何影响结果,这将是有帮助的。

单元大小:如果增加这个值,可能不会捕获小细节.

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

如果选择重叠块,Overlap/Stride:再次帮助您捕获有关图像修补程序的更多信息。通常情况下,它被设置为块的一半。

通过相应地选择上述参数的值,您可能有很多信息。但是描述符长度会变得不必要的长。

希望这会有所帮助:)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43773298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档