16

我使用 OpenCV C++ Lib 的 HOGDescriptor 来计算图像的特征向量。我想可视化源图像中的特征。谁能帮我?

4

4 回答 4

28

我今天遇到了完全相同的问题。使用 OpenCV 的函数计算HOGDescriptor64x128 图像的矢量HOGDescriptor::compute()很容易,但没有内置功能可以将其可视化。

最后,我设法理解了梯度方向幅度是如何存储在 3870 长的 HOG 描述符向量中的。

您可以在HOGDescriptor此处找到用于可视化的 C++ 代码:

http://www.juergenbrauer.org/old_wiki/doku.php?id=public:hog_descriptor_computation_and_visualization

希望能帮助到你!

于尔根

于 2012-06-28T15:35:23.593 回答
13

HOGgles¹ 是一种为 HOG 可视化而开发的方法,发表在 ICCV 2013 上。下面是一个示例:

HOG看到了什么?

这种可视化工具可能比绘制 HOG 的梯度向量更有用,因为人们可以更好地了解 HOG 对给定样本失败的原因。

更多信息可以在这里找到:http ://web.mit.edu/vondrick/ihog/


¹C。Vondrick、A. Khosla、T. Malisiewicz、A. Torralba。“HOGGles: Visualizing Object Detection Features”国际计算机视觉会议 (ICCV),澳大利亚悉尼,2013 年 12 月。

于 2013-10-31T20:16:45.677 回答
2

这个opencv 小组讨论导致了一个在布朗大学写的图书馆

HOGpicture.m您应该能够了解如何可视化描述符。这是相关的(matlab)代码。你为自己做点什么就够了吗?

(以下代码是在MIT 许可下发布的)

function im = HOGpicture(w, bs)

% HOGpicture(w, bs)
% Make picture of positive HOG weights.

% construct a "glyph" for each orientation
bim1 = zeros(bs, bs);
bim1(:,round(bs/2):round(bs/2)+1) = 1;
bim = zeros([size(bim1) 9]);
bim(:,:,1) = bim1;
for i = 2:9,
  bim(:,:,i) = imrotate(bim1, -(i-1)*20, 'crop');
end

% make pictures of positive weights bs adding up weighted glyphs
s = size(w);    
w(w < 0) = 0;    
im = zeros(bs*s(1), bs*s(2));
for i = 1:s(1),
  iis = (i-1)*bs+1:i*bs;
  for j = 1:s(2),
    jjs = (j-1)*bs+1:j*bs;          
    for k = 1:9,
      im(iis,jjs) = im(iis,jjs) + bim(:,:,k) * w(i,j,k);
    end
  end
end
于 2012-06-02T13:34:15.160 回答
2

blockSize我为任何and重新实现 HOGImage cellSize,它基于 Jürgen Brauer 的。见https://github.com/zhouzq-thu/HOGImage

于 2019-07-04T00:57:01.570 回答