【问题标题】:OpenCV HOGDescriptor return valueOpenCV HOGDescriptor 返回值
【发布时间】:2016-06-22 06:07:46
【问题描述】:

为什么 HOG 描述符返回的向量是 float 而不是 int?假设返回一个直方图..

【问题讨论】:

  • 不确定,只是猜测:直方图可能已标准化(例如,所有 bin 的总和 = 常数 (1?))
  • 不。大于 1。
  • 所以也许是一个不同的常数? :)

标签: c++ opencv int descriptor


【解决方案1】:

为了补充我认为正确的先前答案,根据我发现比最初的Dalal & Triggs paper 更清晰的HoG note,涉及两个规范化步骤:

  • 块标准化

将单元格分组为每个 2 x 2 单元格的重叠块,以便 每个块的大小为 2C x 2C 像素。水平或垂直两个 连续块重叠两个单元格,即块步长为 C 像素。因此,每个内部单元被四个覆盖 块。将每个块中的四个单元格直方图连接成一个 单块特征 b 并通过其归一化块特征 欧几里得范数。

  • HOG 特征归一化

最终的归一化使 HOG 特征独立于整体 图像对比度。

还应该在两个连续的 bin 之间进行双线性插值投票,以防止量化伪影。

此外,它不能是 int,因为您不仅要计算落在 bin 中的梯度向量的数量,还要加上梯度幅度。

【讨论】:

    【解决方案2】:

    我相信@Micka 是对的:直方图可能已标准化(可能不是 1)。在Wikipedia page on HOG Descriptors上写着:

    为了提高准确性,可以通过计算图像更大区域(称为块)的强度度量来对局部直方图进行对比度归一化,然后使用该值对块内的所有单元格进行归一化。这种归一化导致对照明和阴影变化的更好的不变性。

    因此需要vector<float> 而不是vector<int>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      • 2014-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多