Imagerie médicale volumique en LabVIEW
Transcription
Imagerie médicale volumique en LabVIEW
GBM – Imagerie numérique – Imagerie Volumique en LabVIEW Imagerie médicale volumique en LabVIEW I – Objectif Nous allons travailler sur une image volumique (un volume numérique (VN)) issue d’une acquisition IRM de la tête. Il s’agit d’un volume de 128 coupes composées chacune de 256*256 pixels (ou plutôt voxels). Le volume est stocké dans un fichier au format NIfTI (extension « .nii ») très utilisé dans le domaine de la neuroimagerie. (http://nifti.nimh.nih.gov/) L’objectif de ce TP est de se familiariser avec ce volume et de l’explorer au mieux, selon les plans « classiques » de l’imagerie médicale : axial, coronal, transversal et plus si affinités… On considèrera que les coupes « originales » (direction d'acquisition) sont dans le plan sagital. De plus, lors de l’interprétation – visuelle – des résultats, il faudra prendre garde au fait que les voxels présents ici ne sont pas cubiques (anisotropie)…… Enfin, et pour finir, le codage de l’intensité (luminance) de ces images monochromes et réalisé sur des entiers codés sur 16 bits (short) et non des octets simples (char). La dynamique est alors plus importante. Il sera important d'en tenir compte lors de l'affichage. II – Mise en oeuvre On pourra créer un nouveau répertoire (Volume par exemple) et y créer un nouveau VI nommé « DisplayNIfTI » On créera sur la face avant 3 « conteneurs d'image » destinés chacun une visualisation selon un plan radiologique (axial, coronal, sagital). a – Lecture d'une image volumique NIfTI Le sous-VI « ReadNIfTIImage_NII » vous est fourni, dans une librairie LabVIEW : « NeuroImage.llb ». Il ouvre le fichier « .nii » donné en entrée (sinon, il utilise une boite de dialogue) et renvoie plusieurs données dont : – – – Un tableau d'entiers : « Dim » dont les indices 1, 2 et 3 renvoient vers les trois dimensions du volume numérique (nombre de coupes et dimensions en X et Y de chaque de ces coupes) Un indicateur « datatype » du type de données codant les valeurs des voxels de l'image 4 sorties possibles selon la valeur de « datatype » 1 GBM – Imagerie numérique – Imagerie Volumique en LabVIEW – L'image à afficher à l'écran (en niveaux de gris sur 8 bits) L'aide en ligne de ce sous-VI figure ci-dessous. Utilisez au mieux ce VI (et ses sous-VI) afin de lire le fichier image NII. Servez-vous également des données dimensionnelle pour fixer la taille des conteneurs d'image de façon optimale. III – Exploration et affichage du VN L’exploration et l’affichage du VN se fera en utilisant trois « sliders » (associées aux trois images) permettant – pour chacun des trois plans de vue – de naviguer dans le volume, de façon indépendante les uns par rapport aux autres. a – Affichage des coupes natives (sagitales) Ecrire un sus-VI « GetNativeSlice » qui prendra en entrée le tableau des valeurs des voxels du VN, les trois dimensions de ce volume et le numéro de la coupe (sagitale) que l'on souhaite extraire. Il renvoie en sortie le tableau des valeurs des voxels de cette coupe. Le VN êtant justement codé dans le plan sagital (128 coupes), cela ne devrait pas trop poser de problème. On pourra utiliser un slider permettant de régler l'intensité d'affichage de la coupe. Utilisez la structuration des cluster « Image » afin d'afficher cette coupe. b – Affichage des coupes axiales 2 GBM – Imagerie numérique – Imagerie Volumique en LabVIEW Le principe est le même. Un peu plus compliqué à cause de l'ordre de stockage des voxels. Il y a Dim2 images à afficher. Elles sont de dimension Dim1*Slices (a priori, ici, Dim1=Dim2). Un peu de brainstorming pour les calculer (créez un sous-VI GetAxialSlice sur le même modèle que le précédent) et les afficher. c – Affichage des coupes coronales Idem. Dans dernier plan perpendiculaire. IV – A vous de jouer Voici pour info une proposition d'interface : Bon courage et bon TP.... 3