本项目实现了基于腹部 CT 的肝脏血管自动分割与评估,包含完整的数据预处理、三种经典/实用分割算法、指标评估与可视化展示。同时提供了 MATLAB App Designer 编写的交互式应用,便于对单例病例进行快速试验与可视化。
- MSD Task08 Hepatic Vessel(Medical Segmentation Decathlon 肝血管任务)
- 公开链接:
MSD 肝脏血管分割 - 目录示例:
Task08_HepaticVessel/Task08_HepaticVessel/imagesTr/与labelsTr/
项目实现并评估了三种分割算法,核心思想如下:
-
Percentile(强度分位数阈值)
- 在肝脏 ROI 内统计强度直方图,取高分位数(如 97%)作为阈值进行二值化,随后做形态学清理。
-
RegionGrow(区域生长)
- 自动在肝脏 ROI 中选取高强度体素作为种子点(如 99.5% 分位),以稍低阈值(如 95% 分位)作为生长上限,进行掩膜重建与连通域清理。
-
Ensemble(集成融合)
- 将 Percentile 与 RegionGrow 的结果进行逻辑或融合,以最大覆盖真阳性;之后通过闭运算与体积阈值滤波移除噪声。
上述实现细节请参考对应源文件内的“函数头部注释与逐步说明”。
HepaticVesselApp/
├─ app/ # App Designer 工程(.mlapp)
├─ core/
│ ├─ preprocessCase.m # 病例数据预处理(重采样/ROI/裁剪/显示强度)
│ ├─ segmentVessel_Percentile.m# 分位数阈值分割
│ ├─ segmentVessel_RegionGrow.m# 区域生长分割
│ ├─ segmentVessel_Ensemble.m # 集成融合分割
│ └─ utils/
│ ├─ body_mask3d.m # 身体掩膜(去空气床板等背景)
│ ├─ ct_windowing_to01.m # CT 窗宽窗位归一化至 [0,1]
│ ├─ resample_isotropic.m # 各向同性重采样
│ ├─ crop_by_mask_with_margin.m # 带边距裁剪
│ ├─ evaluateMetrics.m # Dice/IoU/Prec/Rec 计算
│ └─ create_multi_view_figure.m # 三正交视图可视化(预测/真值叠加)
│
├─ evaluation_results/ # 统计图表与分析脚本
│ ├─ 1.png, 2.png, 3.png # 评估可视化(见下文“结果展示”)
│ └─ result_analysis.py # 统计与绘图脚本
│
├─ outputs/
│ └─ case_001/ # 示例病例输出(含可视化图)
│ └─ final_vessel_result.png
│
├─ run_vessel_pipeline.m # 批量评测脚本(循环病例×算法)
└─ run_segmentation_for_app.m # App 后端执行逻辑(单例、返回图像与指标)
更详细的处理流程、参数说明与边界条件处理,请直接阅读各
.m文件开头的注释。
含义:对全部 303 个病例统计,柱状图展示 Percentile / RegionGrow / Ensemble 三种算法的平均运行时间(秒)。
核心数值(来自统计脚本输出):
- Percentile:平均时间 0.115 s
- RegionGrow:平均时间 1.070 s
- Ensemble:平均时间 1.242 s
含义:展示三种算法在所有病例上的 Dice 分布范围(四分位、极值与中位数)。可直观看到 Ensemble 在中位数和上四分位的优势。
核心数值(均值 / 中位数):
- Percentile:平均 0.3948,中位数 0.4109
- RegionGrow:平均 0.4114,中位数 0.4778
- Ensemble:平均 0.4470,中位数 0.4895
含义:横轴为病例 ID,纵轴为 Dice。每个病例上三根柱分别对应 Percentile、RegionGrow、Ensemble,便于观察改进是否稳定。
下图为 case_001 的三视图叠加可视化(预测与真值边界):
分析:该病例上,Ensemble 融合策略在主干与较粗支路位置形成稳定覆盖,细小分支处仍受体素尺寸与对比度影响存在漏检。整体 Dice 约 0.65(图标题示意),与整体统计中 Ensemble 的均值 0.447、高于 Percentile 与 RegionGrow 的总体表现一致,说明融合策略在多数病例上能带来稳健收益。
如需批量导出所有病例的多视角结果,请使用 run_vessel_pipeline.m。
应用界面示意:
应用的执行逻辑集中在 run_segmentation_for_app.m:
- 读取参数并调用
preprocessCase完成重采样、ROI、裁剪与显示强度生成; - 根据按钮选择的算法名称,调用
segmentVessel_Percentile/RegionGrow/Ensemble; - 通过
evaluateMetrics计算指标,格式化为字符串返回; - 使用
create_multi_view_figure生成三正交视图(预测/真值等高线叠加),并将figure捕获为图像矩阵返回供 App 展示; - 统一设置
figure尺寸,保证导出清晰度一致。
- MATLAB 端批量评测
- 在
run_vessel_pipeline.m中设置rootDir与caseIDs_to_test,直接运行脚本。
- Python 端统计与绘图(可选)
- 进入
evaluation_results/,运行result_analysis.py,将输出三类统计与汇总表;脚本也可扩展生成箱线图/小提琴图等。
- 数据集请遵循 MSD 官方许可与引用要求。
- 代码以研究用途为主,如需商用请在相应许可范围内使用。




