OpenCV ORB检测器发现很少的关键点 [英] OpenCV ORB detector finds very few keypoints

查看:810
本文介绍了OpenCV ORB检测器发现很少的关键点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to use the ORB keypoint detector and it seems to be returning much fewer points than the SIFT detector and the FAST detector.

此图显示了由ORB检测器找到的关键点:

This image shows the keypoints found by the ORB detector:

,此图显示了SIFT检测阶段找到的关键点(FAST返回相似数量的点).

and this image shows the keypoints found by the SIFT detection stage (FAST returns a similar number of points).

如此少的点导致整个图像的特征匹配结果非常差.我现在只是对ORB的检测阶段感到好奇,尽管这似乎是我得到了不正确的结果.我尝试将ORB检测器与默认参数以及下面详述的自定义参数一起使用.

Having such few points is resulting in very poor feature matching results across images. I'm just curious about the detection stage of ORB right now though because this seems like I'm getting incorrect results. I've tried using the ORB detector with default parameters and also custom parameters detailed below as well.

为什么会有如此大的差异?

Why such a big difference?

代码:

orb = cv2.ORB_create(edgeThreshold=15, patchSize=31, nlevels=8, fastThreshold=20, scaleFactor=1.2, WTA_K=2,scoreType=cv2.ORB_HARRIS_SCORE, firstLevel=0, nfeatures=500)
#orb = cv2.ORB_create()
kp2 = orb.detect(img2)
img2_kp = cv2.drawKeypoints(img2, kp2, None, color=(0,255,0), \
        flags=cv2.DrawMatchesFlags_DEFAULT)

plt.figure()
plt.imshow(img2_kp)
plt.show()

推荐答案

增加 nfeatures 会增加检测到的角点数量.关键点提取器的类型似乎无关紧要.我不确定如何将此参数传递给FAST或Harris,但它似乎有效.

Increasing nfeatures increases the number of detected corners. The type of keypoint extractor seems irrelevant. I'm not sure how this parameter is passed to FAST or Harris but it seems to work.

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

orb = cv2.ORB_create(nfeatures=100000, scoreType=cv2.ORB_FAST_SCORE)

这篇关于OpenCV ORB检测器发现很少的关键点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