Descripteur de formes et mouvements 3D et application à la classification d'animations

De Ensiwiki
Aller à : navigation, rechercher

Pour ce sujet, il est possible de bénéficier d'un encadrement spécifique sur le thème des méthodes agiles. Pour plus de détails, voir la page Méthodes agiles en projet de spécialité.

Cadre du projet

  • Encadrant : Franck Hétroy.
  • Nombre d'étudiants : 3 à 4.
  • Prérequis : programmation C++, graphique 3D, algèbre linéaire, géométrie.

Contexte

Ce projet fait suite à un projet de spécialité réalisé l'année dernière. Le code des étudiants vous sera fourni (sans garantie de bon fonctionnement, c'est un code d'étudiants Ensimag ...).

Pouvoir comparer deux formes est crucial dans des domaines aussi variés que la médecine (comparaison d'un organe malade à un organe sain), la biologie et la paléontologie (comparaison d'un fossile et d'un modèle actuel), la reconnaissance faciale, la CAO (recherche de défauts dans un modèle mécanique). Avec les progrès des techniques d'acquisition d'images, le problème a aujourd'hui été restreint à la comparaison de modèles virtuels, généralement tridimensionnels. Il existe de nombreuses méthodes pour résoudre ce problème, parmi lesquelles [1] qui a l'avantage d'être indépendante de la pose des modèles (autrement, un personnage avec les bras écartés et le même personnage les bras le long du corps seront évalués comme similaires). L'objectif de ce projet est d'étendre cette technique aux formes 3D animées, et de l'appliquer à la classification automatique d'animations. On pourra ainsi comparer non seulement deux formes, mais deux mouvements de ces formes. Les applications possibles se situent dans le domaine du cinéma (validation d'effets spéciaux) comme dans celui de la kinésithérapie (rééducation), par exemple.

Rustamov1.png Rustamov2.png


Travail demandé

Les algorithmes décrits dans [1] et [2] calculent des descripteurs vectoriels pour toute forme tridimensionnelle représentée sous forme de maillage. Le premier a été implémenté l'année dernière, et le code vous sera fourni. L'extension de cet algorithme au cas des maillages animés, en remplaçant l'opérateur Laplacien 3D par un équivalent en 3D+t, a également été implémenté. En revanche, la formule utilisée n'était pas correcte. Le projet se déroulera donc en 3 étapes successives :

  • 1. implémentation de la nouvelle formule d'opération Laplacien 3D+t ;
  • 2. extension des algorithmes décrits dans [1] et [2] au cas des maillages animés ;
  • 3. application à la classification de maillages animés.

Chacune de ces étapes devra être validée à travers des tests sur des modèles variés.

Bibliographie

Détails techniques

La programmation se fera en C++, sous Linux. Une mini interface graphique pour maillages statiques et animés vous sera fournie. Elle tourne sous OpenGL, Qt et utilise libQGLViewer. Pour les calculs numériques, Matlab pourra être utilisé, ou alors l'une des bibliothèques suivantes :

  • TAUCS : résolution de systèmes linéaires creux.
  • SuperLU : idem.
  • OpenNL : idem, développé à l'INRIA Nancy et designé spécialement pour la communauté de l'informatique graphique.
  • Eigen : bibliothèque C++ d'algèbre linéaire, très efficace. Même Google l'utilise.

Pour vos calculs matriciels, je vous conseille d'utiliser Eigen.

Logiciels utiles

  • Graphite est un logiciel Open Source développé à l'INRIA de Nancy et particulièrement spécialisé dans les algorithmes de calcul numérique sur les maillages.
  • MeshLab est un logiciel Open Source qui comprend de très nombreux algorithmes sur les maillages : visualisation, nettoyage, remaillage, lissage, ...