Description du travail

L'objectif de ce travail consiste en première partie à réaliser un algorithme de morphage d'image. En deuxième partie, des visages moyens sont calculés en ayant recourt à deux jeux de données(jeu de données de la classe et jeu de données de Utrecht).

Partie A: Algorithme de morphage

Pour réaliser un morphage entre deux images il faut en premier lieu identifier les points de correspondance entre les deux images. En second lieu, il faut réaliser un "objet moyen" à partir d'une moyenne pondérée(dépendant de warp_frac) des deux ensembles de points. De cet "objet moyen", il faut par la suite générer un ensemble de triangle en utilisant l'algorithme de Delaunay. Ces triangles peuvent ensuite être utilisés pour trouver les transformations à appliquer aux triangles correspondants de chacune des images pour les amener vers "l'objet moyen". Ces transformations sont calculées en résolvant un système d'équations linéaires de la forme x = A-1B. Une fois la transformation de chaque triangle trouvée pour chacun des images, il ne reste qu'à calculer la valeur RGB de chaque pixel de l'image moyenne en faisant une dilution qui correspond à une moyenne pondérée(le paramètre de pondération correspond à dissolve_frac) du pixel correspondant provenant de la première image ainsi que de la deuxième image.

Le résultat suivant présente la tranformation entre deux visages pour la séquence de tranformation de l'ensemble des visages de la classe.

Le résultat obtenu est réussi puisque la trasnformation entre les deux visages se fait de manière très fluide.

Trois animations de morphage effectuées sur des objets, des animaux ou autres.

Les résultats sont de bonne qualité, cependant, certaines sections des images sont moins fluides et subissement parfois des sauts. Afin de réduire ces effets de saut, il aurait été important d'ajouter plus de points correspondance afin d'augmenter le nombre de tiangles et ainsi rendre la transformation des images plus fluides. Cela dit, les zones d'intérets principales, puisqu'elles contenaient un plus grand nombre de points, subissent un morphage fluide.

Deux animations de morphage effectuées sur vos propres photos

Encore une fois, les objets qui subissent le morphage ont une transformation assez fluide. Parconte à cause du manque de points sur le fond et les objets autours, la fluidité de morphage du fond des images est nettement moins bien réussie. Prendre un plus grand nombre de points sur les objets autours aurait permis d'améliorer la fluidité du morphage.

Crédits supplémentaires: Implémentez un algorithme de morphage n'utilisant pas des triangles.

L'implémentation d'un algorithme de morphage sans l'utilisation de triangles suit la méthode décrite dans l'article suivant: Beier-Neely L'idée principale de la méthode est d'ajouter des lignes de correspondance dans chacune des images du morphage pour ensuite réaliser une transformation de chacun des pixels des deux images selon sa distance pondérée à chaque ligne.

L'image suivante présente le résultat d'un morphage entre deux images avec l'utilisation d'une seule ligne pour guider la transformation des pixels.

L'images suivante présente le résultat final de l'algorithme avec l'utilisation des plusieurs lignes pour pondérer la transformation de chaque pixel des images.

La transformation à une seule ligne fonctionne bien lorsque les deux images sont très similaires. L'alignement et le morphage dans ce cas particulier sont très bon. Toutefois, lorsque les images sont très différentes, les résultats obtenus sont peu concluant par manque de correspondances dans les deux images. Ainsi, le deuxième résultat présente la transformation de deux images non similaires. Ce résultat a nécessité plusieurs lignes afin de décrire les zones de correspondances. La transformation entre les deux bouteilles se fait de manière assez fluide. Une amélioration qui aurait pu être réalisée par rapport à l'implémentation de l'algorithme est de ne pas retirer les pixels dont le résultat pour l'une des deux images ne tombe pas dans les coordonnées de l'image résultante. De cette manière, le cadre noir serait remplit par la couleur de l'une ou l'autre des images.

Crédits supplémentaires: Morphez une image filtrée avec un filtre passe-bas et une image filtrée avec un filtre passe-haut

Le résultat suivant montre le morphage entre une image filtrée avec un filtre passe-haut et une image filtrée avec un filtre passe-bas.

Puisque les visages sont alignés avec beaucoup plus de points en comparaison aux résultats obtenus dans le TP2 cela donne un résultat d'image hybride nettement plus réaliste. De plus, puisque le résultat du morphage est une pondération du filtre passe-bas avec le filtre passe-haut, l'image apparait plus sombre que celles obtenues avec les images hybrides du TP2. En effet, au TP2 l'image hybride était obtenue en réalisant l'addition du filtre passe-bas et du filtre passe-haut et donc l'intensité des pixels résultant était plus grande que lors du morphage des images.

Partie B: Calcul du "visage moyen"

Cette partie du travail consiste à réaliser des visages moyens en utilisant des jeux de données de visages. L'alignement des visages est fait automatiquement en ayant recourt à la librarie dlib.

Visage moyen de la classe

