gpt4 book ai didi

dicom - 在 Python 中将 DICOM 结构轮廓作为数组获取

转载 作者:太空狗 更新时间:2023-10-29 21:08:07 26 4
gpt4 key购买 nike

因此,如果我有图像(CT、MRI 等)或放射治疗的剂量,我可以通过以下方式将剂量或图像值提取到数组中:

import dicom

ds = dicom.read_file("dicom_file.dcm")

print ds.pixel_array

这非常简单,让我能够随心所欲地处理图像/剂量。但是,通常您还有一个结构文件,其中包含您可以在图像查看器或类似工具中看到的不同轮廓结构。同样,非常简单。

我的问题是我也想将这些单独的结构作为一个数组。如果我运行相同的代码,我只会得到 TypeError: No pixel data found in this dataset.

我猜测结构 DICOM 文件的“制作”方式与剂量/图像 DICOM 文件不同。

那么有没有我找不到的解决方案呢?我还查看了 dicompyler_core 包,但据我所知,没有任何方法可以“只”将不同的结构放入数组中。

有问题的 DICOM 文件的 SOP 类 UID 是 RT 结构集存储。

最佳答案

这是一个交互式 session ,使用 pydicom 附带的 rtstruct.dcm 文件说明数据布局:

>>> import dicom
>>> ds = dicom.read_file("rtstruct.dcm", force=True)
>>> ds.dir("contour")
['ROIContourSequence']
>>> ctrs = ds.ROIContourSequence
>>> ctrs[0]
(3006, 002a) ROI Display Color IS: ['220', '160', '120']
(3006, 0040) Contour Sequence 3 item(s) ----
(3006, 0042) Contour Geometric Type CS: 'CLOSED_PLANAR'
(3006, 0046) Number of Contour Points IS: '5'
(3006, 0048) Contour Number IS: '1'
(3006, 0050) Contour Data DS: ['-200.0', '150.0', '-20
0.0', '-200.0', '-150.0', '-200.0', '200.0', '-150.0', '-200.0', '200.0', '150.0
', '-200.0', '-200.0', '150.0', '-200.0']
---------
(3006, 0042) Contour Geometric Type CS: 'CLOSED_PLANAR'
(3006, 0046) Number of Contour Points IS: '6'
(3006, 0048) Contour Number IS: '2'
(3006, 0050) Contour Data DS: ['200.0', '-0.0', '-190.
0', '200.0', '-150.0', '-190.0', '-200.0', '-150.0', '-190.0', '-200.0', '150.0'
, '-190.0', '200.0', '150.0', '-190.0', '200.0', '-0.0', '-190.0']
---------
(3006, 0042) Contour Geometric Type CS: 'CLOSED_PLANAR'
(3006, 0046) Number of Contour Points IS: '6'
(3006, 0048) Contour Number IS: '3'
(3006, 0050) Contour Data DS: ['200.0', '-0.0', '-180.
0', '200.0', '-150.0', '-180.0', '-200.0', '-150.0', '-180.0', '-200.0', '150.0'
, '-180.0', '200.0', '150.0', '-180.0', '200.0', '-0.0', '-180.0']
---------
(3006, 0084) Referenced ROI Number IS: '1'

数据存储(在这种情况下,像往常一样)作为每个平面的一组坐标。要获取一个轮廓、一个平面的数据,您可以使用

>>> ctrs[0].ContourSequence[0].ContourData
['-200.0', '150.0', '-200.0', '-200.0', '-150.0', '-200.0', '200.0', '-150.0', '
-200.0', '200.0', '150.0', '-200.0', '-200.0', '150.0', '-200.0']

这些是一个接一个的 (x, y, z) 坐标的三元组。

您可以在 StructureSetROISequence 序列中找到有关每个轮廓(名称等)的更多信息,对于 Referenced ROI Number 给出的索引。

通过循环遍历特定轮廓的 ContourSequence 中的每个数据集并将它们附加到一个数组中,您可以获得所有这些的完整数组。

关于dicom - 在 Python 中将 DICOM 结构轮廓作为数组获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46666762/

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