Morphage de visages

Redéfinir l'expression «se prendre pour un autre».

Morphage


Figure 1: Exemples de morphage.
Cliquez sur l'animation pour obtenir la version mp4.
Sources des photos: Asterix: Cristina Mello, Obélix: Images pour toi
Zoom: reuters, Wikimedia, Zonu, Wikimedia, Google Maps

Description

Afin de réaliser les vidéos de la fig. 1, il a préalablement été nécessaire de choisir une série de points dans chacune des images. Chaque point doit être apparentée au point analogue dans la séquence et ce, pour toutes les images contribuant au même morphage. Une fois ceci réalisé, on réalise une triangulation de ces points. Cette opération groupe les points par trois afin d'obtenir des triangles ayant une proportion similaire en hauteur et largeur. La triangulation de Delaunay est un algorithme permettant précisément d'effectuer ce groupement tout optimisant la proportion du triangle résultat. Il suffit par la suite de trouver la transformation permettant de calculer, à partir d'une coordonnée dans chacun de ces triangles, la coordonnée dans ce même triangle, mais dans une image différente. Le but est de créer des images intermédiaires en interpolant linéairement entre les points déterminés manuellement. Ces transformations, dites affines ont 6 degrés de libertés et s'écrivent, en coordonnées homogènes, de la façon suivante: $$M = \begin{bmatrix} a & b & c \\ d & e & f \\ 0 & 0 & 1 \end{bmatrix}\quad. $$ Puisque nous avons déterminé arbitrairement les coordonnées des coins des triangles dans toutes les images, il suffit alors de créer un système d'équation linéaire permettant de résoudre l'équation $$ \vec{x}' = M \cdot \vec{x} \quad,$$ où $\vec{x}$ et $\vec{x}'$ sont respectivement les coordonnées d'un point dans l'image source et de destination et $M$ la transformée affine à effectuer. L'image dite «source» n'est pas celle servant de première image à l'animation, mais bien l'image à générer. Ces transformées seront calculées deux fois, une pour l'image au début de l'animation et une seconde foir avec l'image de fin de l'animation. En décomposant la multiplication matricielle, on arrive à bâtir le système d'équation linéaire suivant: $$ \begin{bmatrix} x_1' & y_1' & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & x_1' & y_1' & 1 \\ x_2' & y_2' & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & x_2' & y_2' & 1 \\ x_3' & y_3' & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & x_3' & y_3' & 1 \\ \end{bmatrix} \begin{bmatrix} a \\ b \\ c \\ d \\ e \\ f \end{bmatrix} = \begin{bmatrix} x_1 \\ y_1 \\ x_2 \\ y_2 \\ x_3 \\ y_3 \\ \end{bmatrix} $$ Maintenant, il est possible de multiplier des coordonnées de tous les pixels contenus dans chacun des triangles à leur transformation affine correspondante afin de trouver leur coordonnées dans l'image de début et de fin d'animation. Il suffit d'appliquer une interpolation linéaire sur ces valeurs afin d'obtenir une image de l'animation.

Cependant, cette façon de procéder n'est pas à toute épreuve. On peut remarquer des bavures ou des incongruitées dans les vidéos, surtout lorsqu'on s'éloigne d'un visage aligné avec fond uni.

Visage "propre" et analyse en composantes principales

Il est possible de calculer la moyenne des visages de la classe, tel que montré dans la fig. 2. Celle-ci permet par la suite de calculer une Analyse en Composantes Principales (ACP) permettant de trouver les bases, soit les ensembles de pixels (et l'impact de chacun) permettant d'expliquer le mieux le jeu de données. On peut voir à droite de la fig. 2 les bases que l'ACP calcule dans les visages des étudiants du cours. Notez que les images sont normalisées pour mieux voir les détails à l'affichage.

On remarque que le visage moyen est un homme caucasien avec une barbe de deux jours, ce qui représente bien (selon moi) l'étudiant moyen suivant un cours de photographie algorithmique par les temps qui courent. On remarque une légère ombre où devraient être des lunettes, signe qu'un faible pourcentage non-négligeable d'étudiants portent des lunettes.

Figure 2: Visage moyen (à gauche) et les 24 bases trouvées par l'ACP (de gauche à droite, puis de haut en bas)

Morphage sans triangles

Dans la fig. 3, un essai de morphage sans triangle a été effectuée. Celle-ci utilise la technique du point le plus proche (nearest neighbor) pour déterminer la transformation à effectuer.

Figure 3: Exemple de morphage sans triangles.
Cliquez sur l'animation pour obtenir la version .mp4.
Sources des photos: reuters, Wikimedia, Zonu, Wikimedia, Google Maps