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