我使用OpenCV C ++ Lib的HOGDescriptor来计算图像的特征向量。我想要想象源图像中的功能。谁能帮我?
答案 0 :(得分:27)
我今天遇到了完全相同的问题。使用OpenCV的HOGDescriptor
函数计算64x128图像的HOGDescriptor::compute()
向量很简单,但没有可视化的内置功能。</ p>
最后,我设法理解梯度方向大小如何存储在3870长HOG描述符向量中。
您可以在此处找到我的C ++代码,用于可视化HOGDescriptor
:
希望它有所帮助!
尔根
答案 1 :(得分:13)
HOGgles¹是一种为HOG可视化开发的方法,发布于ICCV 2013.以下是一个例子:
这种可视化工具可能比绘制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的任何blockSize
和cellSize
重新实现HOGImage。参见https://github.com/zhouzq-thu/HOGImage。