62 votes

Classification des détecteurs, des extracteurs et des apparieurs

Je suis nouveau sur opencv et essaie de mettre en place l'image de correspondance entre les deux images. Pour cela, j'essaie de comprendre la différence entre la fonction de descripteurs, le descripteur extracteurs et le descripteur de rapprochement. Je suis tombé sur un grand nombre de termes et essayé de lire à leur sujet sur le opencv site web sur la documentation mais je n'arrive pas à les envelopper ma tête autour de ces concepts. J'ai compris la différence de base ici. La différence entre la Détection de Fonctionnalité et de Descripteur de l'Extraction

Mais je suis tombé sur les conditions suivantes, alors que des études sur le sujet :

RAPIDE, GFTT, SIFT, SURF, MSER, D'ÉTOILE, DE L'ORB, RAPIDE, FREAK, BREF

Je comprends comment RAPIDE, SIFT, SURF de travail mais n'arrive pas à comprendre ceux qui ne sont que des détecteurs et qui sont des extracteurs.

Puis il y a le rapprochement.

FlannBased, BruteForce, knnMatch et probablement quelques autres.

Après un peu de lecture, j'ai pensé que certains de rapprochement ne peut être utilisée qu'avec certains extracteurs, comme expliqué ici. Comment OpenCV ORBE Fonction Détecteur de Travailler? La classification proposée est tout à fait clair, mais c'est seulement pour quelques extracteurs et je ne comprends pas la différence entre le flotteur et le char.

Donc en gros, quelqu'un peut-il svp

  1. classer les types de détecteurs, d'extracteurs et de rapprochement basé sur le flotteur et le char, comme mentionné, ou un autre type de classification?
  2. expliquer la différence entre le flotteur et le char de classification ou selon la classification est-elle utilisée?
  3. mentionner comment initialiser (le code) les différents types de détecteurs, les extracteurs et les allumettes?

Je sais que c'est demander beaucoup, mais je serai très reconnaissant. Je vous remercie.

86voto

Rui Marques Points 3152

Je comprends comment RAPIDE, SIFT, SURF de travail mais n'arrive pas à comprendre ceux qui ne sont que des détecteurs et qui sont des extracteurs.

En gros, à partir de cette liste de fonctionnalité des détecteurs/extracteurs (lien vers les articles: RAPIDE, GFTT, SIFT, SURF, MSER, STAR, ORBE, RAPIDE, FREAK, BREF), certains d'entre eux sont uniquement fonction des détecteurs (RAPIDE, GFTT), d'autres sont tout à la fois des détecteurs et descripteurs des extracteurs (SIFT, SURF, ORBE, FREAK).

Si je me souviens bien, BREF n'est qu'un descripteur extracteur, donc il a besoin de caractéristiques détectées par un autre algorithme de type RAPIDE ou ORBE.

Pour être sûr de qui est qui, vous devez vous naviguez dans l'article lié à l'algorithme ou parcourir opencv documentation pour voir ce qui a été mis en œuvre pour l' FeatureDetector de la classe ou de qui était, pour l' DescriptorExtractor classe.

Q1: classer les types de détecteurs, d'extracteurs et de rapprochement basé sur le flotteur et le char, comme mentionné, ou un autre type de classification?

Q2: expliquer la différence entre le flotteur et le char de classification ou selon la classification est-elle utilisée?

Concernant les questions 1 et 2, de les classer en tant que float et uchar, le lien que vous avez déjà posté est la meilleure référence que je sais, peut-être que quelqu'un sera en mesure de le compléter.

Q3: mentionner comment initialiser (le code) les différents types de détecteurs, les extracteurs et les allumettes?

Répondant à la question 3, OpenCV fait le code pour utiliser les différents types tout à fait la même principalement, vous devez choisir une fonction de détecteur. La plupart de la différence est dans le choix du type de matcher et vous l'avez déjà mentionné le 3 ceux qui OpenCV est. Votre meilleur pari ici est de lire la documentation, des exemples de code, et liées à un Débordement de Pile questions. Aussi, certains posts sont une excellente source d'information, comme ceux de la série de la fonction de détecteur de points de référence par Ievgen Khvedchenia.

Les allumettes sont utilisés pour déterminer si un descripteur de fichier est similaire à un autre descripteur à partir d'une liste. Vous pouvez comparer votre requête descripteur avec tous les autres descripteurs de la liste (BruteForce) ou d'utiliser une meilleure heuristique (FlannBased, knnMatch). Le problème est que les critères ne permettent pas de travail pour tous les types de descripteurs. Par exemple, FlannBased de mise en œuvre utilisés pour fonctionner uniquement avec float descripteurs, mais pas avec uchars '(Mais depuis la version 2.4.0, FlannBased avec LSH indice peut être appliquée à uchar descripteurs).

En citant cette Application-Solut blog à propos de l' DescriptorMatcher types de:

Le DescriptorMatcher vient dans les variétés "FlannBased", "BruteForceMatcher", "BruteForce-L1" et "BruteForce-HammingLUT". L' "FlannBased" matcher utilise le flann (fast bibliothèque approximative voisins les plus proches) bibliothèque sous le capot d'effectuer plus rapidement, mais la correspondance approximative. Le "BruteForce-*" versions de manière exhaustive searche le dictionnaire pour trouver la correspondance la plus proche pour un élément de l'image à la une mot dans le dictionnaire.

Certains des plus populaires, les combinaisons sont les suivantes:

Fonction des Détecteurs de Decriptor Extracteurs / types de Rapprochement

  • (RAPIDE, SURF) / SURF / FlannBased

  • (RAPIDE, EIPD) / SIFT / FlannBased

  • (RAPIDE, ORB) / ORBE / Bruteforce

  • (RAPIDE, ORB) / BRÈVES / Bruteforce

  • (RAPIDE, SURF) / MONSTRE / Bruteforce

Vous pourriez aussi remarqué il y a quelques cartes (Dynamique, Pyramide, Grille) à la fonction des détecteurs. L'App-Solut blog résume vraiment bien de leur utilisation:

(...) et il y a aussi un couple de cartes que l'on peut utiliser pour changer le comportement de la touche de point de détecteurs. Par exemple, l' Dynamic adaptateur qui permet de régler un détecteur de type spécifique seuil de détection jusqu'à ce que suffisamment de points clés sont trouvés dans une image ou l' Pyramidcarte qui construit une pyramide Gaussienne de détecter les points sur plusieurs les échelles. L' Pyramid adaptateur est utile pour la fonction des descripteurs ne sont pas invariant d'échelle.

Pour en savoir plus:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X