如何使用SimpleITK加载Dicom格式PET/CT数据并解决序列识别报错
SimpleITK加载PET/CT DICOM序列报错解决方案
- 开启目录递归扫描
GetGDCMSeriesFileNames默认仅扫描传入路径的当前层级,不会自动遍历子目录。如果你的DICOM文件存放在目标路径的子文件夹内,需要开启递归扫描参数,修改代码如下:
dirOfExample = "C:\\Users\\1\\Downloads\\bad45Y\\bad45Y\\DICOM\\21071306" reader = sitk.ImageSeriesReader() # 新增recursive=True参数开启子目录递归扫描 dicom_names = reader.GetGDCMSeriesFileNames(dirOfExample, recursive=True) reader.SetFileNames(dicom_names)
- 手动指定序列UID
如果目标目录下同时存在PET、CT两个独立序列,GDCM无法自动匹配需要加载的序列,可以先枚举所有序列UID后手动选择加载:
dirOfExample = "C:\\Users\\1\\Downloads\\bad45Y\\bad45Y\\DICOM\\21071306" # 先获取目录下所有DICOM序列的UID series_ids = sitk.ImageSeriesReader.GetGDCMSeriesIDs(dirOfExample, recursive=True) if not series_ids: raise ValueError("目录下未检测到有效DICOM序列") # 打印所有序列UID,按需选择对应序列加载,此处默认选第一个 print(f"检测到的序列UID列表:{series_ids}") dicom_names = sitk.ImageSeriesReader.GetGDCMSeriesFileNames(dirOfExample, series_ids[0], recursive=True) reader = sitk.ImageSeriesReader() reader.SetFileNames(dicom_names)
- 其他排查方案
- 验证路径读取权限:确认当前Python运行进程对目标目录有读取权限,路径中不存在乱码、特殊符号导致的解析异常,可执行
print(os.listdir(dirOfExample))验证路径下文件可被正常读取 - 升级SimpleITK版本:部分旧版本SimpleITK的GDCM组件存在PET DICOM元数据识别问题,可执行
pip install --upgrade simpleitk升级到最新版本后重试
- 验证路径读取权限:确认当前Python运行进程对目标目录有读取权限,路径中不存在乱码、特殊符号导致的解析异常,可执行
内容的提问来源于stack exchange,提问作者Jakub Mitura
相关产品推荐
相关产品推荐

