【发布时间】:2018-05-03 18:09:53
【问题描述】:
我无法弄清楚 ORB 算法输出中的关键点如何在 OpenCV 中排名。
通过在一些样本上进行测试,我知道它与帧上的位置无关,而且我认为算法分配给每个关键点的分数也不是那么好。
我的目标是按分数对关键点进行排名。最好的功能到最差的功能。是我遗漏了什么还是不改变ORB算法的代码源不可行?
【问题讨论】:
我无法弄清楚 ORB 算法输出中的关键点如何在 OpenCV 中排名。
通过在一些样本上进行测试,我知道它与帧上的位置无关,而且我认为算法分配给每个关键点的分数也不是那么好。
我的目标是按分数对关键点进行排名。最好的功能到最差的功能。是我遗漏了什么还是不改变ORB算法的代码源不可行?
【问题讨论】:
在 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
【讨论】: