我无法弄清楚ORB算法输出中的关键点如何在OpenCV中排名。
我在一些样本上测试它所知道的是它不是在帧上的位置,我认为算法分配给每个关键点的得分并不好。
我的目标是按照得分对关键点进行排名。最差功能的最佳功能。我是否遗漏了某些东西,或者在不改变ORB算法的代码来源的情况下是不可行的?
答案 0 :(得分:0)
在OpenCV源代码中,有一条注释和代码,表明关键点按图像金字塔等级进行聚类。见:OpenCV Orb code on github。在每个图像金字塔等级中,使用OpenCV的FastFeatureDetector选择关键点,FastFatureDetector按行然后按列扫描,计算角分数。因此,如果您使用图像金字塔,结果将是输出关键点既不按图像位置也不按关键点得分排序。似乎Python lib不允许你设置图像金字塔等级的数量?但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