Skip to content

XinAloha/MedSegCompare

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

医学图像分割结果对比查看器

一个专业的医学图像分割结果可视化工具,用于对比多个深度学习模型的分割效果,支持.nii.gz格式的3D医学图像。

功能特点

核心功能

  • 多模型对比:支持2-10个文件夹同时对比(1个原始图像 + 1个GT + 最多8个模型预测)
  • 智能切片过滤:自动检测并只显示GT中包含掩膜的切片,跳过空白切片
  • 双重可视化
    • 2D切片视图:原始图像 + 淡红色半透明掩膜叠加
    • 3D投影视图:最大强度投影(MIP)显示完整分割结构
  • 实时指标计算
    • 3D指标:Dice系数、clDice系数(加载时计算一次)
    • 2D指标:当前切片的Dice系数、clDice系数(切换切片时实时更新)

交互功能

  • 鼠标滚轮:向上/向下滚动切换切片
  • 键盘快捷键
    • 左箭头:切换到上一个.nii.gz文件
    • 右箭头:切换到下一个.nii.gz文件
  • 滑动条:拖动浏览不同切片
  • 按钮控制:点击按钮切换文件

界面布局

┌─────────────────────────────────────────────────────────────┐
│  文件信息 | 有效切片统计                                      │
├──────────────┬──────────────┬──────────────┬────────────────┤
│    Image     │      GT      │    Model1    │    Model2      │
├──────────────┼──────────────┼──────────────┼────────────────┤
│  原始图像     │  图像+GT掩膜  │  图像+预测掩膜 │  图像+预测掩膜  │
├──────────────┼──────────────┼──────────────┼────────────────┤
│  指标汇总     │  3D投影可视化 │  3D投影可视化 │  3D投影可视化   │
│  (所有模型)   │              │              │                │
└──────────────┴──────────────┴──────────────┴────────────────┘
│  [上一个文件] [切片滑动条] [下一个文件]                        │
└─────────────────────────────────────────────────────────────┘

安装依赖

环境要求

  • Python 3.7+
  • Windows/Linux/macOS

安装步骤

# 克隆或下载项目
cd medical_image_viewer

# 安装依赖
pip install -r requirements.txt

依赖说明

  • numpy: 数组计算
  • nibabel: 读取.nii.gz医学图像格式
  • PyQt5: GUI界面框架
  • scipy: 图像处理(旋转、缩放、距离变换)
  • scikit-image: 骨架化算法(用于clDice计算)

使用方法

1. 准备数据

将你的数据组织成以下结构:

root_folder/                 # 根文件夹(任意名称)
├── Images/                  # 原始图像文件夹(必须命名为Images)
│   ├── case_001.nii.gz
│   ├── case_002.nii.gz
│   └── ...
├── Labels/                  # 真实标注文件夹(必须命名为Labels)
│   ├── case_001.nii.gz
│   ├── case_002.nii.gz
│   └── ...
├── UNet/                    # 模型1预测结果(文件夹名即为模型名)
│   ├── case_001.nii.gz
│   ├── case_002.nii.gz
│   └── ...
├── ResNet/                  # 模型2预测结果
│   ├── case_001.nii.gz
│   ├── case_002.nii.gz
│   └── ...
└── Transformer/             # 模型3预测结果(可选,最多8个模型)
    ├── case_001.nii.gz
    ├── case_002.nii.gz
    └── ...

重要规则

  • 根文件夹下必须包含 ImagesLabels 两个子文件夹(大小写不敏感)
  • 其他子文件夹会被自动识别为模型预测结果,文件夹名即为模型显示名称
  • 所有文件夹中的文件名必须完全相同且一一对应
  • 最多支持8个模型文件夹(加上Images和Labels共10个)

2. 配置路径

打开 medical_image_viewer_qt.py,找到 main() 函数,只需修改一行:

