标注
在 Cornerstone3DTools 中,标注工具把自己的状态保存在一个 state 对象里。
这个对象是一个普通的 JavaScript 对象,用于存放该标注实例的状态——
诸如标注的统计量、它的数据以及相机位置等信息都存在这个对象中。
添加 / 移除、选择、加锁与解锁标注有多种方法。它们都可以通过
Cornerstone3DTools 中的 annotation 命名空间访问:
import { annotation } from '@cornerstonejs/tools';
// 所有处理标注状态的方法都可以通过这里访问
annotation.state.XYZ;
// 所有标注选择相关的方法都可以通过这里访问
annotation.selection.XYZ;
// 所有标注加锁相关的方法都可以通过这里访问
annotation.locking.XYZ;
// 所有标注样式相关的方法都可以通过这里访问
annotation.config.XYZ;
// AnnotationGroup 类用于对标注进行分组
annotation.AnnotationGroup;
下面逐一深入这些方法。
标注分组
AnnotationGroup 类用于表示若干标注彼此相关,支持整组切换可见性、以及在组内查找上一个 / 下一个标注。本文说明如何创建分组、把标注加入分组,以及 setVisibility 的过滤函数行为。
标注管理器
标注管理器是一个单例类,负责标注的存储、检索、保存与恢复。默认实现 FrameOfReferenceSpecificAnnotationManager 按 FrameOfReferenceUID 分开存放标注。本文给出 IAnnotationManager 接口,并说明自定义管理器中 getGroupKey 为何最关键。
样式配置
标注样式的分层配置体系。样式按「标注级 → 视口级 → 工具组级 → 全局默认级」的优先级解析,每一层内部又分为按工具和全局两档。本文说明该层级的解析顺序、默认样式取值、四个层级各自的设置方法,以及全部可配置样式属性的清单。
加锁
标注可以被加锁以避免误改动。本文介绍 annotation.locking 命名空间下加锁、解锁、查询已加锁标注以及一次性解锁全部标注的 API。
测量目标
可配置地筛选标注工具为哪些目标(显示集 / 体数据)计算并显示统计量,包括在融合视口上同时显示多份统计量。本文说明 targetsFilter 与 targetPredicate 的分工、两个内置选择器、各类配置示例,以及候选项推导、targetId 复用与多目标统计的行为细节。
选择
标注可以被选中和取消选中,默认通过按住 Shift 键点击标注来完成。本文介绍 annotation.selection 命名空间下设置选中状态、获取全部已选标注,以及按工具名获取已选标注的 API。
状态
Cornerstone3DTools 实现了基于参考坐标系的标注状态管理器,标注点使用世界坐标。本文给出 ProbeTool 标注数据的完整结构、标注状态对象的组织方式,以及 addAnnotation、removeAnnotation、getAnnotations 等 API。
可见性
标注的可见性可以被改变。本文介绍 annotation.visibility 命名空间下显示 / 隐藏单个标注、显示全部已隐藏标注,以及查询某个标注是否可见的 API。
体素统计与斜切视图
用一个迭代器在任意方位下枚举工具形状覆盖的体素,并定义它所求值的三条规则:面积标注包含哪些体素(规则 M)、笔刷填充写入哪些体素(规则 F)、视口显示哪些标注(规则 D)。本文还说明厚度 T 的来源、迭代器与采样器的用法、形状契约,以及为何区间求解是精确的。