# 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](https://www.itk.org) :::warning 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 ![](https://i.imgur.com/EAzYYMc.png) > Vraie tranche d'Humain :::warning 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) :::info **ITK** Boite a outils d'algorithmes de traitement d'image ::: :::danger 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 ![](https://i.imgur.com/WSnWYG7.png) Combinaison industriels/academique # Traitement d'image ## Segmentation ![](https://i.imgur.com/7sw6FVX.png) ![](https://i.imgur.com/miUFhsx.png) Aujourd'hui, le traitement d'image sert a **ameliorer** le traitement d'image. *Pourquoi extraire la taille des ventricules ?* ![](https://i.imgur.com/2GyoaNC.png) 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 :::success 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 ![](https://i.imgur.com/5vOnIgf.png) > Le probleme, c'est que le patient est vivant # Integrer ITK dans une application ![](https://i.imgur.com/fxkhZpu.png) > On ne va pas fair d'interface graphique pendant le TP ## Generic programming :::info ITK utilise beaucoup les template et est tres tres generique ::: :::warning Ca le rend un peu dur a utiliser ::: - La STL en C++ - Abstraction des types et actions ![](https://i.imgur.com/CzpTkAO.png) ## C++ - Utilisation de namespaces - Utilisaiton de smart pointers - Propre pointeurs de ITK - Gestion des exceptions ## Python Types ![](https://i.imgur.com/hTiqrCx.png) Il faut connaitre le type de pixel sur lequel on travaille ## Streaming :::info ITK permet de traiter des images qui ne rentrent pas en memoire ::: ![](https://i.imgur.com/PSYE9LQ.png) Le streaming d'ITK partitionne notre grille et applique nos filtres ![](https://i.imgur.com/QKVIdJE.png) :::warning 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) :::success Nos donnees nous appartiennent, les hopitaux sont obliges de nous donner nos scanner/IRM etc. ::: ### Pour le TP :::danger On va travailler en TP sur DICOM ::: - Pas en 3D ## Gestion de la memoire ![](https://i.imgur.com/RfTHOfb.png) ## Pipeline de traitement Un filtre prend une image en entree et une autre en sortie ![](https://i.imgur.com/v8LWQ5c.png) On combine les filtres entre eux ![](https://i.imgur.com/LtGjaQl.png) 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 ? ![](https://i.imgur.com/eVS4CT9.png) > La tranche est a l'envers car le patient est sur le dos ## Confidence Connected ![](https://i.imgur.com/WRR9Zgc.png) On defini un point (un germe) ![](https://i.imgur.com/CuTCsmS.png) > On agrandit le point :::info 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 ![](https://i.imgur.com/RP1lqBn.png) > 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 ![](https://i.imgur.com/5d6kbPI.png) *Quelle methode est la meilleure ?* Tout depend de notre image, ce que veut le practicien, etc. ## Watershed concept :::info Algo qui prend en consideration les intensites mais aussi les contours ::: ![](https://i.imgur.com/r80n8zc.png) ![](https://i.imgur.com/d0nA5uE.png) :::warning ITK ne gere pas le streaming sur les algos iteratifs ::: ## Shape detection ![](https://i.imgur.com/lcPrpzv.png) ![](https://i.imgur.com/GNsKIyf.png) # Recalage :::info Mise en correspondance d'images afin de pouvoir agreger leurs informations ::: ![](https://i.imgur.com/BMDj7iU.png) Exactement le meme cas pour les scanners ![](https://i.imgur.com/Bb9NHbp.png) > 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 ![](https://i.imgur.com/88Tradi.png) Recalage d'une eclipse de Lune (fait a la main sur PowerPoint par Julien Jommier) ![](https://i.imgur.com/NBSpq9z.png) ![](https://i.imgur.com/A3lDZHu.png) ## 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 ![](https://i.imgur.com/gTVGOgH.png) ![](https://i.imgur.com/iGSvNJJ.png) ## 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 ![](https://i.imgur.com/rN67gES.png) ### Affine ![](https://i.imgur.com/lml7Yl9.png) ### Quelle tranformation ? ![](https://i.imgur.com/HANbgrb.png) ![](https://i.imgur.com/ZU9L0iu.png) *Quelle transformation a ete faite sur cette image ?* Homothetie avec juste un parametre ### Transformations Non-Lineaires ![](https://i.imgur.com/iGnQShn.png) - Transformations elastiques ou non-rigides - Exemples: - B-Splines (Combinaison lineaire de Spline) - Thin-plate splines ![](https://i.imgur.com/5t1y3xd.png) ## Metrique :::info Mesures de similarite(s) entre la cible fixe et la source en mouvement ::: - Recalage iconique - Somme des differences au carre - Coefficient de correlation ### SSD ![](https://i.imgur.com/Zf8tVhf.png) :::warning **Probleme** Les 2 images doivent avoir la meme intensite (relation lineaire) ::: ### Cross-Correlation :::info Convolution sans inverser le signal ![](https://i.imgur.com/HoychQZ.png) ::: - $\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: ![](https://i.imgur.com/YfsQALV.png) :::info **Entropie** Ou est presente l'information dans notre volume ::: - Tres serree: peu d'entropie - Un peu partout: beaucoup d'entropie ![](https://i.imgur.com/QAfgwa9.png) On a 2 images qui ont bouge, l'histogramme commence a etre diffus: ![](https://i.imgur.com/efvyIqO.png) ![](https://i.imgur.com/Q7VKH67.png) Soit $g(x,y)$ la valeur de l'histogramme conjoint au point [x,y]: ![](https://i.imgur.com/bQ7qglv.png) ![](https://i.imgur.com/j4oR6u0.png) Si on a 2 images alignees (meme patient): ![](https://i.imgur.com/yBWBfqZ.png) ## Optimiseur - Descente de gradient - Gradient conjugue - Algo genetiques - Powell - LBFGS ## Interpolateur ![](https://i.imgur.com/g1MD5Qx.png) :::danger ![](https://i.imgur.com/uKGxwdK.png) ::: ![](https://i.imgur.com/0cbCVsT.png) ![](https://i.imgur.com/zAXdKtM.png) ![](https://i.imgur.com/JlQ989t.png) # Quiz ## Premiere question On a 2 images du meme patient ![](https://i.imgur.com/g9iMQiM.png) ## Deuxieme question ![](https://i.imgur.com/JftyvQy.png) - [ ] a) 2.0 - [X] b) 1.0 - [ ] c) 0.5 :::success Toujours reflechir dans le domaine physique, le patient a toujours le meme cerveau :::