Comment trouver des régions qui se chevauchent entre les images dans l’opencv?

J’essaie d’implémenter la fusion alpha avec deux images pour l’assemblage d’images. Ma première image est la suivante -> entrez la description de l'image ici

voici ma deuxième image -> entrez la description de l'image ici

voici mon image de résultat -> entrez la description de l'image ici

Comme vous pouvez le constater, le résultat n’est pas correct.Je pense que je dois d’abord trouver la région qui se chevauche puis appliquer le fondu alpha sur la partie qui se chevauche.

Tout d’abord, avez-vous vu un nouveau module de «couture» introduit dans OpenCV 2.3?

Il fournit un ensemble de blocs de construction pour le pipeline de couture, y compris les étapes de fusion et de “recherche d’un chevauchement” (par exemple, l’enregistrement). Voici une documentation: http://docs.opencv.org/modules/stitching/doc/stitching.html et un exemple d’application d’ assemblage : stitching_detailed.cpp

Je vous recommande d’étudier le code de cet exemple pour une meilleure compréhension des détails.

En ce qui concerne la découverte de chevauchement, il existe plusieurs approches communes en vision par ordinateur:

  • stream optique
  • correspondance de modèle
  • correspondance des fonctionnalités

Pour votre cas, je vous recommande le dernier – cela fonctionne très bien sur les photos. Et cette approche est déjà implémentée dans OpenCV – explorez le source OpenCv et voyez comment cv::detail::BestOf2NearestMatcher fonctionne.

Je pense que l’approche la plus courante est l’évaluation SIFT. Trouvez quelques points clés dans les deux images, puis modifiez-les pour obtenir votre résultat. Voir ce

Voici des explications sur SIFT et l’assemblage de panorama.