# Extraction d’information dans les formes 3D à partir de graphes de Reeb et d’un indice de forme spécifique, avec la librairie TTK
## Table des matières
[[_TOC_]]
## Sujet
TTK (Topological Toolkit) est une librairie très puissante en ce qui concerne l’analyse de données topologiques. Il est par exemple aisé de calculer des graphes de Reeb d’une forme, en utilisant tous types de fonctions scalaires qui va “traverser” l’objet.
Dans ce projet, il sera question de poursuivre des travaux élaborés dans l’équipe G-Mod concernant l’analyse d’objets 3D par graphes de Reeb. La librairie TTK sera utilisée pour le calcul des graphes de Reeb, et nous utiliserons la fonction Shape Index [Koenderink et al. 1992]. Cet indice de forme fournit une représentation intrinsèque des caractéristiques géométriques locales de la surface 3D (forme convexe, concave, ornière, crête, selle, etc.) à partir des courbures principales. De plus, il est invariant à l’échelle, à la rotation et aux translations. Ce descripteur propose un bon score pour retrouver des surfaces similaires.
Sur la base des graphes de Reeb produits, le projet pourra se poursuivre par :
- La détection de similarité et de symétries au sein d’un maillage ;
> **ReebGraphNodes.vtp** : contient les noeuds du graphe de Reeb d’indice de forme au format vtp, notons que ces noeuds sont colorés suivant leur valeur d’indice de forme.
> **ShapeIndexMap.vtp** : permet l’affichage de notre maillage coloré selon l’indice de forme sur sa surface.
Pour ouvrir les 3 .vtp en même temps, on en ouvre un avec la commande `paraview` puis, une fois dans le logiciel, faire ctrl+O pour ouvrir des fichiers. De là, on peut ouvrir les autres .vtp du répertoire `build`.
### En cas de lecture de main.cpp sur un IDE
Penser à renseigner les chemins suivants pour les `#include` (sous Ubuntu) :
```
/usr/include/ttk/vtk
/usr/include/paraview-5.10
...
...
@@ -452,6 +464,7 @@ Penser à renseigner les chemins suivants pour les `#include` (sous Ubuntu) :
```
## Fonctionnalités
- Lecture de fichier `.obj` passé en entrée et traduction du maillage en "VTKPolyData", le modèle de donnée de VTK.
- Calcul des courbures principales du modèle, courbure minimale et courbure maximale.
- Récupération des courbures afin de calculer l'indice de forme en chaque point du maillage. Ajout de l'indice de forme au modèle de données comme caractéristique du modèle.
...
...
@@ -460,15 +473,25 @@ Penser à renseigner les chemins suivants pour les `#include` (sous Ubuntu) :
- Récupération des informations du graphe et écriture dans le format `.vtp`.
## A modifier
- [ ] Généraliser le format d'entrée
- [ ] Rendre tous les OBJ lisibles par le programme.
- [ ] Pouvoir lire les fichiers OFF afin de généraliser le format d'entrée.
- [x] Généraliser le format d'entrée
- [x] Rendre les OBJ lisibles par le programme (si pas lisibles, msg d'erreur)
- [x] Pouvoir lire les fichiers OFF afin de généraliser le format d'entrée.
- [ ] Améliorer l'outil de filtrage.
- [ ] Transformer les .vtp en dot pour visualiser le graphe de Reeb sous graphviz
- [ ] Filtrer selon des paramètres spécifiques le graphe obtenu
- [ ] Créer une interface
- [ ] Un affichage du maillage d'un côté, affichage du graphe de Reeb de ce maillage de l'autre
- [ ] Possibilité d'agir sur le filtrage avec un slider
- [ ] Possibilité de cliquer sur un élément du graphe de Reeb et visualiser à quoi ça correspond sur le maillage
## Références
- Florian Beguet. Modélisation et description par graphes pour des formes géométriques complexes. Thèse de doctorat, Aix-Marseille Université, 2021.
- Jan J. Koenderink et Andrea J. Van Doorn. « Surface shape and curvature scales ». Image and vision computing, 10.8, p. 557-564, 1992.
### Auteurs
Un sujet proposé par Jean-Luc MARI
Lucie CLERAND et Eve REGA (PFE Master 2 Informatique)