我的讲师在image retrieval的edge histograms上有一张幻灯片,他说必须先把图像分成4x4 blocks,然后在horizontal, vertical, +45°, and -45° orientations上检查边缘。然后,他声明这将在14x1 histogram中表示。我不知道他是如何决定必须创建14x1 histogram的。有谁知道他是如何得出这个值的,或者知道如何创建一个edge histogram
谢谢。
发布于 2012-04-07 12:18:11
你所指的东西叫做定向梯度直方图(HoG)。然而,数学并不适用于您的示例。通常情况下,您将选择空间入库参数( 4x4块)。对于每个块,您将计算一些不同方向上的梯度幅度(在您的例子中,只有两个方向)。因此,在每个块中,您将进行N_{directions}测量。将其乘以块的数量(对于您来说是16个),您将看到16*N_{directions}总测量值。
要形成直方图,只需将这些测量值连接成一个长向量。只要您跟踪将bin/方向组合映射到一维直方图中的一个槽中的方式,任何进行连接的方法都是可以的。然后,这种长长的连接直方图最常用于机器学习任务,比如训练分类器根据图像梯度的方向识别图像的某些方面。
但在您的例子中,教授必须做一些特殊的事情,因为如果您有16个不同的图像块( 4x4图像块的网格),那么您需要计算每个块不到1个测量值,最终得到整个直方图中的总共14个测量值。
或者,教授的意思可能是你取-45,+45之间的角度范围,然后将其分为14个不同的值:-45,-45 + 90/14,-45 + 2*90/14,...诸若此类。
如果这是教授的意思,那么在这种情况下,您将在一个区块内获得14个定向箱。一旦所有的东西都连接起来,你就会有一个非常长的14*16 =224个分量的向量来描述整个图像。
顺便说一句,我用Python实现的渐变直方图做了很多测试,所以你可以看到一些与here或here相关的工作。该站点上还有一些示例代码,不过在scikits.image中出现了一个更受支持的HoG版本。
https://stackoverflow.com/questions/10047057
复制相似问题