【问题标题】:Color SURF detector彩色 SURF 探测器
【发布时间】:2013-05-29 02:34:50
【问题描述】:

SURF 默认情况下适用于灰度图像。我正在考虑在 HSV 图像上做 SURF。我的方法是将通道分为 H、S 和 V。我使用 S 和 V 进行关键点检测。我试图比较 SV 与 RGB 中的关键点数量,就通道而言,HSV 提供了更多功能。

不确定我所做的是否正确。需要对在 HSV 图像上应用 SURF 的可能性进行一些解释。我已经阅读了一篇关于在不同颜色空间而不是 SURF 上应用 SIFT 的论文。

  1. 有没有更好的方法来实现这一点?
  2. 我们可以将 SURF 应用于颜色、HSV 空间吗?

感谢您的宝贵时间。

【问题讨论】:

  • 我认为可以在 HSV 图像上提取 SURF。但要记住,S和V通道的取值范围不同(与灰度图也不同),所以需要仔细调整hessianThreshold参数,使结果合理。并且弄清楚如何整合来自不同渠道的关键点也很重要。
  • 在 openCV 中,HSV 的范围与标准 HSV 不同。在 OpenCV 中,H 在 0-180 之间,而 S 和 V 都在 0-255 之间。我认为灰度也在 0-255 之间,即 8 位。所以我想我上面的尝试看起来不错。你觉得怎么样?
  • 结果看起来很合理。这是您可能感兴趣的一篇论文:Color-SURF: A surf descriptor with local kernel color histograms。但看起来他们仍然使用灰度进行关键点检测和计算 Color-SURF 描述符。

标签: opencv surf


【解决方案1】:
  1. 我们可以将 SURF 应用于颜色、HSV 空间吗?

我没有测试过,但据我所知,SIFT 和 SURF 使用(原则上)非常相似的检测技术:

SIFT 检测器使用Difference-of-Gaussian (DoG) 技术有效地逼近Laplacian-of-Gaussian (LoG),两者都是Blob Detection 技术。

SURF 检测器使用任意大小的 box-filters/box-blurs 来计算(或近似?)Hessian 的行列式,这是一个 Blob 检测 技术。

这两种方法都使用一些策略来计算多个尺度的这些 blob(SIFT:DoG-Pyramid;SURF:积分图像来缩放过滤器大小)。最后,两种方法都检测到给定二维数组中的blob。

因此,如果 SIFT 可以在您的 (H)SV 通道中检测到良好的特征,那么 SURF 应该能够做到这一点,因为原则上它们都可以检测到 blob。您要做的是检测色调/饱和度/值通道中的斑点:

  • hue-blob:被不同(全部较高或全部较低)色调包围的类似色调区域;

  • saturation-blob:区域...是什么?不知道如何解释;

  • value-blob:应该给出与 grayimage 转换的 RGB 图像的 blob 非常相似的结果。

要补充一点:我只是在处理检测器!不知道颜色数据如何影响 SIFT/SURF 描述。

【讨论】:

    【解决方案2】:

    我没有对其进行测试,但您可以使用兴趣点 HSV 值作为附加匹配条件。我在原始实现中使用的以及加速匹配图像对的是 Hessian 矩阵行列式的符号。该标志告诉我们它是深色背景上的浅色斑点还是浅色背景上的深色斑点。显然,人们不会尝试将深色斑点与明亮斑点匹配。

    以类似的方式,您可以使用 HSV 值并使用距离。为什么将蓝色斑点与黄色斑点匹配。没有任何意义,除了白平衡或照明完全搞砸了。也许我的paper about matching line segments 可以在这里提供帮助。我在那里用过 HSV。

    关于在H、S、V不同通道上提取SURF兴趣点,我同意Micka的回答。

    您可以尝试使用 Hue 通道制作描述符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2015-11-17
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多