Изменение размера изображения DICOM в Python - PullRequest
1 голос
/ 07 апреля 2019

Я пытаюсь изменить размеры изображений DICOM разных размеров в общий размер для обучения моей нейронной сети.Я думал, что cv2 может решить мою проблему.Но в моем блокноте jupyter появляется «ошибка типа данных не понята»

Я пытаюсь создать нейронную сеть с тензорным потоком, которая могла бы предсказать класс изображения.Таким образом, мне нужны изображения общего размера для обучения первого слоя

Вот функция, которую я создал:

IMG_PX_SIZE = 224
def resize(img_dcm):
    return cv2.resize(np.array(img_dcm.pixel_array, (IMG_PX_SIZE,IMG_PX_SIZE)))

Вот как я читаю файлы dcm и передаю ихфункция:

img = pydi.dcmread(PATH)
image = resize(img)

Я ожидал, что он выведет изображение размером 224 * 224.Но я получаю следующую ошибку:

<ipython-input-66-3cf283042491> in resize(img_dcm)
      1 IMG_PX_SIZE = 224
      2 def resize(img_dcm):
----> 3     return cv2.resize(np.array(image.pixel_array, (IMG_PX_SIZE,IMG_PX_SIZE)))

TypeError: data type not understood

Ответы [ 2 ]

1 голос
/ 07 апреля 2019

Вот альтернативный способ изменить размеры изображений с помощью Scikit-Image:

In [105]: from pydicom.data import get_testdata_files

# read a sample image
In [106]: filename = get_testdata_files('MR_small.dcm')[0]
     ...: ds = pydicom.dcmread(filename)

In [107]: data = ds.pixel_array

In [108]: type(data)
Out[108]: numpy.ndarray

In [109]: data.shape
Out[109]: (64, 64)

In [111]: from skimage.transform import resize
In [114]: IMG_PX_SIZE = 32

# resize to new size
In [115]: resized_img = resize(data, (IMG_PX_SIZE, IMG_PX_SIZE), anti_aliasing=True)

In [116]: resized_img.shape
Out[116]: (32, 32)
0 голосов
/ 10 апреля 2019

DICOM не поддерживается в OpenCV, см. здесь .Вам нужно будет преобразовать все ваши изображения в подходящий формат (например, jpg или png), прежде чем вы сможете изменить их размер с помощью OpenCV:

OpenCV не поддерживает изображения DICOM, так что вам придетсянайдите подходящую библиотеку (например, http://dicom.offis.de/dcmtk.php.en) и преобразуйте загруженное изображение в cv :: Mat.

Затем снова вы можете использовать другую библиотеку для изменения размера.вероятно, это не стоит того, чтобы:

  1. преобразовать изображения в читаемый формат для OpenCV
  2. изменить их размер с помощью OpenCV
  3. преобразовать их обратно в DICOM

Я бы рекомендовал вам вместо этого обратиться к библиотеке или инструменту, специально предназначенному для работы с изображениями DICOM.

...