L'image suivante correspond à la forme du visage moyen ainsi que le visage moyen de la classe par triangulation qui a été obtenue avec les points sélectionnées manuellement.

Forme
Résultat

Il est possible de remarquer que le visage moyen obtenue est plus représentatif des traits caractéristiques masculins. En effet, la barbe quelques peu visible ainsi que la mâchoire plus carrée indique la présence d'un plus grand nombre d'hommes que de femmes dans le groupe (ce qui est effectivement le cas). De plus, il est possible de remarquer la présence d'une forme de lunettes provenant de certains élèves portant des lunettes lors de la prise des photos.

L'image suivante correspond à la forme du visage moyen ainsi que le visage moyen de la classe par triangulation des points générés automatiquement avec dlib.

Forme
Résultat

Tout comme dans la première images moyenne de la classe, il est possible d'observer les traits caractéristiques d'un portrait masculin. Cependant, puisque l'algorithme de reconnaissance de visage ne générait pas de points d'intérets pour le front ainsi que pour les cheveux, on remarque que les cheveux du visage moyen sont moins bien définis.

Visage moyen de la base de données Utrecht

L'image suivante correspond à la forme du visage moyen de l'ensemble des images du jeu de données Utrecht ainsi que le résultat du visage moyen par triangulation des points générés automatiquement avec dlib.

Forme
Résultat

La forme du visage moyen est très similaire à celle obtenue avec les images des étudiants de la classe. La forme concentre les points au niveau des traits du visage ainsi que de la forme de la mâchoire. Dans un même ordre d'idées, le résultat du visage moyen obtenu pour le jeu de données Utrecht semble donner un visage plus masculin. En effet, puisqu'il y a plus de 60% des images qui correspondent à des hommes, le résultat moyen tend à représenter davantage un visage avec des traits masculins.

Partie B: Masculinisation et féminisation de votre visage

Résultat de la masculinisation du visage

Le résultat suivant présente le visage masculin moyen sur le jeu de données Utrecht.

Les deux résultats suivants présentent l'effet d'une masculinisation plus et moins accentué selon α et β

α=0.4, β=0.6
α=0.6, β=0.4

Il est possible de remarquer l'effet de l'accentuation de la masculinisation avec l'augmentation du paramètre α L'effet est concentré sur les traits du visage. En effet, puisque les points descriptifs du visage sont contenus au niveau des yeux, de la bouche du nez et de la mâchoire, le morphage néglige le contour des cheveux. Cela peut expliquer l'effet moins réaliste autour des cheveux. Toutefois, le résultat au niveau des traits principaux du visage et très réaliste et déforme bien le visage.

Résultat de la féminisation du visage

Le résultat suivant présente le visage féminin moyen sur le jeu de données Utrecht.

Les deux résultats suivants présentent l'effet d'une féminisation plus et moins accentué selon α et β

α=0.4, β=0.6
α=0.6, β=0.4

Avec l'augmentation du paramètre α, on remarque que la féminisation du visage s'accentue. Toutefois, tel que dans la masculinisation, le front ainsi que les cheveux sont beaucoup moins affectés par le morphage. Cela s'explique encore un fois par l'absence de points d'intérets dans cette région du visage féminin moyen et du visage sur lequel la féminisation est appliquée.

Crédits supplémentaires: Analyse en Composantes Principales sur la base de données Utrecht.

L'objectif de cette section est de réaliser une analyse en composante principale sur les images de la base de données Utrecht. Il faut premièrement retirer la moyenne des visages à chacune des images de visages qui ont été préalablement alignés. Ensuite, on calcule les valeurs propres et vecteurs propres à l'aide d'une décomposition en valeurs singulières.

Il est important de mentionner que les résultats ont été générés sur les images en noir et blanc afin de réduire la dimensionnalité pour augmenter la vitesse de calcul. Le principe reste le même avec un canal d'intensité.

Les résultats suivants présentent les cinq premiers vecteurs propres (ceux ayant les valeurs propres les plus grandes) obtenus de l'analyse en composantes principales (PCA) sur l'ensemble des visages du jeu de données Utrecht.

Vecteur propre 1
Vecteur propre 2
Vecteur propre 3
Vecteur propre 4
Vecteur propre 5
Résultat vecteur propre 1
Résultat vecteur propre 2
Résultat vecteur propre 3
Résultat vecteur propre 4
Résultat vecteur propre 5

Les résultats montre l'application des vecteurs propres à l'image moyenne du jeu de données Utrecht. Il est possible de remarquer la transformation du visage vers un visage plus souriant avec le premier vecteur propre qui caractérise les traits d'un visage souriant. Les vecteur propre 3 et 5 génèrent quand à eux des images beaucoup plus féminines. Le vecteur propre 4 applique une tranformation très maculine sans sourire avec l'apparition de barbe qui est très caractéristique de ce qu'il est possible d'observer dans la visualisation du vecteur propre 4.