MatLab pour les radiologues et les étudiants

Bases de programmation et algorithmique avec MatLab

Travailler ses images médicales grâce à MatLab

Introduction

  • MatLab = Matrix Laboratory
  • Langage de programmation simple, non compilable, rapide, universel
  • Multiplateforme (Mac, PC, Linux)
  • Importante communauté d’utilisateurs
  • Apprentissage rapide
  • Pourquoi MatLab et pas un autre langage ?? => nous ne sommes pas programmateurs !

Présentation générale

matlab

  • Le menu du haut est similaire à la plupart des programmes
  • Le dossier de travail, est le dossier où sont contenus vos fichiers DICOM, images, données, etc.
  • La fenêtre de commande est l’espace où l’on tape les lignes de commande qui exécutent des actions
  • La fenêtre de mémoire de travail affiche le nom des constantes contenant les valeurs générées par le programme, leur taille et leur type de contenu
  • La fenêtre d’historique répertorie toutes vos dernières actions

Pour bien commencer avec MatLab

  • Il faut d’abord se placer dans son dossier de travail dans la fenêtre de gauche en cliquant sur la double flèche <<
  • Celui-ci contient les fichiers que vous souhaitez traiter
  • Nous allons ensuite demander à MatLab d’effectuer quelques petits calculs pour se familiariser avec son utilisation

Opérations numériques classiques

  • Commençons par la base de la base. Faire une addition. Rien de plus simple. Il faut considérer que MatLab n’est rien de plus qu’une supercalculette.
  • Dans la fenêtre de commandes nous allons lui demander de résoudre 36 + 44 (je sais que vous avez déjà trouvé la réponse !)
  • Pour cela il suffit de taper 36 + 44 dans la fenêtre de commande

>> 36 + 44

ans =

   80

  • Quand je disais que c’est facile de programmer, maintenant vous me croyez
  • Vous pouvez aussi soustraire, multiplier ou diviser
  • Deux remarques à ce niveau :
    • MatLab est un logiciel anglo-saxon, les virgules sont remplacées par des points
    • Le signe de la multiplication est l’étoile *

>> 34-52

ans =

   -18

>> 1.5 * 4

ans =

     6

>> 12 / 4

ans =

     3

  • Combinons les opérations
  • xemple :

>> 1 - (2 + 5.2)*10 / (5^3)

ans =

   0.4240

 

Stocker une variable de travail

  • Bon, c’est intéressant de pouvoir faire des opérations numériques, mais il faut bien ranger les résultats quelque part si on veut pouvoir les réutiliser après (à moins d’avoir une mémoire d’ordinateur, ce qui n’est généralement pas le cas)
  • Nous allons donc stocker les résultats dans ce qu’on appelle des « variables »
  • Pour comprendre la suite, il faut assimiler trois notions très simples. Considérons qu’une variable soit un pot, rangé sur une étagère de cuisine.
    • Une variable a un nom unique sensible à la casse, c’est l ’étiquette qui est collée sur le pot (les majuscules sont prises en compte, Sel n’est pas sel)
    • Une variable à un type, c’est la forme du pot, qui du coup ne peut pas contenir n’importe quel contenu (en fait on indique si la variable contiendra des nombres entiers, des nombres réels, du texte ou autre chose, ceci conditionnera la quantité de mémoire utilisée par votre ordinateur pour stocker votre variable)
    • Une variable à un contenu dont vous pouvez récupérer la valeur à n’importe quel moment. Je peux décider d’ouvrir mon pot et de prendre du Sel
  • Tout ça n’est qu’une question de gout
  • Par exemple nous allons stocker dans la variable nommée A la valeur de l’opération à droite du signe =
  • Notez que ^ correspond à la mise en puissance. Ici 5 à la puissance 3
  • La variable A contient la valeur 0.4240
  • Pour interroger MatLab et connaitre la valeur de A, il suffit de taper A
  • On peut ensuite combiner les opérations comme avec B

>> A = 1 - (2 + 5.2)*10 / (5^3)

A =

   0.4240

>> A

A =

   0.4240

>> B = 2 * A

B =

   0.8480

 

Lire une image DICOM avec MatLab

  • Bon, tout ça c’est très bien me direz vous, mais quel rapport avec la radiologie ?
  • J’y viens
  • En imagerie médicale, les images générées par les modalités sont dans un format particulier nommé DICOM
  • Chaque fichier image a pour particularité de contenir systématiquement 2 informations
    • Le header, une partie textuelle qui contient le nom du patient, son age, la modalité, etc
    • L’image en elle-même, généralement en noir et blanc, non compressée
  • Pour lire une image DICOM entièrement, il faut donc lire ces 2 informations
  • Arrivé ici, vous savez faires quelques opérations simples avec MatLab et stocker vos résultats en mémoire. Je vous conseille de bien vous familiariser avec ces notions avant de passer à ce qui suit.
  • Nous allons apprendre à lire un fichier DICOM. Si vous ne savez pas ce qu’est un fichier DICOM, disons que c’est le fichier qui contient votre image médicale. Il est constitué de 2 parties. La première appelée header contient les informations concernant votre patient et l’examen (NOM, AGE, MODALITE, DATE DE L’EXAMEN, etc.).
  • La seconde contient l’image en elle-même. Elle est stockée sous la forme d’une matrice et chaque pixel est codé sous la forme d’un nombre.
  • Placez vous dans le dossier contenant votre fichier. Tapez la commande suivante. Votre image est alors décodée.

>> dicomread(’image_528.dcm')

   17     12     18     16     14     19     19     13     13     13     16     10     16     15

     17     17     20     12     14     16     15     14     17     15     21     20     12     16

     12     14     19     19     14     17     18     10     16     16     17     23     15     20

     11     16     13     20     16     13     13     13     13     21     15     18     18     16

     14     15     14     15     13     21     15     15     21     10     16     15     10     16

     15     20     14     13     13     20     14     11     11     17     14     17     19     19

     13     15     19     12     14     15     12     16     17     17     13     19     17     19

     15     20     14     18     17     13     17     17     15     16     17     10     15     13

     12     19     14     19     11     16     14     15     14     17     14     16     21     8

     10     23     15     18     15     14     15     13     14     16     16     18     17     10

     19     11     15     19     16     13     18    

 

  • Si vous rajoutez « ; » à la fin, l’image est lue mais MatLab n’affiche pas les valeurs de tous les pixels

>> dicomread(’image_528.dcm');

>>

  • L’image est lue mais pas stockée

>> A = dicomread('image_528.dcm');

>>

  • La variable A contient l’image lue
  • Bravo ! Vous venez de lire votre première image DICOM
  • Peaufinons un peu la technique
  • Commençons par la ranger dans une variable pour pouvoir la réutiliser

>> image1 = dicomread(’image_528.dcm’)

  • Ensuite, pas besoin d’afficher le contenu sous forme de chiffres. Nous pouvons cacher le résultat de la lecture en terminant les commandes par ;

>> image1 = dicomread(’image_528.dcm’);

  • Regardez dans le la mémoire de travail en haut à droite, vous devez voir apparaître votre image. On peut y lire son nombre, la taille de la matrice et le type (Cf. Stocker une variable)

Afficher une image

>> imshow(image1,’DisplayRange’,[])

>>

  • hop

matlab2

>> imagesc(A)

>>

  • matlab2

A suivre…

Prochaine étape : réaliser une soustraction

Si vous avez des questions ajoutez un commentaire à cet article