web-dev-qa-db-fra.com

échelle et rotation Correspondance du modèle

J'utilise la méthode du modèle de correspondance avec CV_TM_CCORR_NORMED pour comparer deux images ... je veux faire pour rendre cette rotation et cette échelle invariantes .. des idées?

J'ai essayé d'utiliser la même méthode sur la transformée de Fourier de l'image et du modèle, mais le résultat après rotation est toujours différent

21
Storm2012

La correspondance de modèle avec matchTemplate n'est pas bonne lorsque votre objet est tourné ou mis à l'échelle dans la scène.

Vous devriez essayer la fonction openCV de Features2D Cadre. Par exemple SIFT ou SURF descripteurs et FLANN matcher. De plus, vous aurez besoin de la méthode findHomography.

Ici est un bon exemple de recherche d'un objet pivoté dans la scène.

Mise à jour:

En bref, l'algorithme est le suivant:

  1. Trouver les points clés de l'image de votre objet 1.1. Extraire des descripteurs de ces points clés

  2. Recherche de points clés de l'image de votre scène 2.1 Extraction de descripteurs à partir de points clés

  3. Descripteurs de correspondance par match

  4. Analysez vos correspondances

Il existe différentes classes de FeatureDetectors, DescriptorExtractors et DescriptorMatches, vous pouvez les lire et choisir celles qui conviennent à vos tâches.

36
Larry Cinnabar

Invariant de rotation

Pour chacun des points clés:

  1. Prenez une zone autour du point clé.
  2. Calculez l'angle d'orientation de cette zone avec un gradient ou une autre méthode.
  3. Faites pivoter le motif et la zone de demande sur cet angle à 0.
  4. Calculez les descripteurs de ces zones pivotées et faites-les correspondre.

Invariant d'échelle

Voir la méthode RAPIDE

6
George

Il existe des moyens plus faciles de faire correspondre une échelle de modèle et une invariance en rotation que de passer par la détection de fonctionnalités et les homographies (si vous savez que ses rotations et échelles sont vraiment uniquement, mais tout le reste est constant). Pour une véritable détection d'objets, les approches basées sur les points clés suggérées ci-dessus fonctionnent mieux.

Si vous savez qu'il s'agit du même modèle et qu'aucun changement de perspective n'est impliqué, vous prenez une pyramide d'images pour la détection de l'échelle de l'espace et faites correspondre vos modèles aux différents niveaux de cette pyramide (via quelque chose de simple, par exemple SSD ou NCC). Il sera bon marché de trouver des correspondances approximatives à des niveaux plus élevés (= résolution inférieure) de la pyramide. En fait, il sera si bon marché que vous pourrez également faire pivoter votre modèle à peu près aux niveaux de faible résolution et lorsque vous remonterez le modèle jusqu'aux niveaux de résolution plus élevés, vous utiliserez un échelon de rotation plus finement granulé. C'est une technique de correspondance de modèles assez standard et fonctionne bien dans la pratique.

5
Tom