使用 Matlab "extractHOGFeature" 函数计算单点上的 HOG 特征
Computing HOG feature on a single point using Matlab "extractHOGFeature" function
我对 matlab "extractHOGFeature" 函数感到困惑。我有一个深度图像 (370x89)。我想计算图像中单点的 HOG。当我给点 [i,j] 某个时候它 returns 空向量 (0x36) 并且当我将点[i,j] 交换到 [j,i] 函数 return 一个非空矢量(1x36)。此外,我 运行 循环中的函数分别针对每个像素 [i,j]、[j,i] 和整个图像计算非空 HOG 向量,令人惊讶的是我得到了不同的数字。让我在下面的例子中解释。
坐标 [i,j].
count=0;
mx=imread('abc_gray.png');
for i=1:size(mx,1)
for j=1:size(mx,2)
XY=[i,j];
hog=extractHOGFeatures(double(mx),XY);
if ~ isempty(hog)
count=count+1;
end
end
end
**Total number of non-empty vector: 5994**
坐标 [j,i]
count=0;
mx=imread('abc_gray.png');
for i=1:size(mx,1)
for j=1:size(mx,2)
XY=[j,i];
hog=extractHOGFeatures(double(mx),XY);
if ~ isempty(hog)
count=count+1;
end
end
end
**Total number of non-empty vector: 26270**
哪一个是正确的?
extractHOGFeatures
函数接受 x,y
坐标或 列、行 坐标。这意味着 for
循环的第二个版本是正确的。有时您会得到空向量,因为您指定的坐标超出图像范围。发生这种情况是因为行和列被翻转,因此有可能超出行或列的维度。此外,根据您的逻辑,您在技术上应该有 370 x 89 = 32930
个 HOG 描述符 - 每个点一个。但是,您必须记住,我们专注于 window 周围 每个点。如果 window 超出给定点的范围,则无法计算 HOG 描述符。这就是为什么要计算的 HOG 描述符少于 32930 个的原因。
此外,运行 extractHOGFeatures
在整个图像上并将其与各个点进行比较肯定会给您不同的尺寸。发生的事情是,对于整个图像,有一个 block-stride,这意味着图像中的单元格之间会有重叠,因此 HOG 特征向量的维数将大于如果您要分别计算每个点的 HOG 描述符。
我对 matlab "extractHOGFeature" 函数感到困惑。我有一个深度图像 (370x89)。我想计算图像中单点的 HOG。当我给点 [i,j] 某个时候它 returns 空向量 (0x36) 并且当我将点[i,j] 交换到 [j,i] 函数 return 一个非空矢量(1x36)。此外,我 运行 循环中的函数分别针对每个像素 [i,j]、[j,i] 和整个图像计算非空 HOG 向量,令人惊讶的是我得到了不同的数字。让我在下面的例子中解释。
坐标 [i,j].
count=0;
mx=imread('abc_gray.png');
for i=1:size(mx,1)
for j=1:size(mx,2)
XY=[i,j];
hog=extractHOGFeatures(double(mx),XY);
if ~ isempty(hog)
count=count+1;
end
end
end
**Total number of non-empty vector: 5994**
坐标 [j,i]
count=0;
mx=imread('abc_gray.png');
for i=1:size(mx,1)
for j=1:size(mx,2)
XY=[j,i];
hog=extractHOGFeatures(double(mx),XY);
if ~ isempty(hog)
count=count+1;
end
end
end
**Total number of non-empty vector: 26270**
哪一个是正确的?
extractHOGFeatures
函数接受 x,y
坐标或 列、行 坐标。这意味着 for
循环的第二个版本是正确的。有时您会得到空向量,因为您指定的坐标超出图像范围。发生这种情况是因为行和列被翻转,因此有可能超出行或列的维度。此外,根据您的逻辑,您在技术上应该有 370 x 89 = 32930
个 HOG 描述符 - 每个点一个。但是,您必须记住,我们专注于 window 周围 每个点。如果 window 超出给定点的范围,则无法计算 HOG 描述符。这就是为什么要计算的 HOG 描述符少于 32930 个的原因。
此外,运行 extractHOGFeatures
在整个图像上并将其与各个点进行比较肯定会给您不同的尺寸。发生的事情是,对于整个图像,有一个 block-stride,这意味着图像中的单元格之间会有重叠,因此 HOG 特征向量的维数将大于如果您要分别计算每个点的 HOG 描述符。