Fournir une chaîne de traitement complète (registration + segmentation + visualisation) pour deux volumes IRM (.nrrd), incluant l’alignement, l’extraction d’une région d’intérêt et le calcul du volume segmenté.
project_root/
├── Data/
│ ├── case6_gre1.nrrd
│ └── case6_gre2.nrrd
├── src/
│ ├── registration.py
│ ├── segmentation.py
│ └── visualisation.py
├── main.py
├── README.md
└── requirements.txt
- Librairie : ITK (Insight Toolkit)
- Transformation :
VersorRigid3DTransform(translation + rotation) - Optimiseur :
RegularStepGradientDescentOptimizerv4- Learning rate :
4.0 - Step minimum :
0.001 - Itérations :
100
- Learning rate :
- Métrique :
MattesMutualInformationImageToImageMetricv4- Nombre de bins :
32(pour histogramme)
- Nombre de bins :
- Stratégie multi-résolution (pyramide) :
shrink_factors = [4, 2, 1]smoothing_sigmas = [2.0, 1.0, 0.0]
- Poids sur les paramètres : rotation ×1000 par rapport aux translations
- Technique :
ConnectedThresholdImageFilter(ITK) - Plage de seuils : ±10% autour de la valeur du point seed
- Seed : sélectionné manuellement dans un plan (Z,X) avec
matplotlib.ginput() - Visualisation slice : par
VTKavec glissière interactive - Résultat : masques binaires en 3D
- Type : rendu volumique GPU (
vtkGPUVolumeRayCastMapper) - Rendu surfacique :
vtkMarchingCubessur image et masques - Affichage combiné : IRM + 2 masques avec rendu 3D et transparence
- Calcul de volume : via
vtkImageAccumulate(mm³)
- Réglage délicat des paramètres d’optimisation pour éviter les mauvais minima
- Nécessité d’un bon placement du seed (risque de fuite du contour)
- Interopérabilité ITK <-> VTK (types, dimensions, repères)
- Conversion des slices 3D vers 2D pour affichage ou interaction utilisateur
- Images correctement alignées
- Masques 3D extraits à partir d’un seul clic utilisateur
- Volumes comparés (en mL) entre deux IRM pour détection de changement
- Affichage 3D interactif avec
vtkRenderWindowInteractor(rouge = ancienne tumeur et vert = nouvelle tumeur)
-
Installez les dépendances :
pip install -r requirements.txt
-
Placez vos fichiers
.nrrddans le dossierData/. -
Exécutez le script principal :
python main.py
-
Suivez les instructions pour :
- Choisir une slice via glissière VTK
- Sélectionner une seed sur l’image slice (clic matplotlib)
- Visualiser les résultats en 3D