软件版本:5.8.1
问题描述:勾画腰三椎体中段水平的皮下脂肪和内脏脂肪,请教老师怎么计算其表面积,用Segment statistics 计算出来的是体积,请问具体操作步骤是什么呀
这是体表面积(Area) vs 体积(Volume) 在 3D Slicer 中使用 Segment Statistics 模块时的常见困惑。
你现在的目标是:
在 L3 椎体中段水平的横断面上,分别计算 皮下脂肪(Subcutaneous fat)和内脏脂肪(Visceral fat) 的面积 (cm²),而非体积 (cm³)。
一、核心思路
Segment Statistics 默认输出的是体积(Volume),因为它针对三维体素集合。
要计算“面积”,我们只需要在一个 单层切片(单层厚度) 上绘制分割,并令该层的厚度等于体素厚度,就可以通过:
面积 = 体积 / 层厚
得到该层的真实面积。
二、具体操作步骤(逐步说明)
载入腰椎 CT 数据
- 打开 3D Slicer → 通过 DICOM 模块 或 “Add Data” 导入 CT;
- 建议选择包含 L3 椎体完整层面 的扫描。
定位到 L3 椎体中段层面
- 使用 “Red slice(轴位视图)”;
- 通过鼠标滚轮或滑块定位到 L3 椎体中段横断面;
- 可以使用 “Ruler” 工具标记层面位置以备复查。
Segment Editor 分割
-
打开 Segment Editor;
-
新建两个 Segment:
Subcutaneous fatVisceral fat
-
选择阈值分割工具(Threshold)或手动绘制工具(Paint);
-
仅在该层(当前 slice)上勾画区域;
-
勾画完成后,确认只保留这一个层面的 segmentation。
可在 “Segmentations” 模块 → “Display” → 关闭 3D 显示。
查看层厚信息
在 Volumes 模块 中找到:
Voxel spacing: X × Y × Z (例如 0.75 × 0.75 × 5.0 mm)
其中 Z 即层厚。记下这一值(单位 mm)。
计算面积
打开 Segment Statistics 模块:
- Input segmentation: 选择刚才的 segmentation;
- Input scalar volume: 选择原始 CT;
- 点击 Apply;
- 查看 “Volume (mm³)” 项目。
你将得到类似:
| Segment | Volume (mm³) |
|---|---|
| Subcutaneous fat | 11500 |
| Visceral fat | 3200 |
将体积除以层厚即可得面积:
[Area = Volume / SliceThickness]
例如层厚 5 mm:
- 皮下脂肪面积 = 11500 mm³ / 5 mm = 2300 mm² = 23.0 cm²
- 内脏脂肪面积 = 3200 mm³ / 5 mm = 640 mm² = 6.4 cm²
三、附加方法(更精确)
若你希望直接得到面积而不手算:
方法 A:使用 Python 交互式计算
在 Slicer 的 Python Interactor 中输入:
import SegmentStatistics
import slicer
import numpy as np
# 选择 segmentation 节点
segNode = slicer.util.getNode('Segmentation') # 替换成你的名称
statLogic = SegmentStatistics.SegmentStatisticsLogic()
parameters = {"Segmentation": segNode}
statLogic.computeStatistics(parameters)
for segmentId in statLogic.statistics.keys():
volume_mm3 = statLogic.statistics[segmentId, "LabelmapSegmentStatisticsPlugin.volume_mm3"]
slice_thickness = segNode.GetSegmentation().GetSegment(segmentId).GetTag("SliceThickness")
print(f"{segmentId}: {volume_mm3/slice_thickness} mm²")
(若没自动记录层厚,可手动输入。)
方法 B:使用 Segment Cross-Section Area 扩展
可在 Extension Manager 中搜索并安装:
SegmentCrossSectionArea
它能直接在单层切片上计算每个 Segment 的横截面积(无需手动除以层厚)。
四、小结
| 步骤 | 要点 |
|---|---|
| 1. 导入 CT | 确保层厚信息正确 |
| 2. 定位 L3 | 找到中段层面 |
| 3. 分割脂肪区 | 仅在单层勾画 |
| 4. Segment Statistics | 得到体积 |
| 5. 手动换算 | 面积 = 体积 / 层厚 |
| 6. 可选扩展 | 安装 SegmentCrossSectionArea 直接输出面积 |