【发布时间】:2021-12-23 07:36:47
【问题描述】:
我的问题有点牵强。我正在处理包含 dicom 图像的 Prostate MRI 数据集。当我使用 Simple ITK 加载 dicom 文件时,输出 numpy 数组的 dtype 将为 float64 。但是当我使用 pydicom 加载相同的 dicom 文件时,输出 numpy 数组的 dtype 将是 uint16 问题不只是这个。使用不同的模块时,像素强度会有所不同。所以我的问题是为什么它们看起来不同,哪一个是正确的,为什么这些模块以不同的方式加载数据? 这是我用来加载 dcm 文件的代码。
import pydicom
import SimpleITK as sitk
path = 'dicoms/1.dcm'
def read_using_sitk():
reader = sitk.ImageFileReader()
reader.SetFileName(path)
image = reader.Execute()
numpy_array = sitk.GetArrayFromImage(image)
return numpy_array.dtype
def read_using_pydicom():
dataset = pydicom.dcmread(path)
numpy_array = dataset.pixel_array
return numpy_array.dtype
【问题讨论】:
-
pydicom 加载保存在数据集中的原始数据(MR 为 uint16);为了显示,apply the Modaility and VOI LUT 也是有意义的。我不知道 SimpleITK 做了什么,但显然它做了某种转换(可能应用了 LUT),因为输出是一个浮点数组。
-
非常感谢。应用模态之后,它们看起来一样!顺便说一句,您的链接在其字符串的末尾需要一个“L”! :)))
-
请写下答案,以便我接受。
标签: python pydicom simpleitk mri