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.
|