TotalSegmentator中ROI子集命名变更对肺部血管分割的影响
背景介绍
TotalSegmentator是一个强大的医学图像分割工具,能够对人体CT图像中的多种器官和组织进行自动分割。该工具提供了灵活的接口,允许用户通过roi_subset参数选择需要分割的特定区域。然而,近期版本更新中对部分ROI(感兴趣区域)的命名进行了调整,这给一些用户带来了困扰。
问题现象
用户在使用TotalSegmentator进行肺部血管分割时,遇到了KeyError: 'lung_upper_left'的错误提示。该用户原本使用的代码片段如下:
totalsegmentator(input_path, output_path, preview=False,
roi_subset=['lung_upper_left', 'lung_upper_right',
'lung_lower_left', 'lung_lower_right',
'lung_middle_right'])
值得注意的是,这段代码在几个月前的版本中可以正常运行,但在最新版本中却出现了错误。用户尝试使用task="lung_vessels"参数可以正常工作,但无法获得完整的肺部结构分割结果。
问题根源
经过排查发现,这是由于TotalSegmentator在新版本中对肺部相关ROI的命名规范进行了调整。具体变更如下:
| 旧命名 | 新命名 |
|---|---|
| lung_upper_left | lung_upper_lobe_left |
| lung_upper_right | lung_upper_lobe_right |
| lung_lower_left | lung_lower_lobe_left |
| lung_lower_right | lung_lower_lobe_right |
| lung_middle_right | lung_middle_lobe_right |
这种命名变更使得使用旧版ROI名称的代码无法在新版本中正常运行,导致了KeyError错误。
解决方案
要解决这个问题,用户需要将代码中的ROI名称更新为最新版本支持的命名方式:
totalsegmentator(input_path, output_path, preview=False,
roi_subset=['lung_upper_lobe_left', 'lung_upper_lobe_right',
'lung_lower_lobe_left', 'lung_lower_lobe_right',
'lung_middle_lobe_right'])
扩展应用
TotalSegmentator的roi_subset参数不仅可以用于肺部结构分割,还可以用于其他器官的分割。例如,要分割腹部主要器官,可以使用以下代码:
totalsegmentator(inPath, outPath, preview=False,
roi_subset=['liver', 'gallbladder',
'kidney_left', 'kidney_right',
'pancreas', 'spleen', 'stomach'])
最佳实践建议
-
查阅最新文档:在使用TotalSegmentator时,建议查阅项目的最新文档,了解当前版本支持的ROI名称列表。
-
版本兼容性:如果项目需要长期维护,建议记录使用的TotalSegmentator版本号,以便后续复现结果。
-
错误处理:在代码中添加适当的错误处理机制,当遇到
KeyError时能够给出更友好的提示信息。 -
测试验证:在升级TotalSegmentator版本后,建议先在小规模数据集上测试原有代码的兼容性。
总结
TotalSegmentator作为医学图像分割的有力工具,其功能不断优化完善。本次ROI命名的变更反映了项目团队对解剖结构描述的规范化努力。用户在使用过程中应关注版本更新带来的变化,及时调整代码以适应新版本的要求。通过正确使用roi_subset参数,可以灵活地获取特定器官或组织的分割结果,满足不同研究或临床需求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



