Florent Paccault, Vincent Vidal Projets image 2006 : Contours actifs (snakes) 3D |
|
Accueil |
Bilan critique Durant ce projet, nous avons eu beaucoup de difficultés à surmonter. La première, c'est la bibliothèque CGAL. En quelques mots, CGAL, c'est 3000 pages de manuel, une bibliothèque "ultra-templatée", des messages d'erreurs de 40 lignes et très peu d'exemples sur le Net. Dès le début du projet, nous avons étudié le manuel de CGAL, et nous avions vu des méthodes intéressantes, concernant les triangulations (qui offrent beaucoup de fonctionnalités), les arrangements, les Polyhedrons, les Nef_Polyhedrons et la paramétrisation 2D à partir de polyhèdres 3D. C'est cela qui nous a poussé à utiliser CGAL pour le projet. Mais on ne nous a pas installé CGAL 3.2 sur les Macs, ce qui remet en question notre utilisation de cette bibliothèque, puisqu'on n'a pas eu la récompense de notre effort initial. Toutefois, il faut rester positif. Il est très instructif d'apprendre à utiliser des outils comme CGAL. En effet, un ingénieur doit, pour gagner du temps, essayer d'utiliser les bibliothèques disponibles. Même desfois, il n'a pas le choix car son équipe de travail utilise une bibliothèque spécifique. En plus, la notion de template qui était assez floue auparavant s'est éclaircie. Une deuxième difficulté, c'est le manque d'information dans les articles lus. Il y a beaucoup de non-dit. On se rend vraiment compte de cela quand on commence à coder tout le processus de minimisation de l'energie. Par exemple il n'y a pas de précision sur la méthode utilisée pour fixer les points de contour dans la paramétrisation. Il n'y a pas non-plus d'indication sur le calcul des dérivées partielles de l'énergie caractéristique, en particulier aux bords du snake. Plus nous avancions dans le projet et plus nous nous posions des questions sur l'intérêt même de ce dernier. En effet, si on prend un peu de recul, tout est basé sur la taille de la région locale, donc sur la taille des triangles utilisés dans les meshs. Or la plupart des meshs que l'on utilise ont un rafinement en triangles très difforme. Il est par exemple possible d'avoir des petits triangles autour d'un sommet du snake et cela va entraîner un rétrécissement de la région local autour de ce sommet et donc cela va empêche le snake d'évoluer convenablement. Pour palier à ce genre de problème, on peut évidemment penser à augmenter la taille de la région locale. Une autre façon de faire serait de mettre à jour la région locale à chaque itération, mais au fond, cela est trop couteux en nombre d'opérations pour le résultat obtenu. On pourrait alors imaginer un processus de détection de contours basé simplement sur une intéraction utilisateur, en utilisant des B_spline 3D. Cela permettrait d'avoir le lissage de la courbe mais aussi une assez bonne précision sur le contour que l'on veut détecter. On pourrait alors appliquer notre méthode de minimisation de fonctionnelle du snake pour raffiner le résultat obtenu. On pourrait aussi utiliser des snakes 3D, mais il faudrait trouver des méthodes efficaces pour le calcul de l'énergie... |
Dernière mise à jour de la page : Fri 16 Jun 2006 à03:42:40