Sujet 2 :
distinction des feuilles et des branches sur des arbres scannés
Exemple d'un eucalyptus scanné | Zoom du modèle précédent | Exemple d'un eucalyptus sans feuilles scanné |
Cadre du projet
Encadrants : Franck Hétroy et Dobrina Boltcheva (INRIA). Collaboration avec Eric Casella (Centre for Forestry and Climate Change, Royaume-Uni).Nombre d'étudiants : 3 à 4.
Lieu : le projet aura lieu en salle D200, ou équivalente, à l'Ensimag.
Prérequis : cours de la filière MMIS + cours d'algorithmique et de programmation de 1A et 2A.
Contexte
Dans le domaine agronomique, botanique ou forestier, les ingénieurs et les chercheurs ont besoin de faire des mesures sur des plantes et des arbres : volume de bois, surface foliaire totale, distribution spatiale des feuilles, ... Pour l'instant, ces mesures se font par digitalisation : des capteurs (type Polhemus) sont placés aux frontières entre les différents éléments constituant la plante (branches, tiges, feuilles, etc.), et calculent les coordonnées 3D des points récupérés. Ensuite, chaque élément est modélisé par une forme géométrique particulière (cylindre ou cône tronqué pour une branche ou une tige, polygone le plus souvent plan pour une feuille). Cette digitalisation est faite manuellement, et souffre de deux défauts majeurs : le processus est très long (plusieurs heures voire plusieurs jours pour une seule plante !) et très approximatif.Nous travaillons, en partenariat avec des chercheurs en agronomie, sur un projet de recherche dont le but est de résoudre ces problèmes en remplaçant ce processus de digitalisation par un scan laser de la plante. On récupère alors un nuage de points 3D, non structuré, décrivant la plante (voir les images ci-dessus). L'objectif du projet cité ci-dessus est de retrouver toutes les informations utiles sur la plante à partir de ce nuage de points, qui se trouve être extrêmement bruité (avec notamment beaucoup d'outliers, voir images ci-dessus) et de densité très inhomogène. Ce projet image s'inscrit dans ce contexte.
Plus spécifiquement, le but est de regrouper les points suivant la partie de l'arbre à laquelle ils appartiennent (branches ou feuilles), pour pouvoir distinguer chacune de ces parties. Pour cela, on appliquera et adaptera un algorithme de spectral clustering. Le spectral clustering est une technique très puissante, et très répandie en théorie des graphes et en vision par ordinateur, pour regrouper les sommets d'un graphe en des régions (connexes) "homogènes". Elle consiste en quatre étapes successives :
- calcul d'une matrice (dite Laplacienne) à partir du graphe ;
- calcul des vecteurs et des valeurs propres de cette matrice ;
- plongement des sommets du graphe dans l'espace engendré par les k premièrs vecteurs propres de la matrice ;
- regroupement des sommets avec un algorithme classique des k-means appliqué aux sommets plongés.
- comment construire un graphe à partir du nuage de points ? De premières expérimentations ont montré que relier chaque point à ses k plus proches voisins pouvait ne pas toujours s'avérer judicieux.
- Quels poids donner aux arêtes du graphe ? La distance euclidienne entre les deux extrémités de l'arête est une première solution, mais il y a peut-être plus judicieux à envisager (processus de diffusion ...).
- Comment choisir le nombre k de vecteurs propres à conserver pour le plongement ? Ce nombre correspond exactement au nombre de régions (clusters) créées par l'algorithme des k-means : idéalement, il correspond donc au nombre total de branches et de feuilles. Peut-on le calculer automatiquement ?
Travail demandé
- Lire les articles cités ci-dessous et mettre en place l'environnement de travail.
- Tester un algorithme de spectral clustering classique sur les données fournies par les encadrants. Ces données sont de deux types : scans réels d'eucalyptus, avec ou sans feuilles (voir images ci-dessus), et scans "virtuels", où on connaît exactement l'élément auquel appartient chaque point. Ces scans virtuels serviront pour vérifier la validité de vos algorithmes, avant de tester sur les données réelles qui sont ultra bruitées. Vous pouvez recoder vous-mêmes un algorithme, mais vous trouverez également du code en ligne.
- Réfléchir à différentes solutions possibles pour les trois problèmes cités ci-dessus, les implémenter et les tester.
- Eventuellement, déduire du clustering une approximation de chaque élément par une primitive géométrique simple (cylindre, polygone, ...).
- Faire un bilan critique du projet.
Quelques pistes bibliographiques
Voici quelques points de départ bibliographiques. Vous êtes encouragés à trouver par vous-mêmes des lectures complémentaires.- [1] U. von Luxburg, "A tutorial on spectral clustering". Statistics and Computing, vol. 17(4), 2007.
- [2] M. Bronstein and R. Horaud, "Diffusion geometry in shape analysis". Tutorial, European Conference on Computer Vision (ECCV), 2010.
- [3] R. Coifman and S. Lafon, "Diffusion maps", Applied and Computational Harmonic Analysis, vol. 21, 2006. Fourni sur demande. Intéréssant pour étudier un choix plus fin que la distance euclidienne pour les poids des arêtes. Voir aussi cette page.
- [4] C. Godin, E. Costes and H. Sinoquet, "A method for describing plant architecture which integrates topology and geometry". Annals of Botany, vol. 84, 1999.
- [5] E. Casella and H. Sinoquet, "Botanical determinants of foliage clumping and light interception in two-year-old coppice poplar canopies: assessment from 3-D plant mock-ups". Annals of Forest Science, vol. 64, 2007.
Détails techniques et liens utiles
La programmation se fera en C++, sous Linux.Logiciels utiles
L'usage d'un des deux logiciels suivants vous est fortement recommandé.- MeshLab est un logiciel Open Source qui comprend de très nombreux algorithmes sur les maillages : visualisation, nettoyage, remaillage, lissage, ...
- 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. L'extension ManifoldHarmonics calcule les valeurs et vecteurs propres (normalisés) du Laplacien : pas besoin de tout recoder vous-mêmes ! Le fichier de sortie (format mhb) est un fichier binaire où sont listés les valeurs et vecteurs propres dans l'ordre.