gpt4 book ai didi

python - 如何使用 pydicom 访问 DICOMDIR 文件中的单个 NumPy 数组?

转载 作者:行者123 更新时间:2023-11-28 22:03:01 31 4
gpt4 key购买 nike

我将 DICOM 与 Python 和 Pydicom 库一起使用,当我使用 .dcm 文件时我没有问题。但我现在使用的是 DICOMDIR 数据集。

我的代码是下一个:

ds = dicom.read_file("dicomdir")

我试图访问 pixel_array元素如下:
data = ds.pixel_array

我得到下一个错误: TypeError: No pixel data found in this dataset. print ds 的输出或多或少是下一个:

(0004, 1130) 文件集 ID CS: 'GEMS_11_10_111'
(0004, 1200) 第一个目录记录的偏移量 UL:412
(0004, 1202) 最后一个目录记录的偏移量 UL: 412
(0004, 1212) 文件集一致性标志 US: 0
(0004, 1220) 目录记录序列 7 项 ----
(0004, 1400) 下一个目录记录 UL 的偏移量:0
(0004, 1410) 记录使用中标志美国:65535
(0004, 1420) 引用低级 Di UL 的偏移量:558
(0004, 1430) 目录记录类型 CS:“患者”
(0008, 0005) 特定字符集 CS: 'ISO_IR 100'
(0010, 0010) 患者姓名 PN: '-----------------'
(0010, 0020) 患者 ID LO:“246992”
(0010, 0030) 患者出生日期 DA: '19630523'
(0010, 0040) 患者性别 CS:'F'

(0004, 1400) 下一个目录记录 UL 的偏移量:0
(0004, 1410) 记录使用中标志美国:65535
(0004, 1420) 引用低级 Di UL 的偏移量:800
(0004, 1430) 目录记录类型 CS:“研究”
(0008, 0005) 特定字符集 CS: 'ISO_IR 100'
(0008, 0020) 学习日期 DA: '20111011'
(0008, 0030) 学习时间 TM: '151535.000000'
(0008, 0050) 登录号 SH: '1009819901'
(0008, 1030) 研究说明 LO: 'MG CONVENCIONAL'
(0020, 000d) 研究实例 UID UI:1.2.840.113564.9.1.2005121220021252.20110608105548.21009819901
(0020, 0010) 研究 ID SH: '1009819901'

(0004, 1400) 下一个目录记录 UL 的偏移量:0
(0004, 1410) 记录使用中标志美国:65535
(0004, 1420) 引用低级 Di UL 的偏移量:968
(0004, 1430) 目录记录类型 CS:'SERIES'
(0008, 0005) 特定字符集 CS: 'ISO_IR 100'
(0008, 0060) 模态 CS: 'MG'
(0008, 103e) 系列说明 LO:“屏幕保存”
(0020, 000e) 系列实例 UID UI:1.2.840.113619.2.144.2347322947.2192645372.5
(0020, 0011) 系列号是:'354'

(0004, 1400) 下一个目录记录的偏移量 UL: 1298
(0004, 1410) 记录使用中标志美国:65535
(0004, 1420) 引用低级 Di UL 的偏移量:0
(0004, 1430) 目录记录类型 CS:“图像”
(0004, 1500) 引用文件 ID CS: ['DICOM', 'PA1', 'ST1', 'SE1', 'IM1']
(0004, 1510) 文件 UI 中引用的 SOP 类 UID:辅助捕获图像存储
(0004, 1511) 文件 UI 中引用的 SOP 实例 UID:1.2.840.113619.2.144.44653394.14990.1318380911.86
(0004, 1512) F UI 中引用的传输语法 UID:显式 VR Little Endian
(0008, 0005) 特定字符集 CS: 'ISO_IR 100'
(0008, 0008) 图像类型 CS: 'DERIVED'
(0008, 0023) 内容日期 DA: '20111011'
(0008, 0033) 内容时间 TM: '151909.000000'
(0020, 0013) 实例编号 IS: '8844'
(0028, 0010) 美国行数:2298
(0028, 0011) 列美国:1980
(0028, 1052) 重新调整截距 DS: '0'
(0028, 1053) 重新调整斜率 DS:'1'

最后一部分重复四次。我的 DICOMDIR 数据集中有 4 张图像。

你知道如何使用 Numpy Array 访问每个图像的字段吗?

最佳答案

我在 Suever 的 Pydicom 用户论坛上收到了一个答案:

DICOMDIR 文件不包含任何像素信息,而是包含基本标题信息以及数据集中每个文件的路径。为了从每个图像中获取像素数据,您必须遍历 dicomdir 数据集以获取各个 dicom 文件(相对于当前目录)的文件路径,然后从每个单独的 dicom 加载像素数据文件。

一个简单的方法是(可能有更好的方法)

    ds = dicom.read_file("dicomdir")
pixel_data = list()
for record in ds.DirectoryRecordSequence:
if record.DirectoryRecordType == "IMAGE":
# Extract the relative path to the DICOM file
path = os.path.join(*record.ReferencedFileID)
dcm = dicom.read_file(path)

# Now get your image data
pixel_data.append(dcm.pixel_array)

有用 ;)

关于python - 如何使用 pydicom 访问 DICOMDIR 文件中的单个 NumPy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10129717/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com