Medizinische Bildanalyse mit Python 1 (MRT-Bild mit SimpleITK lesen)

Einführung

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.

Was ist Simple ITK?

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.

Medizinisches Bildformat

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.

Zweck

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.

Umgebung

Sie können dasselbe mit Google Collaboratory tun, es ist jedoch schwierig, lokale DICOM-Daten einzeln hochzuladen. Daher haben wir die Umgebung erstellt.

Installieren Sie SimpleITK

conda install -c simpleitk simpleitk

Es kann normal mit pip installiert werden.

Bilder laden

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

Zusammenfassung und Verwendung des geladenen Bildes

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

Medizinische Bildanalyse mit Python 1 (MRT-Bild mit SimpleITK lesen)
Datenanalyse mit Python 2
[Verschiedene Bildanalysen mit Plotly] Dynamische Visualisierung mit Plotly [Python, Bild]
Sprachanalyse mit Python
Bildverarbeitung mit Python
Sprachanalyse mit Python
Datenanalyse mit Python
[OpenCV / Python] Ich habe versucht, Bilder mit OpenCV zu analysieren
Lesen Sie den QR-Code aus der Bilddatei mit Python (Mac).
Bildverarbeitung mit Python (Teil 2)
[Python] Morphologische Analyse mit MeCab
Lesen Sie die Bildkoordinaten mit Python-matplotlib
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Emotionsanalyse von Python (word2vec)
Sortieren von Bilddateien mit Python (2)
Sortieren von Bilddateien mit Python (3)
Bildverarbeitung mit Python (Teil 1)
Tweet mit Bild in Python
Bilddateien mit Python sortieren
Planare Skelettanalyse mit Python
Japanische morphologische Analyse mit Python
Bildverarbeitung mit Python (3)
Muskel-Ruck-Analyse mit Python
[Python] Bildverarbeitung mit Scicit-Image
Lesen von JSON-Daten mit Python
Schneiden Sie ein Bild mit Python aus
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
Dreidimensionale Skelettstrukturanalyse mit Python
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
Impedanzanalyse (EIS) mit Python [impedance.py]
Text Mining mit Python ① Morphologische Analyse
Die Bildverarbeitung mit Python 100 klopft an die Binärisierung Nr. 3
Lassen Sie uns mit Python Image Scraping durchführen
Lesen Sie Dateien parallel zu Python
Finden Sie Bildähnlichkeit mit Python + OpenCV
100 Bildverarbeitung mit Python Knock # 2 Graustufen
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Einführung in die Bildanalyse opencv python
Laden Sie fbx aus Python mitinema4d
Logistische Regressionsanalyse Selbst erstellt mit Python
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Sende Bild mit Python und speichere mit PHP
Erzeugung von Verlaufsbildern mit Python [1] | np.linspace
Bildverarbeitung mit Python 100 Knock # 4 Otsu-Binarisierung (Diskriminierungsanalyse-Methode)
Grundlagen der binärisierten Bildverarbeitung durch Python
Bildverarbeitung mit Python 100 Knock # 10 Medianfilter
Zweidimensionale Analyse des gesättigten und ungesättigten Permeationsflusses mit Python
Erstellen Sie mit Python + PIL ein Dummy-Image.
100 Bildverarbeitung mit Python Knock # 8 Max Pooling
Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
Einführung in das Auffüllen von Python-Bildern Auffüllen von Bildern mit ImageDataGenerator
2D FEM Stressanalyseprogramm von Python
[C] [Python] Lesen mit AquesTalk unter Linux
Lesen wir die RINEX-Datei mit Python ①
Verwenden Sie die Verschlüsselung der Verschlüsselungsbibliothek mit dem Python-Image von Docker
Bildverarbeitung mit Python & OpenCV [Tonkurve]
Bildverarbeitung mit Python 100 Knock # 12 Bewegungsfilter
Bildaufnahme von der Kamera mit Python + OpenCV
Tweet-Analyse mit Python, Mecab und CaboCha