TP3: Morphage de visage

Présentation du travail

Le travail est divisé en 2 parties. La partie A consiste à créer un algorithme de morphage permettant de morpher notre visage vers celui d'un autre étudiant du cours ou de morpher des obets vers un autre objet. La partie B consiste réutiliser le code écrit dans la partie A afin de calculer le visage moyen d'un enemble de visages. De plus, ont va utiliser la forme d'un visage moyen afin de modifer un visage.

Partie A

Dans cette section, on présente les résultats de l'algorithme de morphage. Afin d'arriver à ce résultats, plusieurs étapes sont nécessaires. Tout d'abord, l'utilisateur doit définir les points de correspondances entre 2 images de même taille. Suite à cela, on va calculer la moyenne de ces points et effectuer une triangulation en ajoutant les quatres coins de l'image pour déformer aussi le background de l'image. Ensuite, on va calculer la forme moyenne à partir des points de l'image de destination et des points de l'image source et du facteur warp_frac. Pour continuer, on va calculer transformation affine des triangles de l'image de destination vers la triangulation moyenne et la transformation affine des triangles de de l'image de destination vers la triangulation moyenne. On va appliquer la transformation inverse, autant vers l'image de destination que vers l'image d'origine, à partir de la triangulation moyenne pour aller récupérer les couleurs dans les images de destinations et de sources pour chaque pixels de l'image moyenne. Pour finir, on va calculer la couleur moyenne à l'aide du facteur dissolve_frac. En résumé, on calcule la forme moyenne et on déforme l'image d'origine et de destination vers cette en fonction du facteur warp_frac et ensuite on calcule les couleurs moyennes à l'aide du facteur dissolve_frac en appliquant les transformations inverses. Les résultats sont présentés ci-dessous. Notez qu'il est possible de cliquer sur l'image afin de l'ouvrir dans une autre fenêtre pour bien l'observer.

Résultats

Image source Image destination Morphage
random image random image random image
random image random image random image
random image random image random image
random image random image random image
random image random image random image
random image random image random image

Discussion

La première séquence montre le morphage de mon visage vers celui de thomas. On voit que le résultat est bien réussi. De plus, les 3 séquences suivantes montrent le morphage pour 3 images trouvées sur le web. Pour la séquence de Bush vers Obama, le morphage du bas du corp ne se fais pas très bien, car il n'y a pas de points de correspondances au niveau des épaules et du cou, ce qu'il faudrait ajouter. Pour la séquence du chaton vers le chat adulte, des points de correspondances ont été ajouté au niveau de la queue, ce qui fais en sorte que le résultat est bien. Pour la séquence de Justin Trudeau vers PKP, le morphage se déroule sans problèmes. Pour finir, les 2 dernières séquences montrent le morphage pour effectué avec des images personnelles. Pour la séquence de moi vers Damien, on remarque encore une fois que le manque de points de correspondances au niveaud es épaules fait en sorte que le morphage du bas du corps n'est pas bien réussi comparativement au morphage du visage.

Crédits suplémentaires (10%)

Dans cette section on présente les résultats des crédits supplémentaires. Le crédit consiste à morpher une image filtré passe-bas avec une image filtré passe-haut. Les résultats sont présentés ci-dessous. Notez qu'il est possible de cliquer sur l'image afin de l'ouvrir dans une autre fenêtre pour bien l'observer.

Image source Image source filtré passe bas Image destination Image destination filtré passe haut Image morphé hybride (25%) Image morphé hybride (50%) Image morphé hybride (75%)
random image random image random image random image random image random image random image

Discussion

On remarque que la plus grande différence entre une image hybride normale et une image hybride morphée est que les deux images, à haute et basse fréquences, ont une forme semblable. Donc, lorsque l'on est de près et que l'on observe l'image de Marylin Monroe, celle-ci à aussi la forme du visage de Albert Einstein. De plus, lorsque l'on est de loin et que l'on observe l'image d'ALbert EInstein, celui-ci est possède la forme de Marylin Monroe et est légèrement féminisé. Pour ces résultats, le facteur warp_frac était de 0.5 et on montre les résultats pour différent dissolve_frac (0.25, 0.5 et 0.75). Le meilleur résultat est, selon moi, lorsque dissolve_frac à une valeur de 0.5

Partie B (Calcul du visage moyen)