def main():
    # 只需修改这一行,指向你的根文件夹
    root_folder = r"E:\Data\MyProject"  # 修改为你的根文件夹路径
    
    # 其他代码无需修改
    ...

3. 运行程序

python medical_image_viewer_qt.py

程序会自动:

  1. 扫描根文件夹下的所有子文件夹
  2. 识别 ImagesLabels 文件夹
  3. 将其他文件夹作为模型预测结果
  4. 按字母顺序显示模型
  5. 在控制台输出检测到的文件夹信息

操作指南

基本操作

  1. 浏览切片

    • 使用鼠标滚轮向上/向下滚动
    • 拖动底部滑动条
    • 程序自动跳过GT中没有掩膜的切片
  2. 切换文件

    • 按键盘左箭头键或点击"上一个文件"按钮
    • 按键盘右箭头键或点击"下一个文件"按钮
  3. 查看指标

    • Image列下方显示所有模型的指标汇总
    • 3D指标:整个3D体积的评估结果
    • 2D指标:当前切片的评估结果

指标说明

Dice系数(Dice Coefficient)

  • 范围:0-1,越高越好
  • 含义:衡量预测分割与真实标注的重叠程度
  • 计算公式:Dice = 2 * |A ∩ B| / (|A| + |B|)

clDice系数(Centerline Dice)

  • 范围:0-1,越高越好
  • 含义:专门用于评估细长结构(如血管)的分割质量
  • 特点:对拓扑结构敏感,比普通Dice更适合血管分割评估

配置说明

文件夹命名规则

  • Imagesimages:原始图像文件夹(必需)
  • Labelslabels:真实标注文件夹(必需)
  • 其他任意名称:模型预测结果文件夹(文件夹名即为显示的模型名)

文件夹数量限制

  • 最少:2个(原始图像 + GT)
  • 最多:10个(原始图像 + GT + 8个模型)

文件格式要求

  • 支持格式:.nii.gz(NIfTI压缩格式)
  • 文件名:所有文件夹中的文件名必须完全一致

掩膜显示

  • 颜色:淡红色(RGB: 255, 100, 100)
  • 透明度:40%
  • 阈值:像素值 > 0.1 被视为掩膜区域

常见问题

Q1: 程序启动后没有显示图像?

A: 检查以下几点:

  1. 文件夹路径是否正确
  2. 文件夹中是否包含.nii.gz文件
  3. 所有文件夹中的文件名是否完全一致

Q2: 提示"GT中没有找到任何掩膜"?

A: GT文件夹中的所有.nii.gz文件都是空的(全为0),请检查GT数据是否正确。

Q3: clDice计算很慢?

A: clDice需要进行骨架化和距离变换,对于大尺寸3D图像会比较耗时。3D clDice在加载文件时只计算一次,2D clDice在切换切片时实时计算。

Q4: 如何调整掩膜颜色和透明度?

A: 修改 create_overlay_image() 函数中的参数:

alpha = 0.4  # 透明度(0-1)
red_color = np.array([255, 100, 100], dtype=np.float32)  # RGB颜色

Q5: 3D投影效果不理想?

A: 可以调整 create_3d_visualization() 函数中的旋转角度:

angle = 15  # 旋转角度(度)

技术细节

3D可视化算法

使用最大强度投影(Maximum Intensity Projection, MIP):

  1. 对3D数据进行轻微旋转(默认15度)获得透视效果
  2. 沿深度方向取最大值生成2D投影
  3. 添加深度阴影增强立体感

性能优化

  • 3D指标只在加载文件时计算一次
  • 2D指标使用高效的numpy向量化计算
  • 图像缩放使用Qt的平滑变换算法

许可证

MIT License

作者

医学图像处理工具

更新日志

v1.0.0 (2024)

  • 初始版本发布
  • 支持多模型对比
  • 实现Dice和clDice指标计算
  • 添加3D MIP可视化
  • 智能切片过滤功能

About

Multi-Model Medical Image Segmentation Comparison Viewer

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages