软件3D_Slicer

针对 3D Slicer,我为你整理了一份从安装到上手查看CT影像的“极简实战指南”。它是目前医学影像处理领域最强大的免费开源软件,而且直接支持拖拽打开 .nii.gz 文件,不需要手动解压。

查看 CT 图像

第一步:下载与安装(针对不同系统)

  • 官方下载地址:直接访问 www.slicer.org 点击 “Download Slicer”。官网下载太慢了,从中文网站 https://forum.slicercn.com/ 下载的 5.10 版本。
  • 版本选择:建议下载 Stable Release(稳定版),文件名通常带 stable 字样。
你的操作系统 下载文件类型 安装/启动方式
Windows .exe 安装包 双击运行,按提示安装即可(建议默认路径)。如果电脑权限受限,也可以下载 .zip 绿色免安装版,解压后双击 Slicer.exe 直接运行。
macOS (苹果) .dmg 磁盘映像 双击挂载后,把 3D Slicer.app 拖拽到 Applications(应用程序) 文件夹里。
Linux (Ubuntu等) .tar.gz 压缩包 解压后,在终端进入文件夹,运行 ./Slicer 即可启动(无需编译)。

💡 硬件要求:普通办公电脑即可流畅运行,建议内存至少 4GB,显卡支持 OpenGL 3.2 以上(近10年的电脑基本都满足)。


第二步:打开你的 CT 文件(最核心操作)

安装完成后,按以下步骤载入你的 .nii.gz 文件:

  1. 启动软件:打开 3D Slicer,界面默认是深色主题,分为多个面板。

  2. 载入数据(三种方法任选):

    • 方法一(最快):直接从文件夹里,把 .nii.gz 文件用鼠标拖拽到 3D Slicer 的软件窗口空白处,松开鼠标即可。
    • 方法二:点击左上角菜单栏的 File(文件) -> Add Data(添加数据),在弹出的对话框中点击 Choose File(s),选中你的文件,然后点击 OK。
  3. 查看图像:载入成功后,主界面会显示 四个窗口:

    首先,我们先通过下面的图了解一下 CT 图像的方向和轴

    • 红色窗口:显示 X-Y 平面
    • 黄色窗口:显示 Y-Z 平面
    • 绿色窗口:显示 X-Z 平面
    • 灰色大窗口:3D 立体渲染(可以实时旋转查看三维效果)

进一步详细解释如下

  1. 红色窗口(横断面 / Axial)(CT的原始数据)
  • 视角:像一把刀从头顶向下切(或者从脚底向上看),把身体切成上下两半。
  • 显示:你看到的是人体的横截面(左右、前后关系)。
  • 对应坐标:这个窗口显示的切片位置,由 S(Superior,上/头侧) 坐标决定。你这里的 S: 101.0000mm,就代表当前红色窗口正在显示距离头顶方向101毫米处的那个横截面。
  1. 黄色窗口(矢状面 / Sagittal)
  • 视角:像一把刀从身体正中间向左或向右切,把身体分成左右两半。
  • 显示:你看到的是人体的纵切面(前后、上下关系)。
  • 对应坐标:这个窗口显示的切片位置,由左右方向的坐标决定(通常是 R(Right,右) 或 L(Left,左))。你看到的 Y: 62.0000mm,代表这个切面位于身体前后方向的某个位置(注意,这里软件里显示的是Y,因为3D Slicer的坐标体系里,R/L是X轴,A/P是Y轴,S/I是Z轴,所以这里的Y代表前后位置)。
  1. 绿色窗口(冠状面 / Coronal)
  • 视角:像一把刀从正面(或背面)切下去,把身体分成前后两半。
  • 显示:你看到的是人体的正面纵切面(左右、上下关系)。
  • 对应坐标:这个窗口显示的切片位置,由前后方向的坐标决定。你这里的 A: -53.0000mm,代表这个切面位于身体前方(Anterior,即腹侧)53毫米处。
  1. 灰色/彩色的大窗口(三维视图 / 3D View)
  • 视角:这是一个立体的三维渲染视图。
  • 显示:它不是切面,而是把你的CT数据当成一个实体,通过光线渲染出一个立体的“假人”或“器官”模型。你可以按住鼠标左键随意旋转、缩放它,从各个角度观察整体形态。

第三步:学会“看片”的鼠标操控

