gpt4 book ai didi

opencv - 定向梯度直方图中的最终向量

转载 作者:太空宇宙 更新时间:2023-11-03 22:43:59 25 4
gpt4 key购买 nike

图像的尺寸为 64 x 128。即 8192 个幅度和梯度值。在分箱阶段之后,我们剩下 1152 个值,因为我们根据它们的方向将 64 个像素转换为 9 个分箱。你能给我解释一下 L2 归一化后我们如何得到 3780 个向量吗?

最佳答案

假设:您有 64 x 128 色 block 的渐变。

计算 8x8 单元格中的梯度直方图

这是它开始变得有趣的地方。图像被分成 8x8 个单元格,并为每个 8x8 单元格计算一个 HOG。我们使用 8x8 单元格的原因之一是它提供了紧凑的表示。一个 8x8 图像 block 包含 8x8x3 = 192 个像素值(彩色图像)。该补丁的渐变每个像素包含 2 个值(幅度和方向),总计 8x8x2 = 128 个值。这 128 个数字使用 9-bin 直方图表示,该直方图可以存储为 9 个数字的数组。这使得它更加紧凑,并且在一个补丁上计算直方图使得这种表示对噪声更加鲁棒。

直方图本质上是一个由 9 个 bin 组成的向量,对应于 0、20、40、60 ... 180 度角,对应于无符号梯度。

16 x 16 block 归一化

根据图像的梯度创建直方图后,我们希望我们的描述符独立于光照变化。因此,我们对直方图进行归一化。 RGB 颜色 [128, 64, 32] 的矢量范数是 sqrt(128*128 + 64*64 + 32*32) = 146.64,这是臭名昭著的 L2-norm。将该向量的每个元素除以 146.64 得到一个归一化向量 [0.87, 0.43, 0.22]。如果我们将该向量的每个元素乘以 2,则归一化向量将与之前相同。

虽然简单地标准化 9x1 直方图很有趣,但标准化更大的 16 x 16 block 更好。一个 16 x 16 的 block 有 4 个直方图,它们可以连接起来形成一个 36 x 1 的元素向量,并且可以像示例中的 3 x 1 向量一样对其进行归一化。然后将窗口移动 8 个像素,并在该窗口上计算一个标准化的 36 x 1 向量并重复该过程(参见动画:Courtesy)

Windowing

计算HOG特征向量

这就是您的问题所在。

为了计算整个图像 block 的最终特征向量,将 36 x 1 向量连接成一个巨大的向量。让我们计算一下大小:

  1. 16 x 16 block 有多少个位置?有 7 个水平位置和 15 个垂直位置,共 105 个位置。

  2. 每个 16 x 16 block 由一个 36 x 1 向量表示。因此,当我们将它们全部连接成一个巨大的向量时,我们会得到一个 36 x 105 = 3780 维向量

更多详情,请查看the tutorial where I learned.

希望对您有所帮助!

关于opencv - 定向梯度直方图中的最终向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50504110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com