【问题标题】:Access DICOM files via DICOMDIR using pydicom使用 pydicom 通过 DICOMDIR 访问 DICOM 文件
【发布时间】:2021-12-23 17:00:28
【问题描述】:

我是这种文件类型的新手。我想通过访问位于该文件夹旁边的 DICOMDIR 来访问文件夹 S65279_1148582599_LIVER__QIU__SHIFU__M_53 中的文件。在文件夹中,我想访问如下文件夹中的“IMG”文件:

IMGO00O0000 2021/12/22 8:55 13,408 KB
IMGOO000001 2021/12/2  8:55 13,840 KB
IMGO0000002 2021/12/22 8:54 8 KB
IMG00000035 2021/12/22 8:54 103 KB
IMGOO000739 2021/12/22 8:54 2 KB
Objects.xml 2021/12/22 8:54 11 KB

使用dcmread 读取 DICOMDIR 文件后,我得到如下信息:

(0004, 0000) Group Length                        UL: 232
(ee04, 1400) Offset of the Next Directory Record UL: e
(0004, 1410) Record In-use Flag                  US: 65535
(e004, 1420) Offset of Referenced Lower-Level Di UL: 0
(e004, 1430) Directory Record Type               CS: 'SR DOCUMENT'
(e004, 1500) Referenced File ID                  CS: ['S65279_1148582599_LIVER_QIU_SHIFU_M_53', 'IMGOOOR0739']
(0004, 1510) Referenced sOP Class UID in File    UI: Comprehensive SR Storage
(eee4, 1511) Referenced sOP Instance UID in File UI: 1.2.276.0.48.10201. 1.20110506073656578008
(0004, 1512) Referenced Transfer Syntax UID in F UI: Explicit VR Little Endian
(0008, 0e00) Group Length                        UL: 48
(0008, 0005) Specific Character Set              CS: 'IS0_IR 192'
(0008, 0023) Content Date                        DA: '20110322'
(e008, e033) Content Time                        TM: '095212'
(0020, e000) Group Length                        UL: 10
(ea20, 0013) Instance Number                     IS: '0'

我应该如何获得“IMG00000739”?我曾尝试使用ds[0x0004,0x1500] 访问ReferenceFileID,但这不起作用。

【问题讨论】:

  • 请查看documentation。另请注意,不鼓励使用指向文本的图像链接,请改用纯文本 - 请参阅 how to ask a question
  • 文档是我检查的第一件事。但是,阅读文档后,我仍然不知道该怎么做。非常感谢提示。
  • 只是从文档中重新迭代:DICOMDIR 只是文件的索引。您可以通过使用dcmread 加载来直接访问每个文件,如果您已经知道要访问哪些文件,则无需使用 DICOMDIR。
  • 是的,我知道。但问题是我只需要加载 DICOMDIR 并从 DICOMDIR 访问其他文件。我想知道是否有办法做到这一点。
  • 你必须直接读取其他文件,从DICOMDIR你只能得到他们的文件名(通过ReferencedFileID)。

标签: python dicom pydicom


【解决方案1】:

DICOMDIR 文件包含患者、研究、系列和图像及其某些属性的目录记录的链接列表。如果您只需要一个在 DICOMDIR 中引用的 DICOM 文件列表,您可以找到所有 ReferencedFileID 标记,其中包含路径组件作为列表的路径。 ReferencedFileID 仅存在于图像级目录记录中,因此如果您搜索这些条目,您将获得所有包含的 DICOM 图像的路径。

pydicom 中,DICOMDIR 由FileSet 表示,它处理该文件类型的细节并允许您搜索目录记录。
因此,如果您想获取 DICOMDIR 中引用的所有 DICOM 文件路径,您可以执行以下操作:

from pydicom import dcmread 
from pydicom.fileset import FileSet

ds = dcmread(dicomdir_path)
fs = FileSet(ds)
root_path = fs.path
# returns all contained values if IMAGE level entries
file_ids = fs.find_values("ReferencedFileID")
for file_id in file_ids:
    # file_id is a list, unpack it into the components using *
    dcm_path = os.path.join(root_path, *file_id)
    print(dcm_path) # here you can collect the paths or load the dataset

【讨论】:

  • 非常感谢。它说名称“FileSet”未定义...
  • 你必须导入它。我将其添加到答案中。
  • 不敢相信我被困了两天,因为我忽略了文档中的导入声明......非常感谢。一切正常。
  • 或更简单的:for instance in fs: print(instance.path)
猜你喜欢
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多