刚开始用最怕鼠标乱点导致画面乱跑,记住这套标准操作:

  • 滚动鼠标滚轮:在红/黄/绿任意窗口滚动,可以逐层翻页查看 CT 切片(这是最常用的功能)。
  • SHIFT + 左键并拖动(或 按住鼠标滚轮并拖动):平移/拖拽画面(在放大后移动视野,不行,我试了是)。
  • CTRL + 滚轮 (或 按住鼠标右键并拖动) :缩放画面(拉近拉远看细节)。

3D 窗口

  • 滚轮: 缩放
  • 按住鼠标左键并拖动 : 旋转
  • CTRL + 左键并拖动 : 绕着一点旋转
  • SHIFT + 左键并拖动 : 移动

加入交叉链接

我的版本是 5.10.0 ,点击医学窗口上的六角星图标,二维图像上会出现红黄绿的线,这就是交叉链接,用于确认位置。

第四步:针对 CT 影像的“调色”技巧(非常重要)

找到窗口上的这个图标,选中它。

然后鼠标就会变成上面这个图案。

按住左键,左右拖动有不同的效果,上下拖动也有不同的效果。

之后,点击窗口上的箭头图标(上图中框起来部分左边的那个图标),恢复原来的鼠标演示。

这种做法实际就是在调整 Volumns 模块下的 “Window/Level” 参数,下面有详细介绍

Volumns 模块下有一些预设的“Window/Level” 参数,见其中的 Presets 参数(比如骨窗、肺窗等),点击不同图标,便选择不同的预设的“Window/Level” 参数。

“CT值”、“灰度”和“Window/Level”三者的关系

CT 值范围在[-1000, 1000] 左右,但是灰度只有 256 级。 如果把这几千个CT值(-1000到+3000)平均分配到256级灰度上,每1级灰度要包含大约15个CT值,那么骨骼和软组织的灰度几乎一模一样,全是灰蒙蒙的,根本分不清。

Window/Level(窗宽/窗位)就是为了解决这个问题——它决定这宝贵的256级灰度,到底用来显示整个CT值标尺上的哪一段。

  1. Level(窗位 / 中心值)——“手电筒照在挂图的哪个位置”
  • 含义:它指定你当前这256级灰度的“中心点”对准CT值标尺的哪个数值。

  • 直观效果(调高或调低):

    • 调低 Level(比如从 -425 调到 -800):灰度中心移向空气和肺组织。原本显示灰色的区域,现在要分配给更低的CT值,所以整体画面变黑变暗,但肺纹理的细节会突显出来(这就是“肺窗”)。
    • 调高 Level(比如从 -425 调到 +300):灰度中心移向骨骼和软组织。原本显示灰色的区域给了高密度组织,所以整体画面变白变亮(这就是“骨窗”的底子)。

    简单记:Level 主要管“画面明暗”,它决定了你把中间灰色对准哪一类组织。

  1. Window(窗宽 / 宽度)——“手电筒光束的粗细”
  • 含义:它指定你当前这256级灰度总共覆盖了CT值标尺上多宽的一段距离。

  • 直观效果(调大或调小):

    • 调小 Window(比如从 7381 调到 200):光束变窄,只覆盖很小一段CT值(比如只覆盖 -100 到 +100)。因为只覆盖200个CT值,却要用256级灰度来显示,所以每一级灰度只对应不到1个CT值。效果是:对比度剧烈增加,黑白分明,一点密度差异都能看得清清楚楚(适合看脑出血或细微骨折)。但坏处是,低于-100的空气和高于+100的骨骼会全部变成纯黑或纯白,直接“消失”在画面外。
    • 调大 Window(比如你现在的 7381):光束极宽,覆盖了从 -4115 到 +3265 的超大范围(几乎包含了人体所有组织)。因为要拿256级灰度去铺平这7000多个CT值,所以每一级灰度要容纳约29个CT值。效果是:对比度极低,软组织、骨骼、空气都被“压缩”在灰蒙蒙的色调里,看起来像蒙了一层雾(这就是所谓的“宽窗”)。但好处是一眼能看到所有结构,没有任何组织被剔除。

    简单记:Window 主要管“对比度”,调小则对比强烈(锐利但选择性强),调大则对比柔和(平滑但一览无余)。

