我正在尝试使用ORB关键点检测器,它似乎返回比SIFT检测器和FAST检测器少得多的点 .
此图显示了ORB检测器找到的关键点:
此图像显示了SIFT检测阶段找到的关键点(FAST返回相似数量的点) .
具有这么少的点导致图像之间的特征匹配结果非常差 . 我现在只是对ORB的检测阶段感到好奇,因为这似乎是我得到了不正确的结果 . 我已尝试使用带有默认参数的ORB检测器以及下面详述的自定义参数 .
为什么会有这么大的差异?
码:
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()
2 回答
增加 nfeatures 会增加检测到的拐角数量 . 关键点提取器的类型似乎无关紧要 . 我不确定这个参数如何传递给FAST或Harris,但似乎有效 .
虽然这个帖子很老,但我希望这可以帮助有同样问题的人:
Rublee等人对此进行了很好的解释 . 在他们的论文“ORB:SIFT或SURF的有效替代品”中 . 由于我认为不能更好地解释它,这里是“2011年计算机视觉国际 Session ”第2565页的直接引用: