El detector de ORB OpenCV encuentra muy pocos puntos clave

Estoy tratando de usar el detector de puntos clave ORB y parece que está devolviendo muchos menos puntos que el detector SIFT y el detector FAST.

Esta imagen muestra los puntos clave encontrados por el detector ORB:

introduzca la descripción de la imagen aquí

y esta imagen muestra los puntos clave encontrados por la etapa de detección SIFT (FAST devuelve un número similar de puntos).

introduzca la descripción de la imagen aquí

    Tener tan pocos puntos da como resultado resultados de comparación de características muy pobres en las imágenes. Sin embargo, siento curiosidad por la etapa de detección de ORB en este momento porque parece que estoy obteniendo resultados incorrectos. He intentado usar el detector ORB con parámetros predeterminados y también parámetros personalizados detallados a continuación.

    ¿Por qué una diferencia tan grande?

    Código:

    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() 

    El aumento de las características aumenta el número de esquinas detectadas. El tipo de extractor de puntos clave parece irrelevante. No estoy seguro de cómo se pasa este parámetro a FAST o Harris, pero parece funcionar.

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

    introduzca la descripción de la imagen aquí

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

    introduzca la descripción de la imagen aquí

    Aunque este hilo es bastante antiguo, espero que esto pueda ayudar a alguien con la misma pregunta:

    No estoy seguro de cómo se pasa este parámetro a FAST o Harris, pero parece funcionar.

    Eso se explica muy bien por Rublee et al. en su artículo “ORB: una alternativa eficiente a SIFT o SURF”. Como no creo poder explicarlo mejor, aquí hay una cita directa de la página 2565 de “Conferencia Internacional sobre Visión por Computadora 2011”:

    FAST no produce una medida de cornerness, y hemos encontrado que tiene grandes respuestas a lo largo de los bordes. Empleamos una medida de la esquina de Harris [11] para ordenar los puntos clave FAST. Para un número objective de puntos clave, primero establecemos el umbral lo suficientemente bajo como para obtener más de N puntos clave, luego los ordenamos según la medida de Harris y seleccionamos los N puntos superiores.