Analyse d'images médicales avec Python 1 (Lire une image IRM avec SimpleITK)

introduction

Il existe plusieurs bibliothèques qui lisent DICOM, mais cet article explique comment utiliser SimpleITK pour lire des images médicales telles que l'IRM et la tomodensitométrie.

Qu'est-ce que Simple ITK

SimpleITK est une bibliothèque qui facilite l'utilisation de ITK, un format d'analyse d'images médicales, en Python et dans d'autres langages. (Https://en.wikipedia.org/wiki/SimpleITK) Il est également utilisé dans des logiciels tels que 3D Slicer, ImageJ et ITK-Snap.

Format d'image médicale

Par exemple, les images IRM sont souvent utilisées comme données DICOM, et Simple ITK peut lire DICOM directement. En outre, les images DICOM sont souvent enregistrées au format NIFTI (.nii, .nii.gz) ou NRRD (.nrrd), mais peuvent également être lues. (Https://simpleitk.readthedocs.io/en/master/IO.html) Cependant, en ce qui concerne la sortie, il semble qu'elle ne puisse pas être sortie au format DICOM.

Objectif

Les images lues au format SimpleITK peuvent être affichées et converties au format ndarray pour traitement et analyse. Le but de l'utilisation de cette bibliothèque est qu'il était nécessaire de charger des images au format SimpleITK sur une autre bibliothèque pour l'analyse d'images appelée PyRadiomics. Je l'ai résumé comme mon propre dossier d'apprentissage.

environnement

Vous pouvez faire la même chose avec Google Collaboratory, mais il est difficile de télécharger des données DICOM locales une par une, nous avons donc créé l'environnement.

Installez SimpleITK

conda install -c simpleitk simpleitk

Il peut être installé normalement avec pip.

Chargement des images

On suppose que plusieurs images DICOM sont enregistrées dans le même dossier.


import SimpleITK as sitk
import numpy as np
import matplotlib.pyplot as plt

#Chargement Dicom
imgdir = "Nom du répertoire dans lequel DICOM existe"
sys.argv[1] = imgdir
reader = sitk.ImageSeriesReader()

dicom_names = reader.GetGDCMSeriesFileNames(sys.argv[1])
reader.SetFileNames(dicom_names)
image = reader.Execute() #Image lue au format ITK

#Lors de la lecture de NIFTI ou NRRD
image = sitk.ReadImage("Répertoire d'images")

#Obtenir la taille de l'image
size = pre.GetSize()
print("Image size:", size[0], size[1], size[2])

#Convertir le format ITK au format ndarray
ndImage = sitk.GetArrayFromImage(image)
#Afficher l'image
plt.imshow(ndImage[n], cmap='gray') #n montre pour n'importe quelle tranche

Résumé et utilisation des images chargées

Dans le code ci-dessus, nous avons vérifié la taille et l'avons brièvement affichée. Il existe différentes utilisations après le chargement d'une image. Par exemple, comme il est au format 3D ndarray, vous pouvez voir la valeur du signal de n'importe quel boxel avec impression. Je voudrais résumer dans un autre article quel type d'analyse peut être fait et de sortie d'images.

Recommended Posts

Analyse d'images médicales avec Python 1 (Lire une image IRM avec SimpleITK)
Analyse de données avec python 2
[Diverses analyses d'images avec plotly] Visualisation dynamique avec plotly [python, image]
Analyse vocale par python
Traitement d'image avec Python
Analyse vocale par python
Analyse de données avec Python
[OpenCV / Python] J'ai essayé l'analyse d'image de cellules avec OpenCV
Lire le code QR à partir du fichier image avec Python (Mac)
Traitement d'image avec Python (partie 2)
[Python] Analyse morphologique avec MeCab
Lire les coordonnées de l'image avec Python-matplotlib
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Analyse des émotions par Python (word2vec)
Tri des fichiers image avec Python (2)
Tri des fichiers image avec Python (3)
Traitement d'image avec Python (partie 1)
Tweet avec image en Python
Tri des fichiers image avec Python
Analyse de squelette planaire avec Python
Analyse morphologique japonaise avec Python
Traitement d'image avec Python (3)
Analyse des secousses musculaires avec Python
[Python] Traitement d'image avec scicit-image
Lire des données json avec python
Découpez une image avec python
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
Analyse de la structure du squelette en trois dimensions avec Python
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
Analyse d'impédance (EIS) avec python [impedance.py]
Text mining avec Python ① Analyse morphologique
Traitement d'image avec la binarisation Python 100 knocks # 3
Faisons du scraping d'images avec Python
Lire des fichiers en parallèle avec Python
Trouver la similitude d'image avec Python + OpenCV
100 traitement d'image par Python Knock # 2 Échelle de gris
Analyse de données à partir de python (visualisation de données 1)
Introduction à l'analyse d'image opencv python
Charger fbx depuis python avec cinema4d
Analyse de régression logistique Self-made avec python
Analyse de données à partir de python (visualisation de données 2)
Envoyer l'image avec python et enregistrer avec php
Génération d'images dégradées avec Python [1] | np.linspace
Traitement d'image par Python 100 knock # 4 Binarisation Otsu (méthode d'analyse de discrimination)
Bases du traitement d'images binarisées par Python
Traitement d'image par Python 100 knock # 10 filtre médian
Analyse bidimensionnelle du flux de perméation saturée-insaturée avec Python
Créez une image factice avec Python + PIL.
100 traitement d'image avec Python Knock # 8 Max Pooling
Apprentissage automatique avec python (2) Analyse de régression simple
Introduction au remplissage d'image Python Remplissage d'image à l'aide d'ImageDataGenerator
Programme d'analyse des contraintes FEM 2D par Python
[C] [python] Lire avec AquesTalk sous Linux
Lisons le fichier RINEX avec Python ①
Utiliser le chiffrement de la bibliothèque de chiffrement avec l'image Python de Docker
Traitement d'image avec Python et OpenCV [Tone Curve]
Traitement d'image par Python 100 knock # 12 motion filter
Acquisition d'images depuis une caméra avec Python + OpenCV
Analyse des tweets avec Python, Mecab et CaboCha