如何使用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
相关产品推荐
相关产品推荐

