HoG特征如何以图形方式表示?

21

我正在实现“人体检测的梯度方向直方图”中的梯度方向直方图特征,并希望将结果可视化。这些特征的所有论文都使用标准的可视化方法,但我找不到任何有关如何生成这些方法的描述。如果能提供解释或相关链接,我将不胜感激。


请问您能否发布一张屏幕截图?我看到一些显示梯度方向大小与计数成比例的截图,但我不确定我们是否在谈论同一件事情。 - carlosdc
这个网站可能会对你有所帮助:http://www.geocities.ws/talh_davidc/ - SomethingSomething
5个回答

14
你在论文中看到的可视化可以解释如下:
描述符由一个M*N的单元格组成,这些单元格在图像窗口中以网格形式分布。每个单元格由边缘方向的直方图表示,其中离散化边缘方向的数量是一个参数(通常为9)。单元格直方图通过“星”形式的可视化呈现出来,显示了直方图中边缘方向的强度:特定方向的强度越强,则相对于其他方向越长。
请注意,有各种规范化方案:局部规范化方案,其中单元格仅相对于相邻单元格进行规范化(与Dalal-Triggs的原始论文一样),或全局规范化方案,其中方向长度由所有单元格进行规范化。同时还要注意,一些作者使用多个每个单元格的局部规范化方法(例如我下面提到的那个),但可视化仅显示一个(或它们的平均值)。
Felzenszwalb等人开创性工作的Matlab代码通过将单元格绘制在图像上并用边缘的强度而不是长度来可视化这些单元格。你可以在他们提供的包中找到它(DPM)。寻找名为HOGpicture.m的函数。
下面的示例显示了一个自行车模型(来自Felzenszwalb等人)的HoG,由7 * 11个单元格组成,每个单元格具有8个方向。

HoG model of a bike, taken from Felzenszwalb et al


11
一篇名为Jurgenwiki的博客提供了一些关于在OpenCV中可视化HOG描述符的示例代码(称为get_hogdescriptor_visu())。过去,我将Jurgenwiki代码复制/粘贴到C++文件中,将我的HOG特征传递给get_hogdescriptor_visu(),然后可视化效果非常好。以下是一个示例:

enter image description here

Jurgenwiki代码的一个注意点是,它期望您使用默认的 HOGDescriptor() 参数(例如,16x16块、8x8单元、9个方向bin)。然而,如果您在您的 HOGDescriptor 中使用自定义参数,您可以调整Jurgenwiki代码以匹配您的HOG参数。 这篇StackOverflow帖子 也很有用。

2

2

0

在这里我想问一个问题,一个人走路时的两个序列帧,我们提取每个图像的HOG,然后取两个HOG的差异。我想知道在最终(差异)HOG可视化中我们得到了哪些信息。

谢谢


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接