cod*_*ner 11 python opencv computer-vision feature-detection
我正在尝试使用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()
Run Code Online (Sandbox Code Playgroud)
iab*_*der 10
增加nfeature会增加检测到的角点数.关键点提取器的类型似乎无关紧要.我不确定这个参数如何传递给FAST或Harris,但似乎有效.
orb = cv2.ORB_create(scoreType=cv2.ORB_FAST_SCORE)
Run Code Online (Sandbox Code Playgroud)
orb = cv2.ORB_create(nfeatures=100000, scoreType=cv2.ORB_FAST_SCORE)
Run Code Online (Sandbox Code Playgroud)
小智 6
即使这个线程很老,我希望这可以帮助有同样问题的人:
我不确定如何将此参数传递给 FAST 或 Harris,但它似乎有效。
Rublee 等人很好地解释了这一点。在他们的论文“ORB:SIFT 或 SURF 的有效替代方案”中。由于我认为无法更好地解释它,这里直接引用“2011 计算机视觉国际会议”第 2565 页:
FAST 不产生角度的度量,我们发现它沿边缘有很大的响应。我们采用 Harris 角测量 [11] 来排序 FAST 关键点。对于目标数量 N 的关键点,我们首先将阈值设置得足够低以获得超过 N 个关键点,然后根据 Harris 度量对其进行排序,并选择前 N 个点。