TP4 : Assemblage de photos

TP4 : Assemblage de photos

Claudia laramée


Description de l'algorithme implémenté

L’homographie à calculer est de la forme : p’ = Hp. Pour la création d'un panorama, on pose p' = points de l'image du centre et p = points de l'image que l'on veut déformer (image 2). Pour chaque image excluant celle du centre, il faut calculer l'homographie, déformer l'image et l'aligner avec le reste de la mosaïque




En effectuant la multiplication matricielle de H et p, nous obtenons :

wx’ = ax + by + c
wy’ = dx + ey + f
w = gx + hy + i

Tel que suggéré dans l’énoncé, posons i = 1 et remplaçons w dans les deux première équations par gx + hy + 1. Nous obtenons donc :

(gx + hy + 1)x’ = ax + by + c = gxx’ + hyx’ + x’ = ax + by + c
(gx + hy + 1)y’ = dx + ey + f = gxy’ + hyy’ + y’ = dx + ey + f

Nous pouvons ensuite isoler x’ et y’ :

x’ = ax + by + c – (gxx’ + hyx’)
y’ = dx + ey + f – (gxy’ + hyy’)

Il ensuite possible d’exprimer a,b,c,d,e,f selon une combinaison de x, y, x', y’ qui sont connus :

[X y 1 0 0 0 -xx’ -yx’ ; 0 0 0 x y 1 -xy’ -yy’] * [a ; b ; c ; d ; e ; f ; g ; h] = [x’ ; y’]

Puisque nous avons 4 points dans chaque image, nous obtenons un système d’équations surdéterminé. Nous pouvons donc utiliser cet aspect à notre avantage en tentant de trouver la meilleure homographie possible.
Pour ce faire, je me suis basée sur les notes de cours d’un professeur de l’université de Montréal (Méthode des moindres carrés pour les systèmes surdéterminés) :

- Le système surdéterminé A x = b peut ne pas avoir de solution
- Pour trouver x0 qui minimise r = A x - b ( r = résidu ) il suffit de résoudre AT*A x0 = AT*b
- Si AT*A inversible, on obtient une solution unique

Une fois l'homographie trouvée, il suffit de calculer la position des quatre coins de l'image 2 dans l'image du centre avec l'homographie directe. Par la suite, nous pouvons utiliser la fonction interp2 dans Matlab pour trouver la valeur de tous les points situés entre les quatre coins à l'aide de l'homographie inverse.

Une fois l'image 2 déformée, on peut la superposer avec la mosaïque déjà formée jusqu'à maintenant et appliquer un masque de même dimension que la mosaïque dont chaque élément à la position (i,j) contient la valeur 0.5 si le pixel à la position (i,j) de l'image déformée et de la mosaïque sont non nuls et 1 sinon.

Pour la création du panorama, il est plus simple de commencer par fusionner l'image du centre (non déformée) avec les images déformées des extrémités, puisque la position des quatre coins de chaque image nous indique les dimensions du panorama et il suffit de fusionner les images restantes sans se soucier de devoir agrandir la mosaïque à chaque itération.



Résultats

Panorama 1





Panorama 2







Panorama 3





Explication des résultats obtenus

Avec seulement quatre points dans chaque image, il est difficile d'obtenir une homographie et un alignement parfait. Aussi, surtout dans le panorama 2, le mouvement des personnes ou des objets pendant la prise de photo peut ajouter du flou lors de la création de la mosaïque et donne un moins bon résultat. On peut aussi voir les limites de l'algorithme en choisissant comme image centrale (image qui ne sera pas déformée et qui servira de p' lors du calcul de l'homographie) une image qui n'est pas le centre de la mosaïque. On peut remarquer, dans la deuxième mosaïque du panorama 3, que la qualité à gauche de l'image est très faible puisqu'il y a une très grande déformation de l'image à cet endroit et que l'interpolation n'a pas donné de résultats optimaux.