基于我从别的视频看的操作来说,这个东西没有那么复杂,看一下公式就很简单了

  1. Level 是中心值,window 是窗宽,因此窗口范围是 [level - 0.5* window, level + 0.5* window]

  2. 对于在这个范围内的 CT 值在这个窗口范围进行归一化,这里用 window_min 和 window_max 表示两个范围 \[ \text{ct_new} = \frac{\text{ct} - \text{window_min}}{\text{window_max} - \text{window_min}} = \frac{\text{ct} - \text{window_min}}{\text{window}} \]

  3. 超出这个范围的 CT 值,如果小于 window_min ,则设为0 (纯黑);如果大于 window_max ,则设为1(纯白)。

  4. 可视化时再乘以 255 ,转换为灰度图的灰度值 \[ \text{ct_new} = \frac{\text{ct} - \text{window_min}}{\text{window}} * 255 \]

其他:3D 图像渲染

图中展示的正是 3D Slicer 的“体积渲染(Volume Rendering)”功能。

你现在看到的是“骨架”,大概率是因为你只使用了默认的“骨骼阈值”,或者只看了切片视图。要实现图中这种半透明、能看到骨骼和软组织整体轮廓的3D效果,请按照以下步骤操作:

  1. 切换模块:在左侧的下拉菜单中找到并选择 Volume Rendering(体积渲染) 模块。

  2. 启用渲染:在界面中找到你的CT图像(例如 13.nii.gz),点击前面的小眼睛图标(或勾选) 启用它。

  3. 调整预设(关键步骤):因为你现在只有骨架,你需要更改预设。在下方的“Preset”(预设)下拉菜单中,不要选“CT-Bones”(CT骨骼),尝试选择“CT-Coronary-Arteries”

  4. 手动调整透明度:手动调节 Shift(偏移) ,或者直接拖动下方“Opacity”控制线上的圆点。把透明度调高一点,让肌肉和骨骼融合显现出来。

其他:在不同数据间切换显示

数据加载后,都存在于当前“场景”中。想要“切换”查看,最核心的工具就是 Data 模块(数据模块)。通过它,你可以控制每个数据集的“可见性”。

  • 找到“Data”模块:在右侧模块选择下拉菜单中,找到并点击 Data。
  • 认识“眼睛”图标:在“Data”模块的列表中,每个数据集左侧都有一个 “眼睛”图标 👁️。这是控制显示的关键。
    • 眼睛睁开 👁️:该数据集正在显示。
    • 眼睛闭上:该数据集被隐藏。
  • 进行切换:单击某个数据的“眼睛”图标,即可切换其显示状态。
    • 如果想只显示一个数据,隐藏其他所有数据,可以在其“眼睛”图标上右键单击,选择 “Show in slice views as background”(在切片视图中显示为背景)。

查看图像的元数据

在 3D Slicer 中查看 Image Spacing(体素间距)以及原点的具体方法有几种,最常用的是通过 Volumes 模块。

方法一:使用 Volumes 模块(最直观)

  1. 在顶部的模块下拉菜单中,选择 Volumes。

  2. 在左侧的 Active Volume 下拉框中,选中你想要查看的节点(比如原图,或者超过范围的预测标签图)。

  3. 在下方的 Volume Information 面板中,你会直接看到:

    • Image Spacing(体素间距,例如 0.5 x 0.5 x 1.0)

    • Image Dimensions(图像尺寸,例如 512 × 512 × 512)

    • Image Origin(图像原点):这个图像在物理空间(毫米)里的“起点”坐标(0,0,0)在哪里,单位毫米。

      在 3D Slicer 中,使用的是 RAS 坐标系(Right-右, Anterior-前, Superior-上)。Image Origin 就是图像第一个体素(左上角那个点)在患者身体坐标系中的精确位置。

    • “IJP to RAS” 方向矩阵:方向余弦矩阵,描述影像坐标轴与病人解剖坐标系(RAS/LPS)之间的旋转关系。

    • 注意:你可以直接对比原图和标签图的这几个数值,如果哪个不一致,就是导致标注超出范围的原因。

特别提示: 在解决上一轮“超出范围”的问题时,Image Spacing、Image Origin 和 Image Dimensions 这三个数值必须完全一致。

CT 标注

参考视频

  1. https://www.bilibili.com/video/BV15b5S6qEuX/?spm_id_from=333.1387.favlist.content.click
  2. https://www.bilibili.com/video/BV1VP4y1b73b?spm_id_from=333.788.videopod.sections&vd_source=584d44ba7fed271fb82848e7894a53c8

