【问题标题】:SURF description faster with FAST detection?使用 FAST 检测更快地进行 SURF 描述?
【发布时间】:2012-05-28 07:46:05
【问题描述】:

对于我的硕士论文,我正在对智能手机徽标检测的 SIFT SURF en FAST 算法进行一些测试。

当我简单地对某些方法进行检测、描述和匹配时,我得到以下结果。

对于 SURF 检测器和 SURF 描述符:

找到 180 个关键点

  • 1,994 秒关键点计算时间 (SURF)

  • 4,516 秒描述时间 (SURF)

  • 0.282 秒匹配时间(SURF)

当我使用 FAST 检测器而不是 SURF 检测器时

找到 319 个关键点

  • 0.023 秒关键点计算时间 (FAST)

  • 1.295 秒描述时间(SURF)

  • 0.397 秒匹配时间(SURF)

FAST 检测器比 SURF 检测器快得多,甚至检测到的关键点几乎是两倍,速度快 100 倍。这些结果是可以预测的。

但下一步并不是预期的结果。 319 个 FAST 关键点的 de SURF 描述符怎么可能比 180 个 SURF 关键点的速度更快?

据我所知,描述与检测算法无关……但这些结果并不像预期的那样。

有人知道这怎么可能吗?

代码如下:

    FeatureDetector detector = FeatureDetector.create(FeatureDetector.SURF);
    //FeatureDetector detector = FeatureDetector.create(FeatureDetector.FAST);
    Imgproc.cvtColor(image1, image1, Imgproc.COLOR_RGBA2RGB);
    Imgproc.cvtColor(image2, image2, Imgproc.COLOR_RGBA2RGB);

    DescriptorExtractor SurfExtractor = DescriptorExtractor
    .create(DescriptorExtractor.SURF);


    //extract keypoints
    long time= System.currentTimeMillis();
    detector.detect(image1, keypoints);
    Log.d("LOG!", "number of query Keypoints= " + keypoints.size());
    detector.detect(image2, logoKeypoints);
    Log.d("LOG!", "number of logo Keypoints= " + logoKeypoints.size());
    Log.d("LOG!", "keypoint calculation time elapsed" + (System.currentTimeMillis() -time));

    //Descript keypoints
    long time2 = System.currentTimeMillis();
    Mat descriptors = new Mat();
    Mat logoDescriptors = new Mat();
    Log.d("LOG!", "logo type" + image2.type() + "  intype" + image1.type());
    SurfExtractor.compute(image1, keypoints, descriptors);
    SurfExtractor.compute(image2, logoKeypoints, logoDescriptors);
    Log.d("LOG!", "Description time elapsed" + (System.currentTimeMillis()- time2));

【问题讨论】:

  • 你能发布一些你的代码吗? :)
  • 我的一些代码被添加到问题中!

标签: android opencv sift surf


【解决方案1】:

AFAIK SURF 描述符提取中最耗时的部分是提取每个关键点周围大小为 (2.8*keypoint.size x 2.8*keypoint.size) 的块的子像素。

所以这是我的猜测:FAST 检测器找到的关键点的size 总是等于 7,但 SURF 检测器可以找到更大尺寸的关键点。所以 180 个“大”关键点的处理时间比 319 个“小”要长。

【讨论】:

  • 我已经制定了 SIFT 描述符,但没有在我的论文中完全描述 SURF 描述符,也许如果我这样做了,我就会知道这一点。您的解释似乎很合理,我认为这可能是我问题的正确答案!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 2011-11-09
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多