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

ChH*_*upt 13 c++ opencv feature-detection

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

Jür*_*uer 27

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

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

你可以找到我的C++代码,用于可视化HOGDescriptor:

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

希望能帮助到你!

于尔根


Yam*_*eko 13

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

HOG看到了什么?

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

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


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


Kob*_*ohn 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
Run Code Online (Sandbox Code Playgroud)