计算HOG的特征尺寸

Calculating feature size of HOG

我对从 extractHOGFeatures(I,varargin) matlab 函数中提取的特征大小的理解感到困惑。我的图像大小 120x54,当我使用此函数时,此函数的默认值为 Cellsize [8 8]Block size [2 2]NumBin=9。使用该函数输出特征的大小为1980x1。但是,我听说有一个简单的公式可以计算特征的大小 Cellsize*Numbin,即 8*8*9=576。所以,我很困惑,可能是我得到了错误的功能数量。谁能告诉我是否有提取公式,这样我就可以验证我得到的特征数量是否正确?

首先,让我们澄清一下术语。当您从图像计算 HOG 特征向量时,图像被划分为可能重叠的块,每个块被划分为单元格,然后为每个单元格计算方向直方图。

在您的例子中,块大小是 2x2 个单元格。所以每个块的特征元素个数是BlockSize * NumBin,也就是2x2x9。图像中的块数取决于图像大小和 BlockOverlap 参数。

为了补充@Dima 的回答,extractHOGFeatures 上的文档给出了计算 HOG 特征长度的公式:

N = prod([BlocksPerImage, BlockSize, NumBins])

其中

 BlocksPerImage = floor((size(I)./CellSize - BlockSize)./(BlockSize - BlockOverlap) + 1)

 BlockOverlap = ceil(BlockSize/2)