颜色SURF检测器

8
默认情况下,SURF 是在灰度图像上运行的。 我正在考虑在HSV图像上进行SURF处理。我的方法是将图像通道分离成H、S和V,并使用S和V进行关键点检测。我试图比较SV与RGB中关键点数量,并且就通道而言,HSV提供更多特征。
不确定我是否正确。需要一些解释来说明在HSV图像上应用SURF的可能性。我已阅读了一篇关于在不同颜色空间应用SIFT的论文,但没有关于SURF的。
1. 有更好的方法实现此功能吗? 2. 我们可以将SURF应用于彩色、HSV空间吗?
感谢您的时间。

我认为可以在HSV图像上提取SURF特征。但请注意,S和V通道的值范围不同(也与灰度图像不同),因此需要仔细调整hessianThreshold参数以使结果合理。另外,重要的是要弄清楚如何合并来自不同通道的关键点。 - cxyzs7
在OpenCV中,HSV的范围与标准HSV不同。在OpenCV中,H的取值范围为0-180,而S和V的取值范围为0-255。我认为灰度图像也是8位的,取值范围为0-255。所以我猜我上面尝试的看起来还不错。你觉得呢? - rish
结果看起来很合理。这里有一篇论文可能会让你感兴趣:Color-SURF: A surf descriptor with local kernel color histograms。但是看起来他们仍然使用灰度图像进行关键点检测和计算Color-SURF描述符。 - cxyzs7
2个回答

7
  1. 我们可以将SURF应用于颜色、HSV空间吗?

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

SIFT检测器使用差分高斯(DoG)技术来有效地逼近高斯拉普拉斯算子(LoG),它们都是斑点检测技术。

SURF检测器使用任意大小的盒状滤波器/模糊器来计算(或逼近?)Hessian行列式,这是一种斑点检测技术。

这两种方法都使用某些策略在多个尺度上计算这些斑点(SIFT:DoG金字塔;SURF:积分图像以缩放滤波器大小)。最终,这两种方法在给定的2D数组中检测出斑点

因此,如果SIFT能够在您的(H)SV通道中检测出好的特征,那么SURF也应该能够做到,因为它们原则上都可以检测到斑点。您将要做的是,在色调/饱和度/亮度通道中检测斑点:
  • 色调斑点:色调相似的区域,被不同的(全部更高或全部更低)色调所包围;

  • 饱和度斑点:一些什么东西的区域?不知道如何解释;

  • 亮度斑点:应该会给出与灰度图像转换后的RGB图像的斑点非常相似的结果。

还有一件事要补充:我只处理探测器!不知道SIFT/SURF 描述如何受颜色数据影响。


0

我没有测试过,但你可以使用兴趣点HSV值作为额外的匹配准则。在原始实现中,我使用了Hessian矩阵的行列式符号,并加快了匹配图像对的速度。符号告诉我们它是在黑色背景上的亮斑还是在白色背景上的暗斑。显然,不会尝试用明亮的斑块来匹配黑暗的斑块。

类似地,您可以使用HSV值并使用距离来进行匹配。为什么要将蓝色斑块与黄色斑块进行匹配呢?除非白平衡或照明完全混乱。也许我的关于匹配线段的论文能在这里提供帮助。我在那里使用了HSV。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接