TP3: Morphage de visages

Par Mathieu Garon

Introduction

Le monde de la photographie moderne ne pourrait pas se passer des lois de bases de la transformation géométrique. En effet, le stade des simples rotations et changement de plans est dépassé depuis longtemps, et les possibilités de transformation des images sont infinies. Dans ce projet, une application des transformations affines sur des images est présentée. Le projet consiste à changer la morphologie d'un sujet vers un autre avec une série d'images. Une description de l'approche sera décrite et ensuite les résultats seront présentés.

Approche

Sélection des points d'intérèts

La première étape est majoritairement manuelle, un utilisateur doit sélectionner plusieurs points de correspondances entre deux images. Pour faciliter la tâche, une interface usagée a été développée, celui-ci permet de prendre un nombre arbitraire de points sur les deux images, lorsque l'utilisateur à sélectionner les points, il peut sauvegarder les points vers un fichier pouvant être lu par les autres modules.

Triangulation

L'étape suivante consiste à calculer une triangulation sur les points. Une technique efficace consiste à faire la moyenne des points et d'effectuer une triangulation de Delaunay. La triangulation générée devra être gardée pour la suite de l'algorithme.

Transformations affines

Lorsque les triangles sont calculés, une forme intermédiaire entre les deux listes de points doit être déterminée. Par exemple, une moyenne pondérée permet de déterminer une nouvelle transformation pour les triangles. Lorsque les nouveaux points sont générés, il est nécessaire de calculer la matrice de transformation qui transforme les triangles originaux aux nouveaux triangles. Il s'agit dans le cas présent d'une simple résolution de système d'équations linéaires : points originaux * T = nouveaux points. Puisque l'inconnue est T, il faut transformer les points en coordonnées homogènes et calculer l'inverse de la matrice, pour ensuite faire une multiplication matricielle avec les nouveaux points. Il est important de garder chaque matrice de transformation associée à chaque triangle.

Calcule des pixels

Finalement, lorsque toutes les matrices de transformations sont calculées, une nouvelle image est générée en itérant sur chacun des nouveaux pixels et en calculant la transformation en fonction du pixel et du triangle. Nécessairement, chacune des images aura une transformation affine différente vers le nouveau pixel. L'intensité des pixels peut être calculée avec une moyenne pondérée pour mélanger les deux images.

Génération de plusieurs images

Seulement deux paramètres permettent de modifier le résultat. Le facteur de déformation des triangles entre les deux images, et le facteur de la couleur préserver dans les images. Pour générer un vidéo fluide, augmenter les deux facteurs de manière égale entre 0 et 1 permet un fondu fluide entre la première et la deuxième image.

Visage moyen de la classe

Pour générer un visage moyen de la classe, il suffit de calculer la moyenne des points d'intérêts de chaque étudiant de la classe. Lorsque les points sont calculés, il suffit d'appliquer la transformation des images originales vers une nouvelle image, cela aura pour effet de donner à toutes les images les mêmes proportions. La moyenne de ses images est présentée dans les images suivantes. Les traits du visage produit sont masculins puisque la majorité des étudiants de la classe sont des hommes. De plus, l'image prouve qu'en moyenne, les étudiants du cours de photographie algorithmique ne se rase pas la barbe tous les matins.

Image moyenne de la totalité des 25 visages de la classe

Crédit supplémentaires

Quelques expérimentations avec d'autres images:


Pour les fans de Zelda : Nintendo 64 => Wii



Transformation de Ghandi en statue