# 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

> 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

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
:::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

> 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
:::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

## 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
:::info
ITK permet de traiter des images qui ne rentrent pas en memoire
:::

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

:::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

## 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
:::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

> 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
:::info
Algo qui prend en consideration les intensites mais aussi les contours
:::


:::warning
ITK ne gere pas le streaming sur les algos iteratifs
:::
## Shape detection


# Recalage
:::info
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
:::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

:::warning
**Probleme**
Les 2 images doivent avoir la meme intensite (relation lineaire)
:::
### Cross-Correlation
:::info
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:

:::info
**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

:::danger

:::



# Quiz
## Premiere question
On a 2 images du meme patient

## Deuxieme question

- [ ] a) 2.0
- [X] b) 1.0
- [ ] c) 0.5
:::success
Toujours reflechir dans le domaine physique, le patient a toujours le meme cerveau
:::