gpt4 book ai didi

matlab - 没有得到 HOG 的 'spatial weights' 是什么

转载 作者:太空宇宙 更新时间:2023-11-03 20:21:09 24 4
gpt4 key购买 nike

我正在使用 HOG 进行向日葵检测。 HOG现在做的大部分我都明白了,但是在最后阶段有一些我不明白的地方。 (我正在浏览 Mathworks 的 MATLAB 代码)。

让我们假设我们正在使用 Dalal-Triggs 实现。 (也就是说,8x8 像素构成 1 个单元,2x2 单元构成 1 个 block , block 在两个方向上以 50% 的重叠度取,最后,我们将直方图量化为 9 个无符号的 bin。(意思是,从 0 到 180 度)).最后,我们这里的图像是 64x128 像素。

假设我们在第一个街区。这个 block 有 4 个单元格。我知道我们将根据每个方向的大小对每个方向的方向进行加权。我也知道我们将通过以 block 为中心的高斯进一步加权它们。

到目前为止一切顺利。

但是在 MATLAB 实现中,他们还有一个额外的步骤,即创建“空间”权重:

enter image description here

如果我们深入研究这个函数,它看起来像这样:

enter image description here

最后,“computeLowerHistBin”函数如下所示:

function [x1, b1] = computeLowerHistBin(x, binWidth)
% Bin index
width = single(binWidth);
invWidth = 1./width;
bin = floor(x.*invWidth - 0.5);

% Bin center x1
x1 = width * (bin + 0.5);

% add 2 to get to 1-based indexing
b1 = int32(bin + 2);
end

现在,我相信这些“空间”权重将在稍后的三线性插值部分中使用……但我不明白它们的计算精确度或代码背后的逻辑。我在这个问题上完全迷失了。

注意:我理解三线性插值的必要性,以及(我认为)它是如何工作的。我不明白的是为什么我们需要那些“空间权重”,以及它们的计算背后的逻辑是什么。

谢谢。

最佳答案

这里的想法是每个像素不仅对它自己的直方图单元格有贡献,而且在某种程度上对相邻单元格也有贡献。这些贡献的权重不同,具体取决于像素与单元格边缘的距离。你离你的单元格的边缘越近,你对相应的相邻单元格的贡献就越大,你对自己单元格的贡献就越小。

关于matlab - 没有得到 HOG 的 'spatial weights' 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26344764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com