Es gibt mehrere Bibliotheken, die DICOM lesen. In diesem Artikel wird jedoch erläutert, wie Sie mit SimpleITK medizinische Bilder wie MRT und CT lesen können.
SimpleITK ist eine Bibliothek, die die Verwendung von ITK, einem Format für die medizinische Bildanalyse, in Python und anderen Sprachen vereinfacht. (Https://en.wikipedia.org/wiki/SimpleITK) Es wird auch in Software wie 3D Slicer, ImageJ und ITK-Snap verwendet.
Beispielsweise werden MRT-Bilder häufig als DICOM-Daten verwendet, und Simple ITK kann DICOM direkt lesen. DICOM-Bilder werden häufig im NIFTI- (.nii, .nii.gz) oder NRRD-Format (.nrrd) gespeichert, können aber auch gelesen werden. (Https://simpleitk.readthedocs.io/en/master/IO.html) In Bezug auf die Ausgabe scheint es jedoch, dass es nicht im DICOM-Format ausgegeben werden kann.
Im SimpleITK-Format gelesene Bilder können angezeigt und zur Verarbeitung und Analyse in das ndarray-Format konvertiert werden. Der Zweck der Verwendung dieser Bibliothek besteht darin, dass Bilder im SimpleITK-Format in eine andere Bibliothek für die Bildanalyse namens PyRadiomics geladen werden mussten. Ich habe es als meine eigene Lernaufzeichnung zusammengefasst.
Sie können dasselbe mit Google Collaboratory tun, es ist jedoch schwierig, lokale DICOM-Daten einzeln hochzuladen. Daher haben wir die Umgebung erstellt.
conda install -c simpleitk simpleitk
Es kann normal mit pip installiert werden.
Es wird davon ausgegangen, dass mehrere DICOM-Bilder im selben Ordner gespeichert sind.
import SimpleITK as sitk
import numpy as np
import matplotlib.pyplot as plt
#Dicom laden
imgdir = "Verzeichnisname, in dem DICOM vorhanden ist"
sys.argv[1] = imgdir
reader = sitk.ImageSeriesReader()
dicom_names = reader.GetGDCMSeriesFileNames(sys.argv[1])
reader.SetFileNames(dicom_names)
image = reader.Execute() #Bild im ITK-Format gelesen
#Beim Lesen von NIFTI oder NRRD
image = sitk.ReadImage("Bildverzeichnis")
#Bildgröße abrufen
size = pre.GetSize()
print("Image size:", size[0], size[1], size[2])
#Konvertieren Sie das ITK-Format in das ndarray-Format
ndImage = sitk.GetArrayFromImage(image)
#Bild anzeigen
plt.imshow(ndImage[n], cmap='gray') #n zeigt für jede Scheibe
Im obigen Code haben wir die Größe überprüft und kurz angezeigt. Nach dem Laden eines Bildes gibt es verschiedene Verwendungszwecke. Da es sich beispielsweise um das 3D-ndarray-Format handelt, können Sie den Signalwert jedes Boxels mit Druck anzeigen. Ich möchte in einem anderen Artikel zusammenfassen, welche Art von Analyse und Ausgabe von Bildern durchgeführt werden kann.
Recommended Posts