计算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)
我对从 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)