繁体   English   中英

在转换为numpy数组之前调整dicom图像的大小

[英]dicom image resizing before converting to numpy array

我在一个文件夹中有数千个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的步骤?

如果将其存储为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或测试文件,因此无法检查您的情况,但是这个想法确实可行(我在将图像缩放到合适的尺寸之前就已经使用过)。 还要检查秤是否适合您的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM