Comment créer de superbes panoramas avec Python et OpenCV
La photographie panoramique est la technique qui permet de capturer un champ de vision plus large qu’une seule photographie ne peut atteindre. Cette technique permet d’assembler plusieurs images pour créer une seule image qui capture l’ensemble de la scène de manière immersive.
Avec l’aide de Python, vous pouvez automatiser ce processus et créer de magnifiques panoramas en toute simplicité.
Configuration de votre environnement Python
Pour continuer, vous devez avoir une connaissance de base de Python. Lancez n’importe quel IDE Python et créez un nouvel environnement virtuel. Créez un nouveau fichier Python. Dans le terminal, exécutez la commande suivante pour installer OpenCV.
Vous utiliserez le fichier opencv-contrib-python pour charger des images et les manipuler. Elle dispose de la bibliothèque cv2.Stitcher que vous utiliserez pour créer les panoramas.
Le code source complet et les exemples d’images utilisés dans cet article sont disponibles dans ce dépôt GitHub.
Importation des bibliothèques requises
Importez les bibliothèques cv2 et os dans votre script. Vous utiliserez OS pour naviguer dans les chemins du système.
Le module OS est un module intégré à Python. C’est la raison pour laquelle vous n’avez pas besoin de l’installer en externe.
Chargement des images
Créez une fonction pour charger les images que vous voulez piquer. Tout d’abord, créez une liste vide qui stockera les images initiales. Ensuite, parcourez en boucle chaque fichier dans le chemin du dossier en vérifiant s’il s’agit d’une image. S’il s’agit d’une image, chargez-la et ajoutez-la à la liste des images.
Vous pouvez ajouter d’autres formats de fichiers d’images pour diversifier votre programme. Ce code ne recherchera que les formats suivants jpg et. png formats de fichiers.
Redimensionnement des images pour une couture uniforme et un traitement plus rapide
Créez une fonction qui redimensionnera la liste des images. Cette fonction parcourt en boucle chaque image de la liste et la redimensionne. Enfin, ajoutez les images redimensionnées à une nouvelle liste.
Le redimensionnement permet de s’assurer que l’assemblage des images est uniforme. Il réduit également la taille du fichier pour un traitement plus rapide.
Utilisation du module Stitcher d’OpenCV pour l’assemblage des images
Créez une fonction pour assembler les images redimensionnées. Cette technique est communément appelée création d’un panorama. La fonction prendra une liste d’images en entrée. Utilisez la fonction Assembleur pour les assembler. Enfin, la fonction renvoie une image assemblée et un code d’état.
Si l’assemblage a réussi (comme indiqué par le code d’état cv2.STITCHER_OK ), la fonction renvoie l’image assemblée. Dans le cas contraire, elle renvoie Aucun.
Recadrage de l’image assemblée
Créez une fonction qui prendra en charge l’image assemblée et la renverra après l’avoir recadrée. Commencez par convertir l’image assemblée en niveaux de gris. Ensuite, appliquez un seuil binaire pour créer une image binaire. Enfin, trouvez le plus grand contour dans l’image binaire et calculez son rectangle de délimitation.
L’image assemblée est recadrée à l’aide du rectangle de délimitation.
Prévisualisation et enregistrement de l’image assemblée à l’aide d’OpenCV
Créez une fonction qui affichera l’image assemblée dans une fenêtre interactive et l’enregistrera sur le disque.
L’image panoramique est enregistrée dans le même dossier que celui qui contient les images originales.
Contrôler le déroulement de votre programme
Créez une fonction qui contrôlera le déroulement de votre programme. Elle chargera toutes les images du dossier spécifié. Redimensionnez-les et assemblez-les. Recadrer l’image assemblée, afficher son aperçu, puis l’enregistrer sur le disque. S’il y a moins de deux images dans le dossier, la fonction imprimera un message d’erreur et reviendra sans effectuer d’assemblage ni d’enregistrement.
Passez le chemin d’accès au dossier contenant les images que vous souhaitez assembler.
Les images que vous utilisez doivent contenir des éléments qui se chevauchent. Ces caractéristiques peuvent être des points de repère importants ou des motifs de texture dans l’image. OpenCV les utilise comme point de référence pour aligner les images.
Sans ces caractéristiques, il sera difficile pour OpenCV d’aligner les images et de créer un panorama homogène.
Test de votre programme
Rassemblez les images que vous souhaitez transformer en une image panoramique. Assurez-vous qu’elles ont des caractéristiques qui se chevauchent.
Observez la colline sur cette première image.
Dans cette deuxième image, la colline est légèrement visible. Cela crée un élément de chevauchement.
Enregistrez les images dans un dossier. Transmettez le chemin d’accès au dossier à la fonction dossier_piquage pour l’assemblage. Exécutez ensuite le programme.
Le programme a assemblé les images et créé une image panoramique avec une vue plus large de la scène. Notez que pour créer l’image panoramique ci-dessus, neuf images présentes dans le dépôt GitHub susmentionné ont été utilisées.
Manipulation d’images à l’aide d’OpenCV
La création de panoramas illustre quelques-unes des nombreuses techniques de manipulation d’images offertes par OpenCV. Il existe d’autres techniques que vous pouvez utiliser pour manipuler des images en fonction de vos besoins. Travailler sur davantage de projets impliquant la manipulation d’images vous aidera à améliorer vos compétences en vision par ordinateur en général.
S’abonner à notre lettre d’information
Comment créer une image panoramique avec OpenCV Python ?
Assemblage de panoramas avec OpenCV
- Etape #1 : Détecter les points clés (DoG, Harris, etc.)
- Étape 2 : Faire correspondre les descripteurs entre les deux images.
- Étape 3 : Utiliser l’algorithme RANSAC pour estimer une matrice d’homographie en utilisant nos vecteurs de caractéristiques appariés.
- Étape 4 : Appliquer une transformation de déformation en utilisant la matrice d’homographie obtenue à l’étape 3.
Comment assembler deux images en Python ?
Fusionner deux images
- Créez un objet image pour les images requises à l’aide de la fonction open().
- Lors de la fusion de deux images, vous devez vous assurer que les deux images ont la même taille.
- Créez une image vide à l’aide de la fonction Image.
- Collez les images à l’aide de la fonction paste().
Comment fonctionne l’assemblage d’images OpenCV ?
Notre algorithme d’assemblage d’images nécessite quatre étapes : (1) détection des points clés et extraction des descripteurs invariants locaux ; (2) mise en correspondance des descripteurs entre les images ; (3) application du RANSAC pour estimer la matrice d’homographie ; et (4) application d’une transformation de déformation à l’aide de la matrice d’homographie.
Comment fonctionne l’assemblage de panoramas ?
L’objectif peut être déplacé complètement d’un côté à l’autre, puis facilement assemblé. Comme l’objectif se déplace autour de son centre optique, il n’y a pas d’erreur de parallaxe (tant que l’appareil photo reste immobile pour les deux expositions), et il n’est pas nécessaire de corriger la distorsion de l’objectif ou le vignettage d’une image à l’autre.