¿Cómo Funciona OpenCV ORB Feature Detector?


Quiero implementar un algoritmo de alineación basado en características usando el detector y extractor de características ORB.
Hasta ahora, he extraído las características usando la clase ORB de OpenCV ORB orb;
orb(gray_image,Mat(),features.keypoints,features.descriptors);
y los emparejó usando la función knnMatch de OpenCV matcher.knnMatch(features1.descriptors, features2.descriptors, pair_matches,2); Después de eso estoy tratando de encontrar una homografía usando la función findHomography, pero esta función necesita al menos 4 coincidencias entre las características de la imagen, y en la mayoría de las imágenes que probé obtuve menos de 4.

¿Alguien ha usado esta característica? ¿Hay alguna documentación sobre ella, o sobre la clase ORB de OpenCV (el significado de los parámetros del constructor ORB)?

P.d. Esta es mi primera pregunta. y no puedo publicar más de 2 enlaces. Para la documentación de opencv utilice este.

Author: Adrian Chitescu, 2011-08-29

1 answers

ACTUALIZACIÓN: Ahora está en la documentación de OpenCV, aquí: http://opencv.itseez.com/modules/features2d/doc/feature_detection_and_description.html#orb

Una descripción detallada del algoritmo se encuentra aquí: http://www.willowgarage.com/sites/default/files/orb_final.pdf


No se menciona en la documentación de OpenCV, pero en realidad OpenCV tiene:

Dos tipos de descriptores:

  • flotador descriptor:
    • TAMIZAR
    • SURF
  • descriptores uchar:
    • ORB
    • BREVE

Y coincidencias correspondientes:

  • para descriptores flotantes:
    • FlannBased
    • BruteForce<L2<float> >
    • BruteForce<SL2<float> > / / desde 2.3.1
    • BruteForce<L1<float> >
  • para los descriptores uchar:
    • BruteForce<Hamming>
    • BruteForce<HammingLUT>
    • FlannBased con índice LSH / / desde 2.4.0

Así que necesitas para modificar su código para usar por ejemplo BruteForce<Hamming> matcher para descriptores ORB. Es posible utilizar la distancia L2 o L1 para hacer coincidir los descriptores uchar, pero los resultados serán incorrectos y la findHomografía devuelve resultados insatisfactorios.

 48
Author: Andrey Kamaev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-21 17:04:59