【问题标题】:Confusion in different HOG codes不同HOG代码的混淆
【发布时间】:2017-10-02 01:37:08
【问题描述】:

我已经下载了三个不同的 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。

哪个是正确的?

【问题讨论】:

    标签: matlab computer-vision feature-extraction


    【解决方案1】:

    一切都是正确的。问题是 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 :如果增加此值,可能无法捕捉到小细节。

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

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

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

    希望这会有所帮助:)

    【讨论】:

    • 谢谢,再来一份。我正在使用 libSVM 进行分类。我需要将 256 个图像的特征矩阵安排为:256x3780 和标签向量:256x1?
    • 是的,这就是您需要做的。如果您认为我的回答解决了您的疑问,请接受此作为答案:) 祝你好运。
    • 你能检查一下这个link
    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多