标注后查看ROI体素个数和体积

  1. 打开模块 Quantification → Segment Statistics

  2. Scalar volume:选原始 CT 体数据

    Advanced → Labelmap Statistics (勾选) → 点击 Options :弹出下图右边的窗口,选中

    • Voxel count(体素个数)
    • Volume mm³
    • Volume cm³

    下面的 Scalar Volume Statistics(可选,看 HU 均值等)

  3. 点 Apply

结果示例如下

保存标注后的数据

单个ROI导出成 NIfTI(给外部脚本用,推荐)

  1. 打开 Segmentations 模块(或 Segment Editor 里点 Segments 旁边下拉)
  2. 找到 Export to files
  3. 设置:
    • 点击 Destination folder 右侧文件夹图标,选一个固定目录
    • Reference volume:选原始 CT(保证坐标/spacing 一致)
    • File format:NIfTI(.nii / .nii.gz)
  4. 点 Export
  5. 得到:oyster_001_cavity.nii.gz

如果有多段不重叠 segment,可合并成一个 labelmap;重叠 segment 建议分开存或留 Slicer 原生格式

界面参数逐项设置说明

界面参数 当前截图状态 详细设置建议与作用
Destination folder 默认 Slicer 目录 建议改为自定义路径(如 D:\oyster_data\masks),方便后续脚本读取,避免找不到文件。
Visible segments only 未勾选 只导出”当前在 3D 视图里能看到的”那些 segment。所谓能看到就是每个 segment 名字前面的 眼睛图标是否打开。不勾选就是默认全部的 segment。
Reference volume 2_A_1 必须选原始 CT 体数据。保证导出的 Mask 与原始 CT 的原点、尺寸、Spacing(各向异性)完全对齐。
File format NIFTI 保持 NIfTI(.nii.gz),这是外部统计/深度学习最通用的格式。
Merge into single file 未勾选 若有多个不重叠段(如左腔/右腔),建议勾选,所有选中的 Segment 导出为一个 .nii.gz 文件。
Size scale 1.000 保持 1.000,不要缩放,保证体素物理尺寸真实(体积计算依赖此)。
Coordinate system LPS 保持 LPS(医学影像标准),Python(nibabel/SimpleITK)读取默认兼容。
Use compression 未勾选 强烈建议勾选,生成 .nii.gz,节省磁盘空间(CT Mask 压缩率很高)。
Use color table values Segmentation_ColorTable 合并单文件时,用颜色表映射标签值(如腔体=1,壳=2);分开存可忽略。
Show destination folder 已勾选 导出后自动弹窗打开文件夹,方便确认文件是否生成。

多个ROI 如何保存

在 Export to files 里:

  • 勾选 Merge into single file
  • 格式选 NIfTI
  • 不勾 Use color table values

导出结果:

  • 背景 = 0
  • 第一个 segment → 标签 1
  • 第二个 segment → 标签 2
  • 第三个 segment → 标签 3
  • ……

⚠️ 但注意:

这个“1、2、3”是按 segmentation 节点里 segment 的顺序来的,不是按你颜色或名字。

如果你中间删过段、合并过,编号可能会跳(比如 1、3、5)。

查看 CT 标注

要直观查看 KiPA 2022 数据集中值为 0-5 的标签,核心操作是在导入时正确地将文件识别为“标签图”(LabelMap)或“分割”(Segmentation)。

🏷️ 了解你的标签数据

首先,了解一下 KiPA 2022 数据集标签的具体含义,这能帮助你理解看到的内容。

  • 0:背景 (Background)
  • 1:肾静脉 (Renal vein)
  • 2:肾脏 (Kidney)
  • 3:肾动脉 (Renal artery)
  • 4:肿瘤 (Tumor)

好的,我们彻底从头开始,一步一步来。这次我们不跳步,把每一步都拆解清楚。

你的目标是把 KiPA 数据集的标签(数值0-5的标注文件)正确叠加在CT原始图像上查看。


📂 准备:明确你需要的两个文件

在开始前,请确保你的电脑里有这两个文件(缺一不可):

  1. CT原始图像:比如 000-005_3.nii.gz(这是灰度的背景图)。
  2. 标签图像:比如 13.nii.gz(这就是你说的 0-5 的标注数据)。

🧹 第一步:清空软件,从头开始(推荐)

为了避免之前的设置干扰,先清空场景。

  • 点击菜单栏的 File -> Close Scene(关闭场景),在弹出的提示中选择“不保存”或“No”。

📥 第二步:按顺序加载文件(关键!顺序很重要)

