Ver en TensorFlow.org | Ejecutar en Google Colab | Ver fuente en GitHub | Descargar cuaderno |
Descripción general
Este tutorial muestra cómo utilizar tfio.image.decode_dicom_image
en TensorFlow IO para decodificar los archivos DICOM con TensorFlow.
Configuración y uso
Descargar imagen DICOM
La imagen DICOM utilizado en este tutorial es del conjunto de datos de rayos X NIH pecho .
El conjunto de datos de rayos X de tórax NIH consta de 100.000 imágenes de identificados de radiografías de tórax en formato PNG, proporcionados por el NIH Clinical Center y puede ser descargado a través de este enlace .
Google Cloud también ofrece una versión DICOM de las imágenes, disponible en el almacenamiento en la nube .
En este tutorial, se descarga un archivo de ejemplo del conjunto de datos de la cesión temporal de GitHub
- Xiaosong Wang, Yifan Peng, Le Lu, Zhiyong Lu, Mohammadhadi Bagheri, Ronald Summers, ChestX-ray8: Base de datos de rayos X de tórax a escala hospitalaria y puntos de referencia sobre la clasificación y localización de enfermedades tórax comunes con supervisión débil, IEEE CVPR, págs. 3462 -3471, 2017
curl -OL https://github.com/tensorflow/io/raw/master/docs/tutorials/dicom/dicom_00000001_000.dcm
ls -l dicom_00000001_000.dcm
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 164 0 164 0 0 600 0 --:--:-- --:--:-- --:--:-- 598 100 1024k 100 1024k 0 0 1915k 0 --:--:-- --:--:-- --:--:-- 1915k -rw-rw-r-- 1 kbuilder kokoro 1049332 Nov 22 03:47 dicom_00000001_000.dcm
Instale los paquetes necesarios y reinicie el tiempo de ejecución
try:
# Use the Colab's preinstalled TensorFlow 2.x
%tensorflow_version 2.x
except:
pass
pip install tensorflow-io
Decodificar imagen DICOM
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
import tensorflow_io as tfio
image_bytes = tf.io.read_file('dicom_00000001_000.dcm')
image = tfio.image.decode_dicom_image(image_bytes, dtype=tf.uint16)
skipped = tfio.image.decode_dicom_image(image_bytes, on_error='skip', dtype=tf.uint8)
lossy_image = tfio.image.decode_dicom_image(image_bytes, scale='auto', on_error='lossy', dtype=tf.uint8)
fig, axes = plt.subplots(1,2, figsize=(10,10))
axes[0].imshow(np.squeeze(image.numpy()), cmap='gray')
axes[0].set_title('image')
axes[1].imshow(np.squeeze(lossy_image.numpy()), cmap='gray')
axes[1].set_title('lossy image');
2021-11-22 03:47:53.016507: E tensorflow/stream_executor/cuda/cuda_driver.cc:271] failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
Decodificar metadatos DICOM y trabajar con etiquetas
decode_dicom_data
decodifica información de la etiqueta. dicom_tags
contiene información útil como la edad del paciente y el sexo, lo que puede utilizar las etiquetas DICOM como dicom_tags.PatientsAge
y dicom_tags.PatientsSex
. tensorflow_io toma prestada la misma notación de etiqueta del paquete pydicom dicom.
tag_id = tfio.image.dicom_tags.PatientsAge
tag_value = tfio.image.decode_dicom_data(image_bytes,tag_id)
print(tag_value)
tf.Tensor(b'58', shape=(), dtype=string)
print(f"PatientsAge : {tag_value.numpy().decode('UTF-8')}")
PatientsAge : 58
tag_id = tfio.image.dicom_tags.PatientsSex
tag_value = tfio.image.decode_dicom_data(image_bytes,tag_id)
print(f"PatientsSex : {tag_value.numpy().decode('UTF-8')}")
PatientsSex : M