Projet image 2013 : Fusion d'informations : images médicales et maillages

De Ensiwiki
Aller à : navigation, rechercher
Project schedule.png
Titre du projet Fusion d'informations : images médicales et maillages
Cadre Projets de spécialité
Page principale Projets de spécialité image

Encadrants Promayon Emmanuel, Selmi Sonia


Étudiants

Dupouy Maylis - MMIS

Loubet Guillaume - MMIS

Mathis Claire - MMIS

Soulier Benoît - MMIS

Introduction

Les nouvelles technologies se sont peu à peu imposées dans tous les domaines de la vie courante, et notamment dans le domaine médical. En effet, l'informatique a permis la création d'outils pouvant aider les chirurgiens lors d'interventions médicales, ou pouvant faciliter l'apprentissage de la médecine à l'aide de simulations. C'est dans cette optique que le laboratoire en Techniques de l'Ingénierie Médicale et de la Complexité – Informatique, Mathématiques et Applications de Grenoble (TIMC-IMAG), et plus précisément l'équipe de Gestes Médico-Chirurgicaux Assistés par ordinateur (GMCAO), a décidé de développer un logiciel open-source CamiTK pour faciliter la visualisation et l'analyse d'images médicales.

Un exemple d'application médicale permise par ce logiciel est un simulateur de biopsie de la prostate. Pour réussir une telle biopsie, les médecins doivent faire des prélèvements dans 12 zones différentes de l'organe. C'est une opération délicate car les médecins ne disposent que d'une échographie 2D en temps réel dont il est parfois difficile d'extraire les bonnes informations. Des études ont montré que les différents points de prélèvement étaient souvent mal placés par rapport aux prélèvements à faire en théorie. Or, il est important que toutes les zones de la prostate soient couvertes lors d'un dépistage de cancer. Le simulateur de biopsie développé dans l'équipe GMCAO est un outil qui permet aux médecins de s'entraîner à l'exécution de ce protocole : le logiciel enregistre les mouvements d'un bras mécanique et simule une échographie. A la fin de la simulation, le médecin peut voir les zones de la prostate qu'il aurait atteintes, et celles où aucun prélèvement n'aurait été fait.

CamiTK

CamiTK (Computer Assisted Medical Intervention ToolKit) est un logiciel open source développé depuis 2001 par des chercheurs du laboratoire TIMC-IMAG. Il permet la visualisation et l'analyse d'images médicales. Les chirurgiens et médecins peuvent ainsi l'utiliser comme support et outil lors de leurs interventions.


Le principe de CamitTK est très simple : il permet la manipulation d'objets à l'aide d'actions.

  • Les objets peuvent être des images médicales ou des maillages.
  • Les actions sont des fonctionnalités qui s'appliquent à un objet. Par exemple, le changement de couleur, le scaling (changement d'échelle), etc...


L'architecture globale du logiciel est la suivante :

  • un noyau interne ("core"), qui régit l'implémentation de base du logiciel
  • des extensions, qui peuvent être implémentées et ajoutées sous la forme d'actions
  • pour gérer l'interface graphique, le logiciel utilise les bibliothèques VTK et QT.

Le travail demandé

Le but de notre projet était d'implémenter deux fonctionnalités supplémentaires pour le logiciel CamiTK. Ces deux fonctionnalités sont des actions qui s'appliquent sur des maillages.

La première fonctionnalité doit permettre de rogner un maillage (dans le langage mathématique, on parle de mesh clipping). Certaines applications nécessitent le clivage d'un maillage par un plan, ce qui peut permettre de mieux visualiser l'intérieur du maillage. Par exemple, rogner un maillage représentant le crâne d'un patient permet de visualiser de manière plus intuitive les organes internes tels que le cerveau.

