大小和响应在 SURF 关键点中究竟代表啥?

Posted

技术标签:

【中文标题】大小和响应在 SURF 关键点中究竟代表啥?【英文标题】:What does size and response exactly represent in a SURF keypoint?大小和响应在 SURF 关键点中究竟代表什么? 【发布时间】:2012-05-06 21:12:08 【问题描述】:

我正在使用 OpenCV 2.3 进行关键点检测和匹配。但我对检测算法给出的sizeresponse 参数有点困惑。它们到底是什么意思?

根据OpenCV手册,我想不通:

float size: 有意义的关键点邻域的直径

float response: 最强关键点的响应 被选中。可用于进一步排序或二次抽样

我认为跟踪的最佳点是响应最高的点,但似乎并非如此。那么我如何对 surf 检测器返回的一组关键点进行二次采样,以仅保留最佳可追踪性?

【问题讨论】:

【参考方案1】:

    “size”是原始图像中描述符所覆盖区域的大小(它是通过在比例空间中对原始图像进行下采样获得的,因此它根据它们的比例从关键点到关键点而变化)。

    “响应”确实是一个点“有多好”(粗略地说,就角点而言)的指标。

    对于静态场景检索来说,好的点是稳定的(这是 SIFT/SURF 描述符的主要目的)。在跟踪的情况下,您可能会出现好点,因为被跟踪的对象位于良好的背景上,一半在阴影中......然后因为这种情况发生变化(光线变化,遮挡......)而消失。因此,不能保证跟踪任务总是有一个好点。

【讨论】:

【参考方案2】:

大小和响应

SURF是一个blob检测器,简而言之,一个特征的大小就是blob的大小。更准确地说,OpenCV 返回的大小是近似 Hessian 算子长度的一半。大小也称为比例,这是由于斑点检测器的工作方式,即在功能上等于首先用高斯滤波器在几个尺度上模糊图像,然后对图像进行下采样,最后检测具有固定大小的斑点。请参阅下图,显示 SURF 特征的大小。每个特征的大小是绘制圆的半径。从特征中心到圆周的线表示角度或方向。在此图像中,斑点检测过滤器的响应强度是彩色编码的。您可以看到大多数检测到的特征响应较弱。 (查看原图here)

此直方图显示了上图中特征的响应强度分布:

要跟踪哪些特征?

最强大的特征跟踪器会跟踪所有检测到的特征。特征越多,鲁棒性越强。但是跟踪大量特征是不切实际的,因为我们经常希望限制计算时间。要经常跟踪的特征数量应该针对每个应用程序进行经验调整。通常将图像划分为规则的子区域,并且在每个子区域中保持跟踪 n 个最强的特征。通常选择 n,使得每帧总共检测到大约 500~1000 个特征。

参考文献

阅读journal paper describing SURF 肯定会让您对它的工作原理有一个很好的了解。尽量不要陷入细节中,特别是如果您的背景不是机器/计算机视觉或图像处理。 SURF 检测器乍一看似乎非常新颖,但整个想法是使用积分图像(早在 SURF 之前就已被其他方法使用)估计 Hessian 算子(一种成熟的滤波器)。如果你想很好地理解 SURF 并且你对图像处理不熟悉,你需要回去阅读一些介绍材料。最近偶遇a new and free book,他的第13章对特征检测做了很好的简要介绍。并非其中所说的所有内容在技术上都是正确的,但这是一个很好的起点。 Here 你可以找到另一个很好的 SURF 描述,其中有几张图片显示了每个步骤的工作原理。在该页面上,您会看到以下图片:

您可以看到白色和黑色的斑点,这些是 SURF 在多个尺度上检测并估计它们的大小(OpenCV 代码中的半径)的斑点。

【讨论】:

非常明确的答案。非常感谢。我想再问您一件事,因为您似乎对 SURF 了解很多。除了 opencv Manual guide 之外,还有其他关于 SURF 检测器和提取器的文档值得一看吗? 非常感谢。我实际上有计算机科学背景,但更多的是关于 SURF 的 openCV 实现的信息。对于感兴趣的人,我还发现了这个网站link,它很好地描述了 SURF 所基于的 SIFT。 我想再问一件事关于尺寸。如果我理解得很好,更大的尺寸意味着 SURF 检测到的 blob 的尺寸更大?但是,blob 的大小到底是什么意思?是用于检测关键点的区域大小吗? blob的大小,是使用的Hessian算子的大小。请参阅我提到的 SURF 论文或我添加的新参考。可能这会帮助你理解它。别忘了 OpenCV 是开源的,你可以去阅读代码来看看它是如何实现的。 你有涂鸦图片的参考资料吗?

以上是关于大小和响应在 SURF 关键点中究竟代表啥?的主要内容,如果未能解决你的问题,请参考以下文章

MSDN 文档中的 OpenInputDesktop 究竟代表啥?

响应式网页设计和调整图像大小

SPSS做因子分析的时候那个旋转矩阵(Rotated Matrix)怎么看啊?矩阵里面都代表啥意思啊?

c# 垃圾回收。 .NET CLR 内存性能计数器显示 0 代表 gen 0 堆大小等。这是啥意思?

MATLAB surf meshgrid 问题 - 2 个向量 1 个矩阵 - 曲面图

如何访问SURF的关键点的特征尺度和主导方向在Python?