TP3: Morphage de visages

Partie A

Morphage de mon visage

Le morphage entre 2 images se fait en plusieurs étapes. Tout d'abord, il faut déterminer les points correspondants entre les 2 images. Pour cette partie, les points de correspondances sont déterminés manuellement sur chacune des 2 images. Ensuite, une triangulation est effectué sur la moyenne des points des 2 images. Cette triangulation moyenne a pour but de nous assurer de conserver une structure stable dans le morphage. Il faut transformer l'image 1 et l'image 2 en image intermédiaire.

Les coordonnées de chacun des points (x_i,y_i) de l'image intermédiaire suivent l'équation suivante : x_i = (1 - wrap_frac) * x_1 + wrap_frac * x_2 et y_i = (1 - wrap_frac) * y_1 + wrap_frac * y_2. C'est donc wrap_frac qui détermine la forme de l'image.

Connaissant les points correspondants de l'image intermédiaire il est donc possible de déterminer les transformations affines de l'image 1 et l'image 2 vers l'image intermédiaire. Les positions de chacun des pixels de l'image intermédiaire dans l'image 1 et 2 peut donc être déterminé avec les transformations affines inverses. Connaissant ensuite la position correspondante dans l'image 1 et 2, on peut y extraire la couleur.

La couleur d'un pixel de l'image intermédiaire suit l'équation suivante: p_i = (1 - dissolve_frac) * p_1 + dissolve_frac * p_2. C'est dissolve_frac qui détermine le fondu de couleur de l'image.

Une fois chacun des pixels colorés, l'image intermédiaire est complète. Pour créer un vidéo, il suffit de faire varier wrap_frac et dissolve_frac progressivement de 0 vers 1 pour obtenir morphage.

Certains artefacts apparaissent durant la morphage de mon visage, cela peut être expliquer en raison de la présence de très petit triangle à certains endroits. La triangulation moyenne a pour effet de réduire la présence de petits triangles, mais ne les élimine pas tous dans mon cas. Sinon, la changement de forme et de fondu de couleur se fond assez bien.

Morphage de photos du web

La même technique que le morphage de visage est appliqué, les points correspondants sonts encore une fois déterminés manuellement.

Trump dans Back to the Future


Poutine en chien


Un pug dans Star Wars


Il est beaucoup plus facile de faire une morphage entre 2 images similaires que 2 images totalement différentes, car il y a beaucoup moins de variation au niveau de la forme ce qui rend le morphage moins saccadé. La morphage de Trump est donc beaucoup plus réussi que celui de Poutine ou du Pug. Il est aussi difficile de déterminé les points de correspondances précisément entre un homme et un chien vs un homme avec un autre homme.

Sources: Trump, Biff, Poutine, Chien, Pug et Jabba the Hut

Morphage de mes propres photos

Pour les fans de Super Smash Bros


La bière c'est comme de l'eau


Les images morphées ne sont pas parfaitement alignés dans les photos ce qui peut causer une petite translation lors du morphage et ainsi en réduire l'effet (Le morphage de la bouteille surtout). Sinon, encore un fois il y a la présence d'artifacts notamment avec les manettes, ceci peut être expliquer avec la forme très différentes des buttons de droites.

Partie B

La procédure est assez similiaire que la partie A. Par contre, cette fois-ci la triangulation moyenne est effectué sur la totalité des visages. Chaque visage est donc morphé vers la forme du visage moyen et la totalité de la couleur du visage est conservé. Ceci est possible en assignant wrap_frac = 1 et dissolve_frac = 0. Une fois la procédure effectué pour chacun des visages, on fait la moyenne des images obtenues pour générer le visage moyen.

Visage moyen de la classe

Points déterminés manuellement

Forme


Visage


Points trouvés par le détecteur dlib

Forme


Visage


La forme du visage moyen est beaucoup plus représentative avec les points trouvés par le détecteur dlib que les points trouvés manuellement. L'algorithme est notamment plus précis et a sélectionner plus de points que nous l'avons fait manuellement. Cela explique donc pourquoi le visage moyen avec dlib est beaucoup plus détaillé (moins flou) que le visage moyen trouvé avec les points déterminés par chacun des étudiants. Le visage moyen a une tendance plus masculine étant donné le plus grand nombre d'homme dans la classe.

Visage moyen de la base de données d'Utrecht avec les points trouvés par le détecteur dlib

Forme


Visage


La forme du visage moyen ressemble quand même à celle obtenu avec les visages de classe. Les traits de caractères généraux sont assez similaires. Le visage moyen d'Utrecht a été obtenu avec plus d'échantillons que celui de notre classe, ce dernier est donc plus général.

Masculinisation et féminisation de mon visage

Visage masculin


Masculinisation de mon visage


Visage féminin


Féminisation de mon visage


Dans les 2 cas, wrap_frac a été mis à 0.5 pour avoir une forme moyenne entre mon visage et le visage masculin et feminin. dissolve_frac a été mis à 0.75 pour la féminisation pour cacher la barbe tandis que pour la masculination, il a été mis à 0.5.