Comment fonctionne Opencvorb Feature Detector?

je veux implémenter un algorithme d'alignement basé sur les fonctionnalités en utilisant le détecteur de fonctionnalités ORB et l'extracteur.

Jusqu'à présent, j'ai extrait les caractéristiques en utilisant la classe ORB D'OpenCV ORB orb;

orb(gray_image,Mat(),features.keypoints,features.descriptors);

et les a appariés en utilisant la fonction knnMatch de openCV matcher.knnMatch(features1.descriptors, features2.descriptors, pair_matches,2); Après cela, j'essaie de trouver une homographie en utilisant la fonction findHomography, mais cette fonction nécessite au moins 4 correspondances entre les caractéristiques de l'image, et sur la plupart des images que j'ai testé j'ai obtenu moins de 4.

quelqu'un a-t-il utilisé cette fonctionnalité? Y a-t-il de la documentation à ce sujet, ou à propos de la classe ORB d'OpenCV(la signification des paramètres du constructeur ORB)?

P. S. C'est ma première question. et je ne peux pas poster plus de 2 liens. Pour la documentation opencv utiliser ce .

26
demandé sur Adrian Chitescu 2011-08-29 20:04:29

1 réponses

mise à JOUR: Maintenant, il est dans le OpenCV documentation, ici: http://opencv.itseez.com/modules/features2d/doc/feature_detection_and_description.html#orb

une description détaillée de l'algorithme se trouve ici: http://www.willowgarage.com/sites/default/files/orb_final.pdf


Il n'est pas mentionné dans OpenCV documentation mais en fait OpenCV a:

deux types de descripteurs:

  • descripteurs de flotteurs:
    • SIFT
    • SURF
  • descripteurs uchar:
    • ORBE
    • BRIEF

Et correspondant de rapprochement:

  • pour les descripteurs de flotteurs:
    • FlannBased
    • BruteForce<L2<float> >
    • BruteForce<SL2<float> > //depuis 2.3.1
    • BruteForce<L1<float> >
  • pour les descripteurs uchar:
    • BruteForce<Hamming>
    • BruteForce<HammingLUT>
    • FlannBased avec index LSH / / depuis 2.4.0

vous devez donc modifier votre code pour utiliser par exemple BruteForce<Hamming> matcher pour les descripteurs ORB. Il est possible d'utiliser la distance L2 ou L1 pour apparier les descripteurs uchar mais les résultats seront incorrects et findHomography renvoie des résultats insatisfaisants.

48
répondu Andrey Kamaev 2012-06-21 17:04:59