前言:整体目标是通过 CT 标记点和 NDI 探针采集点,计算 C 臂基座坐标系到 CT 坐标系的转换矩阵,并通过验证点计算配准误差,判断配准精度是否可用。
功能核心链路:DICOM导入 -> CT点采集 -> C臂基座采集 -> 探针NDI点采集 -> 点对点配准 -> T_CT_CArm -> 验证误差。
核心输出:T_CT_CArm
核心验证指标:error = norm(P_CArm_measured - inverse(T_CT_CArm) * P_CT_ref)
1. 功能范围
本功能主要由两个插件完成:
-
PluginFirstImageCollectPointsView:负责 C 臂 CT/DICOM 影像加载、CT 标记点采集。 -
PluginFirstImageRegistrationView:负责 C 臂基座采集、探针 NDI 点采集、配准矩阵计算、配准验证和探针实时显示。
2. 总体输入输出
2.1 输入
| 输入项 | 来源 | 说明 |
|---|---|---|
| DICOM/CT 影像 | C 臂 DICOM 接收服务或本地文件夹 | 用于显示 CT 四视图和采集 CT 标记点 |
| CT 金属球标记点 | PluginFirstImageCollectPointsView |
用户在 CT 影像上采集的 3 到 6 个点 |
| C 臂基座位姿 | OTS,CArmTracker.rom |
C 臂基座示踪器在 NDI 世界坐标系下的位置和姿态 |
| NDI下金属球位姿 | OTS,ProbeTracker.rom |
探针示踪器在 NDI 世界坐标系下的位置和姿态 |
| C 臂侧别 | 页面选择 | 左侧或右侧,用于区分保存基座和配准矩阵 |
2.2 输出
| 输出项 | 保存/使用位置 | 说明 |
|---|---|---|
| CT 影像对象 | 内存服务 IUICollectPointsServer |
供配准页面加载到 3D 视图 |
| CT 标记点坐标 | 内存服务 IUICollectPointsServer |
供配准计算和验证误差计算使用 |
| C 臂基座位姿 | basePose.json |
按左侧、右侧分别保存 |
| C 臂配准矩阵 | regMatrix.json |
即 T_CT_CArm,按左侧、右侧分别保存 |
| 验证误差 | 验证页面显示 | 用于判断当前配准精度 |
| 探针实时显示 | 配准页面 3D 视图 | 配准后显示探针在 CT 坐标系下的位置 |
- 主要流程
3.1 CT 影像加载
-
用户选择从 C 臂接收目录加载,或手动选择本地 DICOM 文件夹。
-
系统导入 DICOM 文件并更新 CT 影像对象。
-
系统在四视图中显示 CT 影像,重置视图并显示十字线。
-
系统清理旧 CT 节点,避免新旧影像叠加。
-
系统清空已有 CT 标记点,重新开始采点。
-
系统发送影像更新通知,供配准页面刷新使用。
3.2 CT 标记点采集
-
系统初始化 6 个 CT 标记点节点。
-
用户点击"采集标记点 1~6"中的某一个按钮,激活对应标记点。
-
用户在 CT 四视图中落点或移动点位。
-
每个标记点最多保存 1 个点。
-
落点成功后,按钮显示该标记点已采集。
-
其他模块可通过服务读取单个点、全部点、已采集数量和当前 CT 影像对象
3.3 进入配准页面
-
用户从 CT 点采集页面进入配准。
-
配准页面加载当前 CT 影像到 3D 视图。
-
配准页面初始化或检查 OTS 相机连接。
-
页面显示 C 臂基座和探针相关示踪器状态。
-
系统按当前 C 臂侧别加载历史基座位姿和历史配准矩阵。
3.4 C 臂基座采集
-
用户选择 C 臂位置:左侧或右侧。
-
用户点击"采集基座"。
-
系统读取
CArmTracker.rom在 NDI 世界坐标系下的绝对位姿。 -
系统将位姿保存到
basePose.json。 -
系统将基座位姿转换成 4x4 矩阵,并提前计算逆矩阵。
-
后续NDI探针采点使用该本地基座矩阵,不依赖实时
CArmTracker.rom一直可见。
3.5 探针 NDI 点采集
-
用户使用探针触碰实际金属球点位。
-
用户点击采集 NDI 点。
-
系统读取
ProbeTracker.rom在 NDI 世界坐标系下的绝对位姿。 -
系统使用已保存的 C 臂基座逆矩阵,将探针坐标转换到 C 臂基座坐标系。
-
系统保存该 NDI 点,并在页面列表中显示点序号和坐标。
-
NDI 点数量最少 3 个、最多 6 个。
3.6 影像配准
-
用户点击配准。
-
系统检查 NDI 点数量是否不少于 3 个。
-
系统从 CT 点采集服务读取 CT 标记点。
-
系统检查 CT 点数量是否不少于 3 个。
-
系统检查 CT 点数量和 NDI 点数量是否一致。
-
系统将 NDI 点和 CT 点传入算法库执行点对点配准。
-
配准成功后,系统得到
T_CT_CArm。 -
系统将
T_CT_CArm按当前侧别保存到regMatrix.json。 -
系统启动探针实时显示。
3.7 配准验证
-
用户进入验证模式。
-
系统隐藏配准采点控件,显示 3 个验证点按钮。
-
用户分别采集验证点 1、2、3。
-
验证时系统要求
CArmTracker.rom和ProbeTracker.rom同时实时可见。 -
系统实时读取探针相对 C 臂基座的坐标。
-
系统读取对应序号的 CT 标记点作为参考点。
-
系统计算该验证点的预测 NDI 坐标和误差。
-
页面显示实测坐标、CT 参考点、预测坐标和误差等级。