获取多帧 DICOM 文件的所有图像

Get all images of a multi-frame DICOM file

我正在尝试获取多帧 DICOM 文件中的所有图像。现在,通过使用 pydicommatplotlib 库,我成功地能够在单帧 DICOM 文件中查看和保存单个图像,如下所示:

filename = pydicom.data.data_manager.get_files(*base folder path*,*dicom filename*)[0]
ds = pydicom.dcmread(filename)

plt.imshow(ds.pixel_array, cmap=plt.cm.bone)
plt.show()

现在,我希望能够查看并保存多帧 DICOM 图像中的所有图像,但是通过使用这段代码,returns 出现以下错误:

TypeError: Invalid shape (150, 768, 1024, 3) for image data

我在网上搜索了一下,但似乎找不到任何启发我的东西。我想知道是否有人通过这个,克服它的最佳方法是什么,并且能够在多帧 DICOM 文件中获取所有图像。

注意:在Stack Overflow上找到的类似问题要么已经过时,要么不符合我的要求。

DICOM 本质上是一种 'three-dimensional' 图像格式:它可以存储大量图像或 'slices'。然而,由于彩色图像已经是 3 维的(高度、宽度、RGB 通道),DICOM 数据集实际上可以是 4 维的(显然......我不知道这一点)。至少,我认为这就是为什么数据集的 shape 中有四个元素的原因。

我的猜测是该数据集包含 150 张图像,每张图像具有 768 x 1024 像素和 3 个通道。

所以假设 ds.pixel_array 是 array-like,你应该能够像这样看到中间的切片:

plt.imshow(ds.pixel_array[75]) 

要将它们全部保存下来,您需要执行如下伪代码:

for i, slice in enumerate(ds.pixel_array):
    plt.imshow(slice)
    plt.savefig(f'slice_{i:03n}.png')

显然,这只是 re-create 您基本上已经拥有的内容,但格式不太方便,但您明白了。