opencv - 关于使用 SURF 的对象识别和特征的困惑

标签 opencv image-recognition feature-detection surf

我在理解 SURF 和 SIFT 算法时遇到了一些概念问题 All about SURF .据我了解,SURF 发现高斯的拉普拉斯算子,而 SIFT 对高斯的差异进行运算。然后它围绕它构造一个 64 变量向量来提取特征。我已应用此 CODE .

(Q1) 那么,什么构成了特征呢?

(Q2) 我们使用 SurfFeatureDetector 检测器(500)初始化算法。那么,这是否意味着特征空间的大小为 500?

(Q3) SURF Good_Matches 的输出给出了 Keypoint1 和 Keypoint2 之间的匹配,通过调整匹配的数量,我们可以得出结论,是否已经找到/检测到对象。关键点是什么意思?这些存储功能吗?

(Q4) 我需要做对象识别应用程序。在代码中,算法似乎可以识别这本书。因此,它可以应用于物体识别。我的印象是 SURF 可用于根据颜色和形状区分对象。但是,SURF 和 SIFT 是找到角边缘检测的,所以使用彩色图像作为训练样本没有意义,因为它们会被转换为灰度。在这些算法中没有使用颜色或 HSV 的选项,除非我分别计算每个 channel 的关键点,这是一个不同的研究领域 (Evaluating Color Descriptors for Object and Scene Recognition)。

那么,如何根据物体的颜色、形状来检测和识别物体呢?我想我可以使用 SURF 根据形状来区分对象。比如说,我有两本书和一瓶。我只需要从整个对象中识别出一本书。但是,一旦场景中有其他类似形状的物体,SURF 就会产生很多误报。我将不胜感激有关申请我的申请的方法的建议。

最佳答案

  • 局部最大值(DoG 的响应大于(小于)关于金字塔中的点、上图和情人图像的相邻像素的响应——3x3x3 邻域)形成特征(圆)中心的坐标。圆的半径是金字塔的水平。
  • 是 Hessian 阈值。这意味着您将只取值大于阈值的最大值(参见 1)。更大的阈值导致更少的特征数量,但特征的稳定性更好,反之亦然。
  • 关键点 == 特征。在 OpenCV Keypoint is the structure to store features.
  • 不,SURF 适用于比较纹理对象,但不适用于形状和颜色。对于形状,我建议使用 MSER(但不是 OpenCV 之一)、Canny 边缘检测器,而不是局部特征。 This presentation可能有用
  • 关于opencv - 关于使用 SURF 的对象识别和特征的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19851134/

    相关文章:

    android - 使用OpenCV在Android上进行多对象检测

    python matplotlib图像-默认反转白色和黑色

    图像与数据库的比较

    c++ - 我无法从 flandmark v0.7 Plataform x86 Win 7 生成 dll

    C#人脸识别

    python - 在 OpenCV 中处理大型(超过 3000x3000)图像,但它们不适合我的屏幕

    image-processing - 图像识别(形状识别)

    Python OCR库或手写字符识别引擎

    c - 如何确定用于多边形近似的 cvCanny 的最佳参数

    opencv - 特征检测和物体检测的区别