Lien de la note Hackmd
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
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
Combinaison industriels/academique
Traitement d’image
Segmentation
Aujourd’hui, le traitement d’image sert a ameliorer le traitement d’image.
Pourquoi extraire la taille des ventricules ?
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
Le probleme, c’est que le patient est vivant
Integrer ITK dans une application
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
C++
- Utilisation de namespaces
- Utilisaiton de smart pointers
- Propre pointeurs de ITK
- Gestion des exceptions
Python Types
Il faut connaitre le type de pixel sur lequel on travaille
Streaming
ITK permet de traiter des images qui ne rentrent pas en memoire
Le streaming d’ITK partitionne notre grille et applique nos filtres
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
Pipeline de traitement
Un filtre prend une image en entree et une autre en sortie
On combine les filtres entre eux
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 ?
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
- $\bar f=$ moyenne de $f$
- $\sigma 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