图像检索 - 边缘直方图

时间:2012-04-06 17:38:54

标签: image-processing graphics computer-vision

我的讲师在edge histograms上为image retrieval添加了幻灯片,他声明必须先将图片划分为4x4 blocks,然后检查horizontal, vertical, +45°, and -45° orientations处的边缘。然后他说这是用14x1 histogram表示的。我不知道他是如何决定必须创建14x1 histogram的。有谁知道他是如何提出这个值的,或者如何创建edge histogram

感谢。

1 个答案:

答案 0 :(得分:3)

你所指的东西叫做方向梯度直方图(HoG)。但是,数学不适用于您的示例。通常,您将选择空间分级参数(4x4块)。对于每个块,您将计算在某些不同方向上的梯度幅度(在您的情况下,只有2个方向)。因此,在每个块中,您将进行N_{directions}次测量。将其乘以块数(16个为您),您可以看到总计16*N_{directions}总计。{/ p>

要形成直方图,只需将这些测量值连接成一个长矢量即可。只要您跟踪将bin / direction组合映射到1-D直方图中的插槽的方式,任何进行连接的方法都可以。这种连接的长直方图最常用于机器学习任务,例如训练分类器根据其渐变方向识别图像的某些方面。

但是在你的情况下,教授必须做一些特别的事情,因为如果你有16个不同的图像块(一个4x4网格的图像块),那么你需要计算每个块不到1个测量结果总体直方图中总共有14次测量。

或者,教授可能意味着你采用[-45,+ 45]之间的角度范围,然后将其分为14个不同的值:-45,-45 + 90/14,-45 + 2 * 90 / 14,......等等。

如果这就是教授的意思,那么在这种情况下,你会在一个街区内获得14个方向箱。一旦所有内容连接起来,你就会有一个很长的14 * 16 = 224分量向量来描述整个图像。

顺便说一句,我已经使用Digary of Gradient的Python实现进行了大量测试,因此您可以看到一些链接herehere的工作。该网站还有一些示例代码,但在scikits.image中出现了更受支持的HoG版本。