我在一个文件夹中有成千上万的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的步骤?
答案 0 :(得分: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(文件夹))预先分配1000 x 1000的numpy数组。我没有dicom
或测试文件,因此无法检查您的案例,但这个想法确实有效(我之前已将它用于将图像缩放到正确的大小)。同时检查刻度是否正确。