TP4: Panoramas

L'objectif de ce travail est d'implémenter un algorithme vous permettant de créer une mosaïque d'images. Une mosaïque combine plusieurs images ayant des champs de vue se chevauchant afin de produire un panorama ou une image à haute résolution. La plupart des approches d'assemblage d'images nécessitent un chevauchement très exact et des expositions identiques entre les images pour produire des résultats sans joint apparent.

Partie 0: Réchauffement

À la différence du TP3 nous allons maintenant appliquer des transformations projectives (aussi appelées transformation de perspective) au lieu de transformations affines. On ajoute un 4e point, ce qui rend le système d'équations légèrement plus complexe. La transformation d'un point avec la matrice H s'effectue encore de la même façon qu'avec une matrice H de transformation affine. Par contre les éléments h et i pourront prendre des valeurs autres que 0.

H = [[a b c],
     [d e f],
     [h i 1]]
        
Source https://www.graphicsmill.com/docs/gm/TransformationsDifference.png

Exemple

Il faut par contre calculer les nouvelles positions des 4 coins de l'image, car ceux-ci peuvent avoir des coordonnées négatives. Voici un exemple:

H = [[-0.0814, 0.7402, 34.3412],
     [ 1.0209, 0.1534, 60.3258],
     [ 0.0005, 0.0000,  1.0000]]
        

Original
Transformé

Pour m'assurer de la bonne interpolation des pixels, j'utilise une interpolation avec scipy.interpolate.interp2d pour chacune des trois couleurs du RGB.

Partie 1: Appariement manuel

Combiner les photos

La façon la plus simple est de faire le max entre les images avec np.maximum(img1, img2). Le problème avec une moyenne est que les bords des images sont normalement plus sombres à cause des fonctionnent des CCD.

Il faut aussi déterminer une photo que sera la photo centrale et qui ne sera pas déformée. La photo centrale aura comme matrice de transformation H une matrice identité. Une fois toutes les transformations H trouvées, ont trouve la dimension de l'image finale et applique les transformations sur leurs images respectives.

Mes images

À mon étonnement, cette méthode pour les panoramas fonctionne très bien même avec une petite distance focale. La combinaison des images avec le maximum produit un beau résultat, compte tenu de sa simplicité. Pour la scène à l'intérieur, j'ai du reprendre mes clichés une deuxième fois, car je n'avais pas fixé l'iso pour la première prise. C'est un rappel qu'il est important de ne pas changer les propriétés de la caméra pendant la prise de photos d'un panorama.

©Jean-Daniel Pearson