Try   HackMD

VTK-ITK: Traitement d'Image avec ITK

Insight Toolkit (ITK)

  • Open source
  • Ecrite en C++
  • Existe depuis 2000
  • Environ 267 developpeurs
  • Plus de 500k telechargements
  • Investissement de la part du NIH: ~14M
  • Algorithmes de traitement d'image seulement
  • Pas de UI ou visualisation
  • www.itk.org

A chaque fois qu'on utilise une bibliotheque open source. il faut le mentionner

3 grandes famille de modalites:

  • IRM
    • Rapide et non nocif (a notre connaissance)
    • On voit tres bien la matiere blanche/grise du cerveau
  • Scanner
    • CB scanner, radio (rayons X)
    • Attentions aux rayons X
    • On voit tres biens les os
  • Ultrasons
    • Si on attend un enfant par exemple
    • Non nocifs a notre connaissance MAIS besoin de signer pour une echographie une decharge (au cas ou)

Visible human

Un condamne a mort aux US a donne son corps a la science

  • A ete scanner en HD avec les rayons X (apres sa mort)
  • Son corps a ete congele et decoupe en tranche
  • Chaque tranche a ete photographiee

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Vraie tranche d'Humain

Projet tres controverse

MAIS

  • Tout le monde a acces aux images
  • Tres utile pour la science
  • 500 Go (pour les annees 2000, quantite enorme de donnees)

Pourquoi CMAKE a ete cree

  • Utilisation des images ci-dessus par tout le monde
  • Chacun fait son algo dans son coin
  • Gouvernement US a voulu tout centraliser "visible human toolkit" (aujourd'hui ITK)

ITK
Boite a outils d'algorithmes de traitement d'image

Il n'y a pas d'outils de visualisation/interface graphique dans ITK

Ca reste une boite a outils et c'est pour que ce soit portable

Developpeurs initiaux d'ITK

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Combinaison industriels/academique

Traitement d'image

Segmentation

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Aujourd'hui, le traitement d'image sert a ameliorer le traitement d'image.

Pourquoi extraire la taille des ventricules ?

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

La taille des ventricules c'est important

  • Lie a l'autisme
    • Evolution de la taille des ventricules: predire l'autisme rapidement chez l'enfant
    • Verifier que les ventricules grandissent correctement

Plus tot on arrive a diagnostique, plus tot on arrive a traiter

Exemple d'une tumeur: permet de detecter la tumeur + pour le traitement pour l'enlever

Recalage

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Le probleme, c'est que le patient est vivant

Integrer ITK dans une application

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

On ne va pas fair d'interface graphique pendant le TP

Generic programming

ITK utilise beaucoup les template et est tres tres generique

Ca le rend un peu dur a utiliser

  • La STL en C++
  • Abstraction des types et actions

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

C++

  • Utilisation de namespaces
  • Utilisaiton de smart pointers
    • Propre pointeurs de ITK
  • Gestion des exceptions

Python Types

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Il faut connaitre le type de pixel sur lequel on travaille

Streaming

ITK permet de traiter des images qui ne rentrent pas en memoire

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Le streaming d'ITK partitionne notre grille et applique nos filtres

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Si on a besoin de quelque chose (bordure, etc) coupe par un filtre

  • En maillage: les ghost cells
  • Similaire en ITK

Exemple: convolution sur chaque partie partitionnee mais bordure coupee entre 2

Quelle taille pour une image d'un scanner ?
Entre 10 et 25 Mo (meme decompresse, rentre largement en memoire)

Nos donnees nous appartiennent, les hopitaux sont obliges de nous donner nos scanner/IRM etc.

Pour le TP

On va travailler en TP sur DICOM

  • Pas en 3D

Gestion de la memoire

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Pipeline de traitement

Un filtre prend une image en entree et une autre en sortie

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

On combine les filtres entre eux

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

En tant que traiteur d'image, soit:

  • On creer un nouveau filtre
  • On utilise ce qui existe deja et on combine les filtres

Segmentation

Comment segmenter cette tumeur ?

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

La tranche est a l'envers car le patient est sur le dos

Confidence Connected

On defini un point (un germe)

On agrandit le point

Croissance de region

Qu'est-ce qui est problematique sur ce genre d'algo ?
Le seed point a ete mis a la main

  • Pour un point ca va
  • Mais pour + (genre 15) c'est plus dur

Connected Threshold

A nous de definir upper bound et lower bound

Isolated connected

Demande 2 seeds (un germe a l'exterieur et un a l'interieur)

  • Calcul la moyenne

Quelle methode est la meilleure ?
Tout depend de notre image, ce que veut le practicien, etc.

Watershed concept

Algo qui prend en consideration les intensites mais aussi les contours

ITK ne gere pas le streaming sur les algos iteratifs

Shape detection

Recalage

Mise en correspondance d'images afin de pouvoir agreger leurs informations

Exactement le meme cas pour les scanners

La machine a gauche vaut ~60M d'euros

Si on veut combiner des scanners Rayons X et IRM, il faut faire du recalage

  • Sauf dans le scanner PET-CT

Recalage d'une eclipse de Lune (fait a la main sur PowerPoint par Julien Jommier)

Composants du recalage

  • Transformation
    • Si on a 2 images, comment est-ce qu'on transforme une image qui boufe pour l'aligner avec une autre image ?
  • Metrique (de mise en correspondances)
    • Quand est-ce qu'on est alignes ou non
  • Optimiseur
    • Descente de gradient

Transformation

  • Translations (deplacements)
    • conserve distances et angles orientes
    • 2 parametres
  • Rotations (isometrie)
    • conserve distances et angles
  • Homotheties (similitude)
    • conserve les rapports entre les distances
  • Affinites
    • conserve le parallelisme
    • 6 parametres
  • Non-lineaires

Transformations

Affine

Quelle tranformation ?

Quelle transformation a ete faite sur cette image ?

Homothetie avec juste un parametre

Transformations Non-Lineaires

  • Transformations elastiques ou non-rigides
  • Exemples:
    • B-Splines (Combinaison lineaire de Spline)
    • Thin-plate splines

Metrique

Mesures de similarite(s) entre la cible fixe et la source en mouvement

  • Recalage iconique
    • Somme des differences au carre
    • Coefficient de correlation

SSD

Probleme
Les 2 images doivent avoir la meme intensite (relation lineaire)

Cross-Correlation

Convolution sans inverser le signal

  • f¯=
    moyenne de
    f
  • σf=
    ecart type de
    f
  • Relation affine entre les intensites

Information mutuelle

  • Issue de la theorie de l'information
  • Relation statistique entre les intensites des 2 images
  • Densite conjointe de probabilite des niveaux de gris
  • Calcul d'un histogramme conjoint
  • Mesure d'entropie

Histogramme conjoint:

Entropie
Ou est presente l'information dans notre volume

  • Tres serree: peu d'entropie
  • Un peu partout: beaucoup d'entropie

On a 2 images qui ont bouge, l'histogramme commence a etre diffus:

Soit

g(x,y) la valeur de l'histogramme conjoint au point [x,y]:

Si on a 2 images alignees (meme patient):

Optimiseur

  • Descente de gradient
  • Gradient conjugue
  • Algo genetiques
  • Powell
  • LBFGS

Interpolateur

Quiz

Premiere question

On a 2 images du meme patient

Deuxieme question

  • a) 2.0
  • b) 1.0
  • c) 0.5

Toujours reflechir dans le domaine physique, le patient a toujours le meme cerveau