大家好:
如何在3D Slicer中将3个DICOM文件(头部、躯干、腿部)拼接为一个整体DICOM文件(完整身躯)?
源影像:3个DICOM文件(头部、躯干、腿部);
目标影像:1个整体DICOM文件(完整身躯),不丢失比例尺和灰度阈值;
大家好:
如何在3D Slicer中将3个DICOM文件(头部、躯干、腿部)拼接为一个整体DICOM文件(完整身躯)?
源影像:3个DICOM文件(头部、躯干、腿部);
目标影像:1个整体DICOM文件(完整身躯),不丢失比例尺和灰度阈值;
在 DICOM 模块中分别加载:
HeadTrunkLegs若是一次连续扫描、病人未移动,可略过。
否则用以下方法让三段在同一空间对齐。
方法A:自动刚性配准
方法B:手动配准
打开你截图中的 Add Scalar Volumes 模块,依次设置:
| 参数 | 设置 |
|---|---|
| Input Volume 1 | Head(或已经配准到 Head 空间的体积) |
| Input Volume 2 | Trunk |
| Output Volume | 新建节点,如 HeadTrunk |
| Interpolation order | 1(线性插值,推荐) |
点击 Apply。
此时得到第一个合并结果 HeadTrunk。
再重复一次:
HeadTrunkLegsWholeBodyWholeBodyWholeBody_Fused即可得到完整身躯的 DICOM 序列,比例与HU均保留。
Landmark Registration(基于标志点的线性配准) 模块界面。
我们可以用它来替代“Transforms”模块,手动快速把 Trunk(躯干) 和 Legs(腿部) 对齐到 Head(头部)。
下面是最简步骤版(比 Transforms 更直观)![]()
在上方模块栏选择:
Modules → Registration → Landmark Registration
在弹窗中设置:
| 参数 | 说明 |
|---|---|
| Fixed Volume | Head(参考体积) |
| Moving Volume | Trunk(要移动的体积) |
| 点击 Apply |
Add new point;LinearTransform_1;对 Legs 重复同样操作,得到对齐后的三段体积。
您好,曹老师:
非常感谢您的指导和帮助。在逐步测试过程中,发现如下 Register 按钮无法在界面找到,自己测试ChatGPT和Gemini发现答复中都有这个 Register 或者 Apply 按钮在界面找不到。我推测是他们的训练数据尚未对齐到最新3D Slicer 5.8软件导致的。
四、执行变换>>
- 点击 Register 按钮;>
- 程序会自动计算一个刚性变换;
由于3D Slicer 5.8软件的扩展插件很多导致实现脊椎配准拼接有很多方法。拜读了您的方法,深受启发。在ChatGPT付费模式下获得一个比其他多个免费AI都准确的答复方法,我经过了一步一步手工验证,是可行的
。写下来供大家参考,我的一得之愚,不揣冒昧。
下面给出在 3D Slicer(以 5.8 为例)中,用 Landmark Registration 完成两套正方形体数据的配准后,将“部分重合、整体呈纵向长方形”的并置结果导出为一套 DICOM 体数据的可复现步骤。思路是:先将 Moving 体“硬化”到配准后位置 → 构造一个能包含两套体的更大参考网格 → 把两套体都重采样进这个参考网格 → 将两者按像素合并(取最大值/取和/按掩膜粘贴,常用为取最大值以避免空洞)→ 导出 DICOM。
载入两套 DICOM 并在 Data 面板确认有两个 Scalar Volume(下面称 Fixed 与 Moving)。
打开 Landmark Registration,以 Fixed 为 Fixed Volume、Moving 为 Moving Volume,标定点并 Apply 得到一个线性变换节点(如 LinearTransform_1)。
在 Data 面板中:将 Moving 体拖拽到该变换节点下(或右键 Moving→Apply transform 选择该变换)。
右键 Moving 体 → Harden transform(硬化变换)。
目标是得到一个更高的纵向长方形体素网格,作为后续重采样的参考。
新建并放置 ROI:在工具栏点击 “创建 ROI(立方体)” 按钮,或在 Markups 模块中新建一个 ROI(如 ROI_1)。
在 2D/3D 视窗交互缩放与移动 ROI_1,确保完整包围配准后的 Fixed 与 Moving 两套体(纵向方向要覆盖到形成的长方形完整范围)。
打开 Crop Volume 模块:
Input volume 选择 Fixed;
ROI 选择 ROI_1;
展开 Parameters(高级/Advanced):
取消 Isotropic spacing;
Spacing scale 设为 1.0;
Interpolation mode 建议 Linear(CT/MR 强度数据常用);
Fill value:CT 建议 -1024(空气),MR 可用 0,DX 可用 0。
点击 Apply。
将得到一个更大的“裁剪-重采样”体(例如 Fixed-cropped)。它以 Fixed 为强度来源,但体素网格范围由 ROI 决定:
打开 Resample Scalar/Vector/DWI Volume(或 Volume Resample)模块,进行两次重采样:
(A) 重采样 Fixed:
Input Volume:Fixed
Reference Volume:Fixed-cropped(上一步产物)
Interpolation:Linear(或与上一步一致)
Output Volume:如命名 Fixed_resampled
Apply
(B) 重采样 Moving(已硬化后的位置):
Input Volume:Moving(已 Harden 的那一个)
Reference Volume:同样选 Fixed-cropped
Interpolation:Linear
Output Volume:如命名 Moving_resampled
**Apply`
结果:两套体都被映射到同一个更大、纵向长方形的网格上,分辨率与像素间距与 Fixed-cropped 一致。
常用做法是逐体素取最大值(Max)来避免空洞;也可按需要改为加权、求和或用掩膜粘贴。
方式 1:Simple Filters(ImageMath/Maximum)
10. 打开 Simple Filters,选 MaximumImageFilter(或 Image Math 里的 max(Fixed_resampled, Moving_resampled)):
Fixed_resampledMoving_resampledStitched_volume(即并置后的纵向长方形体)。可选方式 2:使用阈值掩膜粘贴(若需要“只把非背景的 Moving 覆盖到 Fixed 上”,更像“拼接/粘贴”而非求最大):
在 Segment Editor 中分别对 Fixed_resampled 与 Moving_resampled 做阈值分割得到前景掩膜;
用 Logical operators 做并集/覆盖得到最终掩膜;
用 Mask Volume(或 Simple Filters 的 MaskImageFilter/PasteImageFilter)将 Moving_resampled 的前景粘贴到 Fixed_resampled;
得到 Stitched_volume。
(这一路更精细,但步骤多;多数 CT/MR 直接 Maximum 足够稳健。)
在 Data 或 Volumes 中选中合并结果 Stitched_volume,确认显示正常(2D 三视图应为纵向长方形范围)。
打开 DICOM 模块 → 右侧 Export(或 DICOM Export):
Export type:Volume
Volume to export:Stitched_volume
设置患者/研究/序列信息(Patient/Study/Series)(必要的元数据,至少要改一个以避免与原数据混淆)。
选择导出目录 → Export。
使用外部 DICOM 查看器或重新导入到 Slicer 验证该 DICOM 序列:应为一套纵向长方形的体数据。
Harden transform 一定要做:否则 Moving 仍以“挂着变换”的方式显示,后续重采样/合并会出现错位或输出为空。
Fill value(填充值):
CT 数据建议 -1024(空气),方便后续用最大值合并;
MR 可用 0。若背景不统一,最大值合并可能在重叠区引入非期望强度,必要时改用掩膜粘贴法。
Interpolation(插值):强度体数据通常用 Linear;若要保证标签一致性(非强度数据),应使用 Nearest neighbor。
参考网格(Reference Volume):能否成功“变成长方形”全靠 ROI 定义的包络范围。别忘了让 ROI 在纵向完全覆盖两套体。
导出 DICOM:仅支持单一体导出;因此一定要先完成合并,保证最终只有 Stitched_volume 这一套体作为导出对象。
两个.dcm文件操作结果如下图所示。
备注: