Projet image 2016 : Analyse Spectrale d'Animations 3D

De Ensiwiki
Aller à : navigation, rechercher
Project schedule.png
Titre du projet Analyse spectrale d'animations 3D
Cadre Projets de spécialité
Page principale Projets de spécialité image

Encadrants Franck Hétroy-Wheeler


Étudiants

Contexte

On s'intéresse aux animations 3D, qui sont simplement définies mathématiquement comme un maillage (ensemble de sommets, arêtes et faces le plus souvent triangulaires) se déformant au cours du temps. Une animation 3D peut être créée manuellement par un infographiste, mais ce travail prend du temps si on souhaite un résultat de bonne qualité (pour le cinéma par exemple). Ainsi, de plus en plus les professionnels partent de données réelles, correspondant à la capture vidéo d'un acteur effectuant une action. L'aide de marqueurs (on parle alors de motion capture) ou d'un ensemble de caméras disposées autour de la scène permet alors de reconstruire un maillage 3D à chaque pas de temps (voir images ci-dessous).

Serkis.jpg
Grimage.jpg
Motion capture : l'acteur Andy Serkis jouant Gollum dans une scène du Seigneur des Anneaux.
Reconstruction virtuelle multi-caméras (plateforme Kinovis).

Les animations 3D "brutes" créées avec ces méthodes sont souvent bruitées et insuffisantes. On a donc envie de les améliorer : lissage, compression, édition, ... Pour cela, nous proposons d'étendre une technique développée dans le cadre des maillages statiques [1].

Objectif

Bruno Vallet et Bruno Lévy ont développé, pour les maillages statiques, une analyse similaire à la transformée de Fourier mais adaptée aux formes géométriques, et appelée la transformée en harmoniques sur les variétés (Manifold Harmonics Transform, MHT) [1]. Cette transformée permet de manipuler de manière simple et globale un maillage, par exemple pour filtrer les détails. Elle repose sur une décomposition du maillage dans une base d'harmoniques sur les variétés, calculées à partir d'un opérateur laplacien (la divergence du gradient) défini pour les maillages.

Le but du projet est d'adapter cette analyse au cas des animations 3D. Un opérateur laplacien pour les animations 3D a été défini récemment (le code en Python sera fourni). Il se représente de manière matricielle par une matrice L tridiagonale par blocs. Les problèmes à résoudre sont les suivants :

  • Trouver une méthode efficace de décomposition spectrale de cette matrice. Cette méthode devra être suffisamment rapide et précise pour calculer des milliers de vecteurs propres en quelques minutes. On pourra s'inspirer de l'approche proposée dans [1], Section 4 (calcul par bandes de factorisations de Cholesky), ainsi que de la propriété de tridiagonalité par blocs.
  • Implémenter une transformée en harmoniques sur les variétés similaire à celle proposée dans [1] à partir de cette décomposition spectrale, ainsi que que la transformée inverse.
  • Utiliser cette transformée afin de pouvoir filtrer aussi bien la géométrie que le mouvement d'une animation.

Méthode de décomposition spectrale

Différents algorithmes pour le calcul des valeurs et vecteurs propres ont été implémentés et testés. L'algorithme finalement retenu utilise la méthode de Lanczos et fait une "Shift and invert transform". Il se déroule de la manière suivante : AlgoDecomSpectral.png

Après l'avoir implémenté, on l'a comparé à l'algorithme de recherche du spectre (eigs) de Matlab :

TestDecompoPourN.png
TestDecompoM.png

On voit que notre algorithme est légèrement plus rapide que celui de Matlab et qu'il est précis (erreur < 10^{-9}).


Bibliographie