web-dev-qa-db-fra.com

Différence entre la détection d'entités et l'extraction de descripteurs

Quelqu'un connaît-il la différence entre FeatureDetection et DescriptorExtraction dans OpenCV 2.3? Je comprends que ce dernier est requis pour l'appariement à l'aide de DescriptorMatcher. Si tel est le cas, à quoi sert FeatureDetection?

Je vous remercie.

48
Chris A

Détection des fonctionnalités

  • Dans la vision par ordinateur et le traitement d'images, le concept de détection de caractéristiques fait référence à des méthodes qui visent à calculer des abstractions d'informations sur les images et à prendre des décisions locales à chaque point d'image, qu'il existe ou non une caractéristique d'image d'un type donné à ce moment-là. Les caractéristiques résultantes seront des sous-ensembles du domaine de l'image, souvent sous la forme de points isolés, de courbes continues ou de régions connectées.

    Détection de fonctionnalité = comment trouver des points (fonctionnalités) intéressants dans l'image (Ex: trouver un coin, trouver un modèle et ainsi de suite ...)

Extraction de fonctionnalités

  • En reconnaissance de formes et en traitement d'images, l'extraction de caractéristiques est une forme spéciale de réduction de dimensionnalité. Lorsque les données d'entrée d'un algorithme sont trop volumineuses pour être traitées et qu'elles sont soupçonnées d'être notoirement redondantes (beaucoup de données, mais pas beaucoup d'informations), les données d'entrée seront transformées en un ensemble de fonctionnalités à représentation réduite (également appelé vecteur d'entités) . La transformation des données d'entrée en un ensemble d'entités est appelée extraction d'entités. Si les caractéristiques extraites sont soigneusement choisies, on s'attend à ce que le jeu de caractéristiques extrait les informations pertinentes des données d'entrée afin d'effectuer la tâche souhaitée en utilisant cette représentation réduite au lieu de l'entrée pleine grandeur.

    Extraction d'entités = comment représenter les points intéressants que nous avons trouvés pour les comparer avec d'autres points (entités) intéressants dans l'image. (Ex, l'intensité de la zone locale de ce point? L'orientation locale de la zone autour du point? Et ainsi de suite ...)

Exemple pratique: vous pouvez trouver un coin avec la méthode du coin harris, mais vous pouvez le décrire avec n'importe quelle méthode que vous voulez (Histogrammes, HOG, Orientation locale dans la 8ème contiguïté par exemple)

Vous pouvez voir ici plus d'informations, lien Wikipedia

Julien, (aidé avec wikipedia: p)

93
jmartel

Tous les deux, Feature Detection et Feature descriptor extraction font partie du Feature based image registration. Il est logique de les regarder dans le contexte de l'ensemble du processus d'enregistrement d'images basé sur les fonctionnalités pour comprendre quel est leur travail.

Algorithme d'enregistrement basé sur les fonctionnalités

L'image suivante de la documentation PCL montre un tel pipeline d'enregistrement:

PCL pairwise registration

  1. Acquisition de données: Une image d'entrée et une image de référence sont introduites dans l'algorithme. Les images doivent montrer la même scène à partir de points de vue légèrement différents.

  2. Estimation de point-clé (détection de caractéristique): Un point-clé ( point d'intérêt ) est un point dans le nuage de points qui présente les caractéristiques suivantes :

    1. il a une définition claire, de préférence mathématiquement fondée,
    2. il a une position bien définie dans l'espace image,
    3. la structure de l'image locale autour du point d'intérêt est riche en contenu d'informations locales.
      OpenCV est fourni avec plusieurs implémentations pour Feature detection, tel que:

    De tels points saillants dans une image sont si utiles parce que la somme d'entre eux caractérise l'image et aide à en distinguer les différentes parties.

  3. Descripteurs de fonctionnalités (extracteur de descripteurs): Après avoir détecté les points clés, nous continuons à calculer un descripteur pour chacun d'eux. "Un descripteur local une représentation compacte du voisinage local d'un point. Contrairement aux descripteurs globaux décrivant un objet complet ou un nuage de points, les descripteurs locaux essaient de ressembler à la forme et à l'apparence uniquement dans un voisinage local autour d'un point et sont donc très appropriés pour le représenter en termes de correspondance. " (Dirk Holz et al.) . Options OpenCV :

  4. Estimation des correspondances (correspondance des descripteurs): La tâche suivante consiste à trouver les correspondances entre les points clés trouvés dans les deux images. Par conséquent, les entités extraites sont placées dans une structure qui peut être recherché efficacement (comme un kd-tree ). Habituellement, il suffit de rechercher tous les descripteurs de fonctionnalités locaux et de faire correspondre chacun d'eux à son homologue correspondant de l'autre image. Cependant, étant donné que deux images d'une scène similaire n'ont pas nécessairement le même nombre de descripteurs de fonctionnalités, car un nuage peut avoir plus de données que l'autre, nous devons exécuter un processus de rejet de correspondance séparé. Options OpenCV :

  5. Rejet de correspondance: L'une des approches les plus courantes pour effectuer un rejet de correspondance consiste à utiliser RANSAC (échantillon aléatoire de consensus).

  6. Estimation de la transformation: Après avoir calculé des correspondances solides entre les deux images, un Absolute Orientation Algorithm est utilisé pour calculer une matrice de transformation qui est appliquée sur l'image d'entrée pour correspondre à l'image de référence. Il existe de nombreuses approches algorithmiques différentes pour ce faire, une approche courante est: décomposition en valeurs singulières (SVD).

22
Kevin Katzke