فایل های DICOM را برای تصویربرداری پزشکی رمزگشایی کنید

بررسی اجمالی

این آموزش نشان می دهد که چگونه به استفاده tfio.image.decode_dicom_image در TensorFlow IO برای رمزگشایی فایل های با DICOM TensorFlow.

راه اندازی و استفاده

تصویر DICOM را دانلود کنید

تصویر DICOM استفاده در این آموزش از است NIH قفسه سینه مجموعه داده اشعه ایکس .

NIH به قفسه سینه مجموعه داده اشعه ایکس شامل 100.000 تصاویر د-شناسایی از رادیوگرافی قفسه سینه در فرمت PNG، ارائه شده توسط موسسه ملی بهداشت مرکز بالینی و می تواند از طریق دانلود از این لینک .

گوگل ابر همچنین یک نسخه DICOM از تصاویر موجود در فراهم می کند ابر ذخیره سازی .

در این آموزش، شما یک فایل نمونه از مجموعه داده از دانلود مخزن گیتهاب

  • Xiaosong Wang، Yifan Peng، Le Lu، Zhiyong Lu، محمدهادی باقری، رونالد سامرز، ChestX-ray8: پایگاه داده اشعه ایکس قفسه سینه در مقیاس بیمارستان و معیارهای طبقه‌بندی ضعیف نظارت شده و محلی‌سازی بیماری‌های شایع قفسه سینه، IEppEE CVPR, IEppEE CVPR, -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

بسته های مورد نیاز را نصب کنید و زمان اجرا را مجددا راه اندازی کنید

try:
 
# Use the Colab's preinstalled TensorFlow 2.x
 
%tensorflow_version 2.x
except:
 
pass
pip install tensorflow-io

رمزگشایی تصویر 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

png

رمزگشایی فراداده DICOM و کار با برچسب ها

decode_dicom_data رمز گشایی اطلاعات برچسب. dicom_tags حاوی اطلاعات مفید سن و جنس بیمار، به طوری که شما می توانید DICOM برچسب ها مانند استفاده از dicom_tags.PatientsAge و dicom_tags.PatientsSex . tensorflow_io همان نماد برچسب را از بسته 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