La deuxième fonctionnalité consiste à faire une fusion de données entre une image et un maillage, par l'affichage du contour du maillage sur l'image (dans ce contexte, l'image est en 3D). Cette fonctionnalité permet aux médecins de voir, sur des coupes de leurs images, les contours des maillages.

Le travail réalisé

Présentation générale

Nous avons implémenté les deux fonctionnalités demandées. Pour chacune d'entre elles, une part importante de notre temps à été consacrée à la recheche d'information et à la lecture de documentations. Nous avons tout d'abord dû nous renseigner sur le cœur de CamiTK pour comprendre les types de données que nous devions manipuler, et pour avoir une vision globale de l'implémentation. Nous avons aussi dû apprendre à nous servir des librairies utilisées au sein de CamiTK. Les fonctionnalités demandées ont été implémentées à l'aide de filtres de la librairie VTK. Une première difficulté a donc été de savoir trouver et identifier les outils adéquats. Il a fallu ensuite s'occuper de la visualisation des résultats et de l’interaction avec l'utilisateur. La principale difficulté de cette étape a été l'absence d'outils dans le noyau du logiciel, nous empêchant de gérer les événements d'interaction comme nous le souhaitions.

Résultats

Interface du Mesh Clipping

Première fonctionnalité : Lorsque l'utilisateur ouvre un maillage, il peut sélectionner l'action "Mesh Clipping". A ce moment, un widget VTK représentant un plan apparaît et l'utilisateur peut le translater ou lui faire subir des rotations pour faire la coupe du maillage désirée. A chaque fin de mouvement du plan, la coupe réalisée est mise à jour. Dans le widget spécifique à l'action (à droite de l'écran), plusieurs options sont proposées à l'utilisateur sous forme de bouton :

  • Clip All Components / Clip Selected Components only : cette option n'a du sens que lorsque plusieurs maillages sont ouverts dans la même fenêtre. En cliquant sur ce bouton, l'utilisateur peut choisir s'il veut rogner l'ensemble des maillages ouverts ou uniquement les maillages sélectionnés dans l'explorer (à gauche de la fenêtre).
Smooth / Raw Clipping
  • Smooth Clipping / Raw Clipping : l'action est appliqué sur les maillages. Tout ce qui est au-dessus du plan est rogné et tout ce qui est en-dessous est conservé. Ainsi, il y a deux possibilités pour rogner le maillages : soit on raisonne sur la position des éléments soit on raisonne sur la position des points du maillage. Dans le deuxième cas, des points sont ajoutés pour obtenir une coupe lisse respectant la forme du maillage.
  • Hide clipping widget / Show clipping widget : le plan peut parfois gêner la visualisation de maillage clippé. Nous avons donc permis à l'utilisateur de ne plus afficher le plan s'il le souhaite.
  • Restore unclipped meshes : ce bouton permet de restaurer le(s) maillage(s) d'origine
  • Update : ce bouton est utilisé pour prendre en compte le changement de sélection de l'utilisateur.
  • Save Clipped Components : les transformations sont appliquées à partir des données du maillage initial mais celui-ci n'est pas modifié. Ainsi, le mode d'enregistrement proposé par CamiTK va enregistrer de nouveau le maillage entier. Ce bouton permet de générer un nouveau maillage constitué des points conservés par le rognage et donc d'enregistrer le maillage clippé.


Deuxième fonctionnalité : Pour utiliser cette fonctionnalité, l'utilisateur doit ouvrir à la fois l'image et le maillage correspondant. En sélectionnant le maillage, il peut alors choisir d'appliquer l'action "Mesh Projection". Cette action récupère l'équation des plans correspondants aux coupes courantes de l'image, puis effectue ces mêmes coupes sur le maillages. Les contours obtenus sont superposés aux vues correspondantes. Si l'utilisateur modifie la position d'une des coupes, le contour correspondant est mis à jour automatiquement.

Avant l'ajout de la nouvelle fonctionnalité : pas de projections du maillage dans les 3 autres viewers
Après l'ajout de la nouvelle fonctionnalité : projections apparentes dans les 3 autres viewers

Conclusion

Nous avons créé deux actions intégrables au logiciel CamiTK. Nous avons dû à la fois comprendre le fonctionnement du logiciel et apprendre à utiliser des librairies en langage c++ pour pouvoir les implémenter. Nous avons essayer quelques modifications dans le cœur du logiciel pour améliorer l'interaction et l'ergonomie.

Ce projet représente une bonne expérience pour notre vie professionnelle. Nous avons pu prendre conscience des contraintes que la participation au développement d'un logiciel pouvait entraîner, au niveau des conventions et de la conception. De même, apprendre à se servir de librairies existantes est un travail peu réalisé pour les différents projets de l'ENSIMAG. Enfin, nous avons choisi d'utiliser les méthodes agiles tout au long de ce projet et cela nous a permis d'approfondir nos connaissances sur les techniques de gestion de projets.

Documents supplémentaires

Sujet du projet