一定要先加载CT图像,再加载标签图像。

  1. 加载CT原始图像:
    • 将你的 CT 文件(000-005_3.nii.gz)直接拖拽到 3D Slicer 主窗口。
    • 会弹出一个“Add Data”窗口,直接点击 OK 即可。此时,红黄绿切片窗口应该能看到灰色的CT人体图像了。
  2. 加载标签图像(关键操作在这里):
    • 将你的标签文件(13.nii.gz)也拖拽到 3D Slicer 窗口。
    • 此时弹出的“Add Data”窗口千万不要直接点 OK!
    • 在窗口中找到 Description(描述)下拉菜单,手动选择 Segmentation(分割)。
    • 如果你的界面没有这个选项,请勾选左下角的 Show Options(显示选项),然后在展开的选项里,勾选 LabelMap 复选框。
    • 这一步是告诉软件“这是个彩色蒙版,不是普通片子”。选好后,点击 OK。

🎨 第三步:设置“背景”与“前景”(解决切片全黑的核心)

这里我没有设置,我的软件版本不需要设置这个。

加载完后,看屏幕左侧的列表(Subject hierarchy)。此时CT和标签都在列表里,但默认可能是标签盖住了CT,或者显示不正确。我们要手动指定它们的层级。

  1. 找到CT文件(通常是文件名,比如 000-005_3),在它最左边的 “眼睛”图标 👁️ 上点击鼠标右键。
    • 在弹出的菜单中,选择 Show in slice views as Background(在切片视图中显示为背景)。这一步让CT变成底图。
  2. 找到标签文件(比如 13.nii.gz_1),在它左边的 “眼睛”图标 👁️ 上点击鼠标右键。
    • 在弹出的菜单中,选择 Show in slice views as Foreground(在切片视图中显示为前景)。这一步让标签变成覆盖在上面的彩色蒙版。

做完这两步,你再去看红色/黄色/绿色的二维切片窗口,应该就能看到灰白的CT图像上覆盖着彩色的区域了。


🖌️ 第四步:调整标注颜色(解决颜色太黑看不清)

如果看到了CT,但上面的色块是黑的或者很暗淡,那是因为软件随机分配了深色。

  1. 在右侧的模块选择下拉菜单中,切换到 Segmentations 模块。
  2. 在面板下方,你会看到 Segment_1、Segment_2 等列表。
  3. 每个分段前面都有一个彩色的小方块。点击这个小方块,会弹出调色板。
  4. 把 Segment_1 改成红色,Segment_2 改成蓝色,Segment_3 改成绿色,Segment_4 改成黄色(选亮色即可)。
  5. 改完后,切片上的颜色会立刻变亮。

🖥️ 第五步:在3D视图中查看立体模型

如果你想看立体的三维彩色模型,而不是二维切片:

  1. 确保你还在 Segmentations 模块。
  2. 找到面板最上方的 Show 3D(显示三维)按钮,点击它。
  3. 此时,右下角的3D视图窗口就会显示出立体的彩色器官/肿瘤模型。你可以按住鼠标左键旋转它查看。

调解透明度(比如查看血管结构):

  • 调解 Segmentations 模块中 Display 中的 overall opacity 参数,调解透明度

⚠️ 最后的检查(如果还是没显示)

如果做完以上五步,切片上依然只有CT没有彩色,或者全黑,请检查以下两处:

  1. 检查透明度滑块:看红色切片窗口的左上角工具栏,有一个前景透明度的滑块(通常标有 F 或一个滑条),确保它不在最左边(全透明),拖到中间位置。
  2. 检查标签文件是否包含CT:KiPA数据集有时会把标签和CT合并在一个多通道文件里。如果上述方法失败,确认一下你的 13.nii.gz 文件大小,如果它和CT文件一样大(几十MB),它可能本身就是CT图像,而非标签。请确保你拖拽的是专门以“_seg”或“_label”命名的标签文件。

kipp 标注数据实际效果如下

参考资料

  1. https://www.bilibili.com/video/BV1w44y147ph/?spm_id_from=333.1387.favlist.content.click&vd_source=584d44ba7fed271fb82848e7894a53c8
  2. https://www.bilibili.com/video/BV1i94y1k7wA/?vd_source=584d44ba7fed271fb82848e7894a53c8
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2019-2026 Vincere Zhou
  • 访问人数: | 浏览次数:

请我喝杯茶吧~

支付宝
微信