Детектор 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()

Ответы на вопрос(2)

Ваш ответ на вопрос