You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pydicom为DICOMDIR中的每个Series添加Series Description

用pydicom给DICOMDIR的每个系列添加Series Description标签

核心思路

pydicom的FileSet在导入所有DICOM实例后,会自动构建Patient/Study/Series的层级结构。要给每个系列添加Series Description(0008,103e)标签,不需要修改源DICOM文件,直接操作FileSet中对应Series的目录记录即可。

修改后的完整代码

from os import listdir
from os.path import isdir, join
from pydicom.fileset import FileSet

path2dcm = r"D:\my\path\to\dcm-files"
instanceList = []

def ListFolderEntries(path):
    for entry in listdir(path):
        npath = join(path, entry)
        if isdir(npath):
            ListFolderEntries(npath)
        else:
            # 可选:只收集DCM后缀文件,避免非DICOM文件干扰
            if npath.lower().endswith('.dcm'):
                instanceList.append(npath)  

# 递归遍历文件夹收集DCM文件
ListFolderEntries(path2dcm)

# 初始化FileSet
myFS = FileSet()

# 添加所有DICOM实例到FileSet
for inst_path in instanceList:
    myFS.add(inst_path)

# 给每个Series添加Series Description
for series in myFS.series():
    # 获取当前Series对应的DICOMDIR目录记录
    series_record = series.record
    # 设置Series Description值,可根据需求固定或动态生成
    series_record.SeriesDescription = '7253 1mm'
    # 若需动态生成(比如用实例的父文件夹名作为描述),可替换为:
    # first_inst = series.instances[0]
    # series_record.SeriesDescription = first_inst.filename.split('\\')[-2]

# 生成DICOMDIR和对应文件结构
myFS.write()

关键说明

  • myFS.series():返回FileSet中所有Series对象,每个对象对应一个系列层级
  • series.record:指向DICOMDIR中该系列的目录记录条目,直接修改其属性即可完成标签的添加/修改
  • SeriesDescription对应的VR类型为LO(Long String),pydicom会自动处理标签的编码规则,无需手动指定
  • 若要为不同系列设置差异化描述,可从系列内实例的文件路径、现有DICOM标签中提取信息动态生成

内容的提问来源于stack exchange,提问作者HackJack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:20:54