Детектор OpenCV ORB находит очень мало ключевых точек
Я пытаюсь использовать детектор ключевых точек 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()