0

我在一个文件夹中有数千张 dicom 图像。pydicom我是这样读的

import numpy as np
import dicom

folder = "/images"
imgs = [dicom.read_file(folder + '/' + s) for s in os.listdir(folder)]

然后我想将所有图像堆叠为一个 numpy 数组,如下所示:

data = np.stack([i.pixel_array for i in imgs])

但是,图像大小不同,因此不能堆叠。

如何添加将所有图像调整为 1000x1000 的步骤?

4

1 回答 1

1

如果您将其存储为 numpy 数组的列表,那么它们可以是不同的大小。否则使用scipy缩放功能,

import numpy as np
import dicom
import scipy

xsize = 1000; ysize = 1000
folder = "/images"
data = np.zeros(xsize, ysize, len(os.listdir(folder)))
for i, s in enumerate(os.listdir(folder)):

    img = np.array(dicom.read_file(folder + '/' + s).pixel_array)
    xscale = xsize/img.shape[0]
    yscale = ysize/img.shape[1]
    data[:,:,i] = scipy.ndimage.interpolation.zoom(img, [xscale, yscale]))

您可以保存为列表和堆栈,但似乎更容易通过 len(os.listdir(folder)) 预先分配大小为 1000 x 1000 的 numpy 数组。我没有dicom或没有测试文件,所以无法检查你的情况,但这个想法确实有效(我之前用它来将图像缩放到正确的大小)。还要检查规模是否适合您的情况。

于 2017-01-18T09:00:59.677 回答