Travailler avec des images DICOM en Python

Déclencheur

Lors du concours Kaggle, des images tomodensitométriques et des images DICOM de la poitrine sont sorties et je ne savais pas comment les gérer.

Ce que tu peux faire

・ Qu'est-ce qu'une image DICOM? ・ Comment afficher les images DICOM et gérer les données

Qu'est-ce qu'une image DICOM?

DICOM est une norme qui définit les formats des images médicales prises par CT, IRM, CR, etc. et le protocole de communication entre les dispositifs d'images médicales qui les traitent. wiki

Exemple d'utilisation

Installation

%pip install pydicom

l'ensemble de données contient des métadonnées

import pydicom
import matplotlib.pyplot as plt
from pydicom.data import get_testdata_files

filename = get_testdata_files('CT_small.dcm')[0]
dataset = pydicom.dcmread(filename)
print(dataset)

image.png

La valeur peut être affichée et accessible par nom de clé (.Rows) ou par numéro (0x0010,0x0010).

dataset[0x0010, 0x0010]
dataset.Rows

image.png

Jusqu'à ce que l'image s'affiche

pat_name = dataset.PatientName
display_name = pat_name.family_name + ", " + pat_name.given_name

print("Patient's name...:", display_name)
print("Patient id.......:", dataset.PatientID)
print("Modality.........:", dataset.Modality)
print("Study Date.......:", dataset.StudyDate)
print(dataset[0x0018, 0x0050])

if 'PixelData' in dataset:
    rows = int(dataset.Rows)
    cols = int(dataset.Columns)
    print("Image size.......: {rows:d} x {cols:d}, {size:d} bytes".format(
        rows=rows, cols=cols, size=len(dataset.PixelData)))
    if 'PixelSpacing' in dataset:
        print("Pixel spacing....:", dataset.PixelSpacing)

# use .get() if not sure the item exists, and want a default value if missing
print("Slice location...:", dataset.get('SliceLocation', "(missing)"))


# plot the image using matplotlib
plt.imshow(dataset.pixel_array, cmap=plt.cm.bone)
plt.show()

image.png

référence

pydicom

Recommended Posts

Travailler avec des images DICOM en Python
Exploitez LibreOffice avec Python
Gérer les sons en Python
Reconnaissance des nombres dans les images avec Python
Essayez de travailler avec des données binaires en Python
Débarrassez-vous des images DICOM en Python
Lire des caractères dans des images avec Python OCR
Convertissez des PDF en images en masse avec Python
Se débarrasser des images DICOM avec Python Partie 2
Essayez de travailler avec Mongo en Python sur Mac
[Introduction pour les débutants] Manipuler MySQL avec Python
Images en bordure avec python Partie 1
Encodage base64 des images en Python 3
Grattage au sélénium en Python
Grattage avec chromedriver en python
Débogage avec pdb en Python
Python: travailler avec Firefox avec du sélénium
Grattage avec du sélénium en Python
Tweet avec image en Python
Combiné avec ordinal en Python
Exemple de code spécifique pour travailler avec SQLite3 en Python
Tester avec des nombres aléatoires en Python
GOTO en Python avec Sublime Text 3
Scraping avec Selenium en Python (Basic)
Comment collecter des images en Python
Analyse CSS avec cssutils en Python
Ouvrez UTF-8 avec BOM en Python
Extraire du texte d'images avec Python
Publiez plusieurs images Twitter avec python
Animez plusieurs images fixes avec Python
Utiliser Python mis en pyenv avec NeoVim
Charger une image gif avec Python + OpenCV
Heatmap avec dendrogramme en Python + matplotlib
Lire des fichiers en parallèle avec Python
Générer un mot de passe pour le manuel avec python
Utiliser OpenCV avec Python 3 dans Window
Jusqu'à traiter de python dans Atom
Démarrez avec Python avec Blender
Extraction d'objets dans l'image par correspondance de modèles en utilisant OpenCV avec Python
Écrire de la documentation dans Sphinx avec Python Livereload
Obtenez des données supplémentaires vers LDAP avec python
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Essayez de vous connecter à qiita avec Python
Test de stress avec Locust écrit en Python
Python3> dans le mot clé> Vrai avec une correspondance partielle?
Contrôle exclusif avec fichier de verrouillage en Python
Surveillance des appareils effectuée par Python On-box de IOS-XE
Amplifiez les images pour l'apprentissage automatique avec Python
Dessinez Nozomi Sasaki dans Excel avec python
Conseils pour gérer les binaires en Python
Afficher Python 3 dans le navigateur avec MAMP
Capturer des images avec Pupil, python et OpenCV
Mettez les polices japonaises dans les images avec Colaboratory
Comment utiliser BigQuery en Python
Classe Trump en Python (avec comparaison)
Travailler avec OpenStack à l'aide du SDK Python
Manipulation d'Azure CosmosDB à partir de Python Part.2
Gérer les "années et mois" en Python
Traiter plusieurs listes avec for en Python