HOG使用OpenCV,C ++中的HOGDescriptor进行可视化

时间:2012-06-02 13:07:12

标签: c++ opencv feature-detection

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

4 个答案:

答案 0 :(得分:27)

我今天遇到了完全相同的问题。使用OpenCV的HOGDescriptor函数计算64x128图像的HOGDescriptor::compute()向量很简单,但没有可视化的内置功能。<​​/ p>

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

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

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

希望它有所帮助!

尔根

答案 1 :(得分:13)

HOGgles¹是一种为HOG可视化开发的方法,发布于ICCV 2013.以下是一个例子:

What does HOG sees?

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

可在此处找到更多信息:http://web.mit.edu/vondrick/ihog/


¹C。 Vondrick,A。Khosla,T。Malisiewicz,A。Torralba。 “HOGgles:可视化对象检测功能”国际计算机视觉会议(ICCV),澳大利亚悉尼,2013年12月。

答案 2 :(得分:2)

This opencv小组讨论会导致a library written at Brown University

HOGpicture.m中,您应该能够了解如何可视化描述符。这是相关的(matlab)代码。你能为自己创造一些东西吗?

(以下代码在MIT license下发布)

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

答案 3 :(得分:0)

我基于JürgenBrauer的任何blockSizecellSize重新实现HOGImage。参见https://github.com/zhouzq-thu/HOGImage