Introduction
L'objectif du sujet
L'objectif de notre projet était la détection de caractéristiques (features) sur un maillage 3D, à l'aide de snakes (contours actifs).
Concrètement, nous sommes partis de l'article Geometric Snakes For Triangular Meshes, par Y. Lee et S. Lee.
Le schéma de cet algorithme est le suivant :
Les tâches demandées étaient :
- Implémenter cet algorithme.
- Tester ses performances (temps de calcul, place mémoire ...) sur
diverses surfaces maillées (de tailles diverses, pour des maillages uniformes et
non uniformes) et en tirer des conclusions.
- Proposer d'autres définitions de features, et modifier l'algorithme
en conséquence.
- Proposer des améliorations (notamment vis-à-vis du plongement sur un plan,
du calcul de plus court chemin, ...), et faire un bilan critique de cet
algorithme.
Notre organisation
Nous avons réalisé ce projet en binôme.
Semaines 1-2 |
- Etude des différentes librairies (CGAL, OpenGL...)
- Sélection d'un snake par l'utilisateur
|
Semaine 3 |
- Calcul de la région locale
- Détection du bord d'un mesh ouvert
- Calcul d'un plus court chemin approximatif en 3D
|
Semaine 4 |
- Calcul de la paramétrisation 2D
- Minimisation de l'énergie
|
Nous avons effectué les tests au fur et à mesure du développement.
Ce qui a été fait
Par rapport aux tâches demandées, nous avons presque terminé l'implémentation de l'algorithme.
Ce qui a été implémenté et testé :
- Sélection d'un snake initial par l'utilisateur.
- Calcul de la surrounding region de ce snake
- Calcul de la paramétrisation 2D de cette région (forme choisie = carré)
Ce qui a été implémenté et est en cours de test :
- Minimisation de l'énergie du snake
- Mise à jour du snake
Ce qui reste à implémenter :
- Autres formes de base pour la paramétrisation
- Bordure virtuelle pour la paramétrisation
- Autres définitions de l'énergie du snake
Outils utilisés
Voici les librairies dont nous avons disposé :
- libQGLViewer : pour créer des interfaces graphiques basées sur Qt et OpenGL.
- Qt : pour définir des fenêtres et des interactions utilisateur
- OpenGL : pour afficher des objets géométriques
- CGAL : un ensemble de fonctions et de structures géométriques. Beaucoup de fonctions sont disponibles, mais cette librairie est trop difficile à mettre en oeuvre. Au final nous nous sommes servis uniquement de la structure de Polyèdre 3D.
|