【问题标题】:Keypoint detection and matching for large images in opencvopencv中大图像的关键点检测与匹配
【发布时间】:2012-05-27 06:49:50
【问题描述】:

我正在opencv中进行关键点检测和匹配以拼接两个图像。

当图像很小时,它工作得很好。但是在处理较大的图像时,检测到的关键点数量会增加,因此要花费大量时间来匹配它们。但是为了拼接图像,我们似乎不需要这么多关键点。为了提高效率,有没有办法只检测有限数量的关键点?

在代码中,我使用 SiftFeatureDetector 和 SiftDiscriptorExtractor 来检测关键点并提取描述符。

问候。

【问题讨论】:

    标签: opencv sift image-stitching


    【解决方案1】:

    我的建议:

    重新调整图像大小,使其变得更小,然后执行特征匹配。 一旦你有一个快速的解决方案(Homography)应用它,下一次匹配会更快。

    您确实有办法轻松控制功能的数量。您可以提高阈值,因此将选择更少的功能。 您甚至可以将阈值包装在 while() 循环中。它会提高阈值,直到特征量小于 N(但大于某些 M)。

    查看我在此处发布的完整代码示例:

    Calculate offset/skew/rotation of similar images in C++

    【讨论】:

    • 1,重新调整大小是个好方法。在detector.detect(img, feature, mask) 中使用掩码参数会产生等效的结果,对吧? 2、控制detector.detect获得的特征量似乎并不容易,因为函数中不能设置阈值,对吧?
    • 使用面具是一个好方法,但我不确定你知道面具应该是什么。你怎么能提前知道哪里可以找到好的功能?关于功能的数量,在我发布的示例中,有一行:Ptrdetector = new SurfFeatureDetector(2000); 2000 是您需要更改的数字,方法是将此行与检测器->检测并在检测到的特征数量上设置条件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    相关资源
    最近更新 更多