救救新手!怎么对时间序列进行标注?

软件版本:5.11.0
问题描述

我导入了一个视频超声DICOM序列,怎么对每一帧进行标注呢,我新建一个Segment,切换下/上一时间后,Segment里的标注不会切换,也就是全部时间帧的该图像位置只能是一个标注。

怎么样才能像那些3D的标注一样,切换比如I—S位置轴时,新建的一个Segment会随我的切换而切换,我可以对每一个面进行标注呢

大模型输出,如果出错继续问豆包

你的情况本质上是:影像是“时间序列”,但你的 Segmentation 还是普通的单个分割节点。所以切换上一帧/下一帧时,影像在变,标注节点不变,表现为“所有时间帧共用同一个标注”。

正确做法不是给每一帧新建一个 Segment,而是要建立一个 Segmentation Sequence(分割序列),让同一个 Segment 在不同时间点保存不同的 mask。


关键概念

你看到的现象 原因
切换 I–S 轴时,一个 Segment 可以在不同切片上分别画 这是同一个 3D labelmap 的不同空间切片
切换视频超声时间帧时,Segment 不随帧切换 时间帧不是空间切片;需要用 Sequence 保存每个时间点的 segmentation 状态
想让每帧都有独立标注 需要把 Segmentation 加入 Sequence Browser 并勾选 Save changes

3D Slicer 的 Sequences 模块支持 4D CT、cine-MRI、4D ultrasound 等时间序列,而且不仅能序列化影像,也能序列化 segmentation、transform、markup 等节点。官方文档明确说明:要对每个时间点分割,需要创建 segmentation sequence,并勾选 Save changes。(GitHub)


推荐操作流程

1. 确认你的 DICOM 是以 Volume Sequence 方式导入

在 DICOM Browser 中导入时,建议使用:

DICOM Browser → Advanced → Examine → 选择包含 “frames Volume Sequence” 的那一项

或者在设置里改成:

Edit → Application Settings → DICOM → MultiVolumeImporterPlugin → Preferred multi-volume import format → volume sequence

官方文档也建议多帧 DICOM 可加载为 Volume Sequence,而不是普通 MultiVolume。(GitHub)


2. 先在某一帧创建一个普通 Segmentation

进入 Segment Editor

  1. Segmentation:Create new Segmentation
  2. Source volume:选择你的超声序列当前显示的 proxy volume
  3. Add 一个 Segment,比如:lesion / tumor / vessel

这一步只是建立一个将要被序列化的分割节点。


3. 到 Sequences 模块,把 Segmentation 加入同一个 Sequence Browser

进入:

Modules → Sequences → Sequence Browser

注意:这里要选择已经控制你超声视频播放的那个 Sequence Browser,不要另建一个新的 browser。

然后在同步节点表里操作:

  1. 点击绿色 +,新建一个 sequence
  2. 这一行的 Proxy node 选择你刚才创建的 Segmentation
  3. 勾选这一行的 Save changes
  4. 给这个新 sequence 起名,例如:US_segmentation_sequence

官方文档的流程也是:新建 Segmentation node → 到 Sequences 模块 → 新建 sequence 存储每个 timepoint 的 segmentation → Proxy node 选择该 segmentation → 勾选 Save changes。(GitHub) 社区回答也确认:要分割每个时间点,需要创建 segmentation sequence,并在 Proxy node 里选择 segmentation,同时勾选 Save changes。(3D Slicer Community)


4. 回到 Segment Editor,逐帧画

现在再切换上一帧/下一帧时:

Frame 1  →  lesion mask A
Frame 2  →  lesion mask B
Frame 3  →  lesion mask C
...

你可以保持同一个 Segment 名称,比如一直叫 lesion
不需要每一帧都新建一个 Segment。

Segment 表示“结构类别/目标类别”,例如肿瘤、血管、心腔;
Sequence 才表示“时间帧”。


你现在大概率漏掉的是这一项

重点检查:

Sequences 模块里,Segmentation 对应那一行有没有勾选 Save changes?

如果没勾选,Segment Editor 修改的是当前 proxy segmentation,但不会把每帧状态保存到 segmentation sequence 里。


快速排错表

问题 检查点
标注在所有帧都一样 Segmentation 不是 sequence,或者没勾选 Save changes
切换时间帧后标注不回来 可能 segmentation 没有加到同一个 Sequence Browser
Source volume 不对 Segment Editor 的 Source volume 应选序列的 proxy volume
找不到 segmentation 作为 proxy node 看看是否已经创建了 Segmentation 节点;下拉里可能只显示 “Segmentation”
DICOM 导入后不好做序列标注 重新以 Volume Sequence 方式导入
想对所有帧自动应用同一个阈值/效果 目前通常需要 Python 脚本循环处理序列,社区也提到 GUI 里不是所有批处理编辑都已实现。(3D Slicer Community)

一句话方案

把你的标注节点做成 Segmentation Sequence:在 Sequences 模块中,把 Segmentation 作为同一个 Sequence Browser 的 synchronized/proxy node 加进去,并勾选 Save changes。
这样每个时间帧就会像 3D 体数据的每个切片一样,拥有自己独立保存的标注状态。