在python中调整DICOM图像的大小

Him*_*idu 3 python opencv image-processing dicom pydicom

我正在尝试将不同尺寸的 DICOM 图像调整为通用尺寸,以训练我的神经网络。我认为 cv2 可以解决我的问题。但是我在我的 jupyter 笔记本中收到了“数据类型无法理解的错误”

我正在尝试创建一个可以预测图像类别的 tensorflow 神经网络。因此,我需要用于第一层训练的通用尺寸大小的图像

这是我创建的函数:

IMG_PX_SIZE = 224
def resize(img_dcm):
    return cv2.resize(np.array(img_dcm.pixel_array, (IMG_PX_SIZE,IMG_PX_SIZE)))
Run Code Online (Sandbox Code Playgroud)

这就是我读取 dcm 文件并将其传递给函数的方式:

img = pydi.dcmread(PATH)
image = resize(img)
Run Code Online (Sandbox Code Playgroud)

我希望它输出 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
Run Code Online (Sandbox Code Playgroud)

kma*_*o23 7

这是使用 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)
Run Code Online (Sandbox Code Playgroud)