Python OpenCV ORB探测器发现的关键点很少

Python OpenCV ORB探测器发现的关键点很少,python,opencv,computer-vision,feature-detection,Python,Opencv,Computer Vision,Feature Detection,我尝试使用ORB关键点检测器,它返回的点似乎比SIFT检测器和FAST检测器少得多 此图显示了ORB探测器发现的关键点: 这张图显示了SIFT检测阶段发现的关键点(FAST返回相似数量的点) 拥有如此之少的点会导致图像间非常差的特征匹配结果。我只是对ORB现在的检测阶段很好奇,因为这看起来我得到的结果不正确。我已经尝试使用带有默认参数和下面详述的自定义参数的ORB检测器 为什么会有这么大的差异 代码: 增加n特征会增加检测到的角点数量。关键点提取器的类型似乎无关紧要。我不确定这个参数是如何传

我尝试使用ORB关键点检测器,它返回的点似乎比SIFT检测器和FAST检测器少得多

此图显示了ORB探测器发现的关键点:

这张图显示了SIFT检测阶段发现的关键点(FAST返回相似数量的点)

拥有如此之少的点会导致图像间非常差的特征匹配结果。我只是对ORB现在的检测阶段很好奇,因为这看起来我得到的结果不正确。我已经尝试使用带有默认参数和下面详述的自定义参数的ORB检测器

为什么会有这么大的差异

代码:


增加n特征会增加检测到的角点数量。关键点提取器的类型似乎无关紧要。我不确定这个参数是如何传递给FAST或Harris的,但它似乎可以工作

orb = cv2.ORB_create(scoreType=cv2.ORB_FAST_SCORE)


尽管这条线索已经很老了,但我希望这条线索可以帮助有同样问题的人:

我不确定这个参数是如何传递给FAST或Harris的,但它似乎可以工作

orb = cv2.ORB_create(scoreType=cv2.ORB_FAST_SCORE)
Rublee等人在他们的论文“ORB:筛选或冲浪的有效替代品”中对此做了很好的解释。由于我认为无法更好地解释这一点,这里直接引用“2011年国际互联网会议”第2565页 计算机视觉“:

FAST不会产生转弯度,我们 我们发现它沿边缘有很大的响应。我们雇用 Harris角测量[11]用于排序快速关键点。 对于N个关键点的目标数量,我们首先设置 阈值低到足以获得N个以上的关键点,然后 根据Harris测量值订购,然后选择 前N点


降低门槛,我不认为这是问题所在。我已经尝试降低这两个阈值,但在检测到的关键点数量上没有显著差异。Hmmm。scoreType=cv2.ORB\u HARRIS\u SCORE->FAST\u SCORE怎么样?作为一个离线者,我可以建议尝试AKAZE检测器/描述符-它既快速又健壮。
orb = cv2.ORB_create(nfeatures=100000, scoreType=cv2.ORB_FAST_SCORE)