Как создать TFRecords из образов DICOM? - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь использовать API обнаружения объектов Tensorflow для обнаружения аномалий на медицинских изображениях. Я видел, что мне нужно создать TFrecords, чтобы обучить свою сеть, но я не знаю, как создать его из образов DICOM. Я следую руководству https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/training.html#converting -from-csv-to-record , но я не могу понять, что установить как «формат изображения», это должно быть bpng или bjpg, но что делать с DICOM? Мои изображения - uint16, одноканальный.

Ответы [ 2 ]

0 голосов
/ 21 июня 2020
Пакет

tensorflow_io предоставляет для этой цели декодер изображений DICOM. Вы можете использовать функцию decode_dicom_image() для преобразования изображения DICOM в тензор. В следующих строках кода показаны различные способы использования этой функции.

# install tensorflow_io, in terminal
# pip install tensorflow-io

import tensorflow as tf
import tensorflow_io as tfio

image_bytes = tf.io.read_file('dicom_00000001_000.dcm')

# DICOM reading without any error
image = tfio.image.decode_dicom_image(image_bytes, dtype=tf.uint16)

# skipping in case of error
skipped = tfio.image.decode_dicom_image(image_bytes, on_error='skip', dtype=tf.uint8)

# lossy reading in case of error
lossy_image = tfio.image.decode_dicom_image(image_bytes, scale='auto', on_error='lossy', dtype=tf.uint8)

Дополнительные сведения см. В этом руководстве по TensorFlow .

0 голосов
/ 19 июня 2020

Вы должны преобразовать ваше изображение в байты, примерно так

image = tf.io.read_file(path)    
image = tf.image.decode_jpeg(image, channels=1)
image = tf.cast(image, dtype=tf.float32)
image /= 255.0  # normalize to [0,1] range

feature = {
  'image': tf.train.Feature(bytes_list=tf.train.BytesList(value=[image.numpy()]))
}
example_proto = tf.train.Example(features=tf.train.Features(feature=feature))
example_proto.SerializeToString()
...