TP3: Morphage de visages (Rosalie Kletzander)

Partie A

L'algorithme est implanté comme prévu dans l'énoncé: les points de correspondance ont été choisi à la main avec l'aide du programme fourni gatherPoint. Puis la triangulation globale est calculée à partir de l'image interpolée. En utilisant la triangulation et les points de correspondance, les transformations affines des triangles de l'image moyen vers la première et la deuxième image sont calculées et les couleurs des deux images sont fondues.

Afin de conserver l'arrière-plan de l'image, 8 points autour de l'image sont sélectionnés. Pour traiter des erreurs causées par des triangles linéarement dépendents, il y a un méchanisme qui change le point dépendent d'un petit peu pour qu'il ne soit plus dépendent.


Morphage étudiants

Pour une meilleure correspondance, j'ai ajouté quelques points de correspondance en plus, par exemple pour les cheveux et les épaules.


Morphages d'images trouvées sur Internet

Le défi ici était de trouver des images drôles/intéressantes qui vont bien ensemble et après cela, choisir des points de connaissance pertinents.

Bavière (brezel -> coeur en pain d'épices): deux objets traditionnellement bavarois

Le chien vadrouille (chien -> vadrouille): ici un arrière-plan neutre dans les deux images pourrait améliorer l'effet

Le tigre chaton (chaton -> tigre): J'ai prévu les dents du tigre dans les points de correspondance pour l'effet qu'ils poussent pendant le morphage.


Morphages d'images personnelles

Maxl: un des chatons de notre chat (pour les images qui imitent le temps qui passe, je n'ai pas utilisé un "loop", parce que le temps ne recule pas)

Parents: je voulais voir si l'image morphée de mes parents ressemble à moi. Finalement, pas du tout. J'ai mis des points de correspondance sur les lunettes pour un morphage plus convaincant.

Mon chum et moi: en 2012 et 2018. J'ai triché un peu, j'ai changé la position de ma tête dans la photo de 2012 pour que la correspondance soit meilleure.


Point supplémentaires: Morphage des images filtrées

Pour effectuer le morphage entre les images filtrées, j'ai utilisé la fonction du tp2 (minimalement changé) pour générer les images à morpher. Pour le morphage j'ai omis le facteur de fondu (dissolve_frac) car les deux images doivent être additionnées entièrement. Le warp_frac est à 0.5 pour obtenir la forme moyenne.

morphage "normale" (sans hybride)
morphage des images hybrides

Les résultats sont surprenants (ben, en rétrospéctive c'est évident) parce que l'effet de hautes fréquences de proche et basses fréquences de loin disparaît complètement. Les correspondances sont aussi fortes que les hautes fréquences d'une image remplacent celles filtrées de l'autre. Donc on obtient une image vraiment morphée. Les arêtes sont distinctivement plus nettes que dans l'image normale morphée (j'ai mis les deux pour comparer). Cela vient du fait qu'il n'y a pas les arêtes des deux images calculées à 50%, mais juste les arêtes de l'image de hautes fréquences à 100%.

L'effet est super intéressant. J'imagine qu'on pourrait mapper des charactéristiques d'une autre personne sur son visage ou d'autres trucs fous.



Partie B

Pour calculer le visage moyen, j'ai fait un moyennage des points de toutes les images et après j'ai effectué la transformation de l'image (sans fondre les couleurs). Finalement, j'ai pris la moyenne des pixels de tous les images pour créer l'image finale.


Visage moyen des étudiants (points manuels)

En exécutant l'algorithme sur les points fournies j'ai rapidement remarqué qu'il y avait des problèmes avec les points. Il paraît que quelques étudiants aient des points erroneux. Donc j'ai corrigé les fichiers affectés. Le nouveau résultat paraît beaucoup mieux.

A: visage moyen
avec les points des étudiants
B: visage moyen
avec les points corrigés
C: visage moyen
avec les points trouvés par dlib

Ici, on voit bien les effets des points de correspondance différents. Les points dans l'image B sont plus généraux, par exemple le front et les "bordures" de la tête sont compris. Par contre, les détails du visage comme la forme exacte de la bouche et des yeux ne sont pas incluses. Dans l'image C, c'est le contraire: les détails sont bien prises en compte, mais pas les caractéristiques générales. Cela fait que les détails dans C sont plus nets, mais par exemple les bordures de la tête sont beaucoup moins définis. Par contre, dans image B, les détails sont un peu flous et les caractéristiques générales sont plus définies.


Visage moyen des photos de la BD d'Utrecht (+ crédits supplémentaires)

A: visage moyen
de la BD d'Utrecht
B: visage moyen
sans sourire
C: visage moyen
avec sourire

Comparé à l'image moyenne des étudiants, l'image moyen de la BD d'Utrecht a beaucoup plus de visages moyennés. Cela fait que les bordures pas comprises dans les points de correspondance sont encore plus floues. En plus, le visage paraît plutôt masculin, à cause de la majorité d'hommes dans la base (c'est pareil dans l'image des étudiants). Le visage a un sourire léger, à cause des visages en souriant dans la base.

Pour les images avec et sans sourire, on voit bien la différence. Le visage avec le sourire a les yeux un peu plissés et les coins des lèvres sont clairement élévés. Le visage sans sourire a une expression neutre. Quand même, les deux images ressemblent encore beaucoup l'image moyenne de tous les images.


Masculinisation/féminisation du visage

Fa: visage féminin
de la BD d'Utrecht
Fb: visage fémininisé
0.5 distortion, 0.5 fondu
Fc: visage fémininisé
0.7 distortion, 0.3 fondu
Fd: visage fémininisé
0.3 distortion, 0.7 fondu
Ma: visage masculin
de la BD d'Utrecht
Mb: visage masculinisé
0.5 distortion, 0.5 fondu
Mc: visage masculinisé
0.5 distortion, 0.7 fondu
Md: visage masculinisé
0.3 distortion, 0.7 fondu

On voit bien que si la distortion est trop haute, mon visage commence à être déformé (Fc) parce que mon image de base ne regarde pas directement vers la caméra. Donc j'ai baissé le niveau de distortion et augmenté le niveau de fondu. Je trouve que les images avec une distortion basse et un niveau de fondu grand (Md) donnent le meilleur résultat. Pour l'image masculinisée, la joue est plus large et on voit un peu les poils facials, mais on peut toujours reconnaître mon visage. Pour l'image fémininisée, l'effet est comparablement bien avec les mêmes paramètres (Fd).


Crédits supplémentaires


Moi au fil du temps

Les chansons étaient inspirées de ce que j'avais écouté à l'époque et aussi du feeling de cet âge pour moi (Trout Fishing in America - The window, Frida Gold - Wovon sollen wir träumen, Demi Lovato - Confident )

Il y a une image qui a malheureusement eu des problèmes avec les points de correspondance. Les points trouvés ne sont pas les bons, donc le morphage ne marche pas très bien. Pour améliorer cela, il fallait trouver les points à la main.


Animation du visage

Pour cette tâche, j'ai pris le TED Talk de Danielle Feinberg (de Pixar), et j'ai morphé mon visage avec celui d'elle. Pour effectuer le morphage du visage et de rien autre, j'ai utilisé la méthode "greenscreen": tout ce que je voulais pas avoir dans la vidéo j'ai mis en vert (0,255,0). Après, dans le mélange des deux images, j'ai omis tous les pixels de cette couleur. Voici l'image que j'ai utilisé pour tous les trames


On voit que mon visage bouge et tourne avec le sien. Par contre, quand elle tourne sa tête, l'illusion dégénère pas mal. Le décalage du son et de la vidéo, ainsi que les petits sauts sont causés par le fait que dans quelques trames, le visage n'a pas été trouvé et je les ai laissé tomber. En général, l'éffet est seulement convaincant quand le visage regarde vers la caméra (et les deux visages morphés ont une forme similaire). On pourrait améliorer l'effet en utilisant plusiers images de base pour faire le morphage. En plus, on pourrait utiliser des algorithmes de mélange (comme dans le tp2) pour éviter les bordures visibles.