Dans cette section, on présente les résultat du calcul de la forme moyenne d'un visage sur plusieurs images de visage. Il faut utiliser un détecteur de visages afin d'obtenir les mêmes points de correspondances pour toutes les images. Pour trouver le visage moyen, on va tout d'abord calculer la moyenne de tous les points de correspondances des images. Par la suite, on va déformer tous les visages vers la former moyenne, mais en gardant les couleurs de l'image d'origine. Pour finir, on va calculer la moyenne de toutes ces images. Pour finir, il faut gérer les NAN en remplaçant ces valeurs par des zéros lorsqu'il y en a. Les résultats sont présentés ci-dessous. Notez qu'il est possible de cliquer sur l'image afin de l'ouvrir dans une autre fenêtre pour bien l'observer.

Résultats

Description Triangulation moyenne Image moyenne
Visage moyen de la classe obtenu
à l'aide des points de nos camarades
random image random image
Visage moyen de la classe obtenu
à l'aide des points du détecteur dlib
random image random image
Visage moyen de la base de donnée d'Utrecht
obtenu à l'aide des points du détecteur dlib
random image random image

Discussion

On observe que le résultat est assez réussi. En effet, il n'y a pas une grande différence entre le visage moyen calculé à l'aide des points de nos camarades et celui calculé à l'aide des points de dlib. De plus, on remarque que pour la base de données d'Utrecht, le visage moyen est très semblable à celui montré dans l'énoncé du TP. On remarque que ce visage moyen est beaucoup plus masculin, dû au nombre plus élevé d'homme dans la base de donnée d'Utrecht. On remarque aussi une ligne noire au niveau de la bouche pour le visage moyen d'utrecht. Cela est dû au fait que les NaN n'étaient pas géré lorsque cette image à été généré. Pour les prochaines images présentés, les NaN ont été gérés.

Crédits supplémentaires (5%)

Cette section présente le crédit supplémentaire de calculer les visages moyen de la base de donnée d'Utrecht sur les images avec et sans sourires. Les résultats sont présentés ci-dessous.Notez qu'il est possible de cliquer sur l'image afin de l'ouvrir dans une autre fenêtre pour bien l'observer.

Description Triangulation moyenne Image moyenne
Visage moyen de la base de donnée d'Utrecht
sans sourire
random image random image
Visage moyen de la base de donnée d'Utrecht
avec sourire
random image random image

Discussion

On observe que le visage moyen trouvé avec toutes le images de la base de donnée d'Utrecht possède un léger sourire. Par contre, le visage moyen trouvé avec toutes les images sans sourire possède une expression faciale beaucoup plus sérieuse. Aussi, le visage moyen trouvé avec toutes les images de personnes ayant un sourire possède une expression faciale beaucoup plus souriante.

Partie B (Masculinisation et féminisation de votre visage)

Dans cette section, on présente les résultats de la déformation de notre visage vers le visage moyen masculin (masculinisation) et le visage moyen fémini (féminisation). Pour ce faire, on va calculer le visage moyen masculin et féminin et déformer notre visage vers ceux-ci en ajustant le facteur dissolve_frac pour obtenir une image intéressante. Les résultats sont présentés ci-dessous.Notez qu'il est possible de cliquer sur l'image afin de l'ouvrir dans une autre fenêtre pour bien l'observer.

Résultats

Description Image origine Visage moyen Visage morphé (100%) Visage morphé (50%) Visage morphé (25%) Visage morphé meilleur résultat
MASCULINISATION random image random image random image random image random image random image
FÉMINISATION random image random image random image random image random image random image

Discussion

Les résultats de la masculinisation sont assez bien réussis. En effet, en jouant avec le facteur de dissolution, on peut obtenir une version masculinisé de mon visage. Le meilleur résultat est lorsque l'on le facteur de dissolution est de 0.33, donc que 33% des couleurs de l'image originale (mon visage) se retrouve dans l'image morphée. Les résultats de la féminisation sont aussi réussis. Le meilleur résultat est lorsque le facteur de dissolution est de 0.41, donc que 40% des couleurs de l'image de mon visage se retrouvent dans l'iamge morphée.

Conclusion

En conclusion, les objectifs de ce laboratoire ont été atteints, mais malgré l'optimisation de l'algortihme de morphage permettant d'itérer sur les triangles et non sur chacun des pixels, la génération du visage moyen à l'aide de la base de donnée d'utrech a été long. En effet, cela a pris environ 45 minutes à générer. Je crois que l'utilisation de la fonction tsearchn ralenti l'exécution du programme. Cette fonction, qui permet de trouver les triangles associé à un tableau de pixel, pourrait être remplacé par une fonction comme polymask qui permet de retourner un masque qui contient les pixels dans le triangle donnée. Cela permettrait d'accélérer l'algorithme.