VTK-ITK: Traitement d'Image avec 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
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
- 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
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
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
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)

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


- 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

Affine



Quelle transformation a ete faite sur cette image ?
Homothetie avec juste un parametre

- 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

- moyenne de
- ecart type de
- Relation affine entre les intensites
- 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 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

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