【问题标题】:dicom image resizing before converting to numpy array在转换为 numpy 数组之前调整 dicom 图像大小
【发布时间】:2017-01-18 08:42:15
【问题描述】:

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

【问题讨论】:

  • "如何添加一个将所有图像调整为 1000x1000 的步骤?"在堆叠之前和加载之后具有合适的列表理解。

标签: python image numpy dicom pydicom


【解决方案1】:

如果您将 then 存储为 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 或测试文件,所以无法检查你的情况,但这个想法确实有效(我之前用它来将图像缩放到正确的大小)。还要检查规模是否适合您的情况。

【讨论】:

    猜你喜欢
    • 2020-01-26
    • 2021-04-21
    • 1970-01-01
    • 2021-01-11
    • 2011-04-16
    • 2012-12-14
    • 2011-09-01
    • 2013-07-26
    相关资源
    最近更新 更多