feature efficient alternative android opencv alignment computer-vision

android - efficient - ¿Cómo funciona OpenCV ORB Feature Detector?



orb: an efficient alternative to sift or surf (1)

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:

  • descripciones flotantes:
    • TAMIZAR A
    • NAVEGAR
  • descripciones de uchar:
    • ORBE
    • BREVE

Y corresponsales correspondientes:

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

Por lo tanto, debe modificar su código para usar, por ejemplo, BruteForce<Hamming> matcher para los descriptores ORB. Es posible usar la distancia L2 o L1 para hacer coincidir las descripciones de uchar, pero los resultados serán incorrectos y findHomography arrojará resultados insatisfactorios.

Quiero implementar un algoritmo de alineación basado en características usando el detector y extractor de funciones ORB.
Hasta ahora, he extraído las características usando la clase ORB orb; OpenCV ORB orb;
orb(gray_image,Mat(),features.keypoints,features.descriptors);
y los combinó 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 al respecto, o sobre la clase ORB de OpenCV (el significado de los parámetros del constructor ORB)?

PD: esta es mi primera pregunta. y no puedo publicar más de 2 enlaces. Para la documentación de OpenCV use esto .