【问题标题】:Ranking best features from ORB algorithmORB算法的最佳特征排名
【发布时间】:2018-05-03 18:09:53
【问题描述】:

我无法弄清楚 ORB 算法输出中的关键点如何在 OpenCV 中排名。

通过在一些样本上进行测试,我知道它与帧上的位置无关,而且我认为算法分配给每个关键点的分数也不是那么好。

我的目标是按分数对关键点进行排名。最好的功能到最差的功能。是我遗漏了什么还是不改变ORB算法的代码源不可行?

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    在 OpenCV 源代码中,有一条注释和代码表明关键点按图像金字塔级别进行聚类。见:OpenCV Orb code on github。在每个图像金字塔级别中,使用 OpenCV 的 FastFeatureDetector 选择关键点,它按行然后按列扫描,计算角点分数。因此,如果您使用图像金字塔,结果将是输出关键点既不会按图像位置也不会按关键点分数排序,正如您所指出的。似乎 Python 库可能不允许您设置图像金字塔级别的数量?但是 C++ API 可以(请参阅:http://docs.opencv.org/trunk/db/d95/classcv_1_1ORB.html)。

    在任何情况下,您都应该能够通过在 Python 中使用输入参数来设置保留的关键点的数量,因此您可能不关心它们的排名。据我所知,您可能只想按分数对关键点进行排名,以丢弃低得分点,这已经可以使用 API 完成。见:http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_orb/py_orb.html#orb-in-opencv

    【讨论】:

    • 感谢您的留言以及有关金字塔级别的见解!实际上,我仍然想尝试对它们进行排名,或者至少选择 3 个最强/最强大的功能。事实上,我想将仿射变换从一帧转换到我在第一帧上能找到的另一个最佳顶点。任何输入都将非常有价值!谢谢!
    • 通常,如果您想获得从一帧到下一帧的仿射(或其他)变换,您可能希望根据它们在帧之间的匹配分数对特征进行排名,而不是根据计算的哈里斯角分数在每一帧的特征检测阶段。换句话说-我建议您计算一堆可能的关键点并为每个关键点计算描述符,然后尝试匹配描述符。见:docs.opencv.org/2.4/doc/tutorials/features2d/feature_homography/…
    • 是的,你是对的!这实际上就是我现在正在尝试做的!非常感谢您对特征匹配良好实践的洞察!
    猜你喜欢
    • 2019-05-30
    • 2013-01-01
    • 2013-03-18
    • 2012-12-16
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 2018-02-22
    • 2014-05-16
    相关资源
    最近更新 更多