三维C三维配准软件(术中CT)

前言:整体目标是通过 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 坐标系下的位置
  1. 主要流程

3.1 CT 影像加载

  1. 用户选择从 C 臂接收目录加载,或手动选择本地 DICOM 文件夹。

  2. 系统导入 DICOM 文件并更新 CT 影像对象。

  3. 系统在四视图中显示 CT 影像,重置视图并显示十字线。

  4. 系统清理旧 CT 节点,避免新旧影像叠加。

  5. 系统清空已有 CT 标记点,重新开始采点。

  6. 系统发送影像更新通知,供配准页面刷新使用。

3.2 CT 标记点采集

  1. 系统初始化 6 个 CT 标记点节点。

  2. 用户点击"采集标记点 1~6"中的某一个按钮,激活对应标记点。

  3. 用户在 CT 四视图中落点或移动点位。

  4. 每个标记点最多保存 1 个点。

  5. 落点成功后,按钮显示该标记点已采集。

  6. 其他模块可通过服务读取单个点、全部点、已采集数量和当前 CT 影像对象

3.3 进入配准页面

  1. 用户从 CT 点采集页面进入配准。

  2. 配准页面加载当前 CT 影像到 3D 视图。

  3. 配准页面初始化或检查 OTS 相机连接。

  4. 页面显示 C 臂基座和探针相关示踪器状态。

  5. 系统按当前 C 臂侧别加载历史基座位姿和历史配准矩阵。

3.4 C 臂基座采集

  1. 用户选择 C 臂位置:左侧或右侧。

  2. 用户点击"采集基座"。

  3. 系统读取 CArmTracker.rom 在 NDI 世界坐标系下的绝对位姿。

  4. 系统将位姿保存到 basePose.json

  5. 系统将基座位姿转换成 4x4 矩阵,并提前计算逆矩阵。

  6. 后续NDI探针采点使用该本地基座矩阵,不依赖实时 CArmTracker.rom 一直可见。

3.5 探针 NDI 点采集

  1. 用户使用探针触碰实际金属球点位。

  2. 用户点击采集 NDI 点。

  3. 系统读取 ProbeTracker.rom 在 NDI 世界坐标系下的绝对位姿。

  4. 系统使用已保存的 C 臂基座逆矩阵,将探针坐标转换到 C 臂基座坐标系。

  5. 系统保存该 NDI 点,并在页面列表中显示点序号和坐标。

  6. NDI 点数量最少 3 个、最多 6 个。

3.6 影像配准

  1. 用户点击配准。

  2. 系统检查 NDI 点数量是否不少于 3 个。

  3. 系统从 CT 点采集服务读取 CT 标记点。

  4. 系统检查 CT 点数量是否不少于 3 个。

  5. 系统检查 CT 点数量和 NDI 点数量是否一致。

  6. 系统将 NDI 点和 CT 点传入算法库执行点对点配准。

  7. 配准成功后,系统得到 T_CT_CArm

  8. 系统将 T_CT_CArm 按当前侧别保存到 regMatrix.json

  9. 系统启动探针实时显示。

3.7 配准验证

  1. 用户进入验证模式。

  2. 系统隐藏配准采点控件,显示 3 个验证点按钮。

  3. 用户分别采集验证点 1、2、3。

  4. 验证时系统要求 CArmTracker.romProbeTracker.rom 同时实时可见。

  5. 系统实时读取探针相对 C 臂基座的坐标。

  6. 系统读取对应序号的 CT 标记点作为参考点。

  7. 系统计算该验证点的预测 NDI 坐标和误差。

  8. 页面显示实测坐标、CT 参考点、预测坐标和误差等级。

4. 关键计算

计算探针相对 C 臂基座坐标

点对点配准计算

探针在 CT 中实时显示

验证点误差计算

相关推荐
清水迎朝阳5 小时前
客户端软件 — 用户统计方案
服务器·c++·客户端·用户统计
再卷也是菜6 小时前
C++17(下)
c++
alexwang2116 小时前
HDU 4348 详细题解
c++·算法·题解·hdu·主席树·可持久化数据结构·可持久化线段树
程序员zgh6 小时前
C++ 拷贝赋值运算符 详解
c语言·开发语言·c++
皓月斯语8 小时前
B2132 素数对
c++·算法·题解
星轨初途9 小时前
LeetCode 热题 100——day2 字母异位词分组
c++·算法·leetcode
笨鸟先飞的橘猫9 小时前
c++面向对象编程
开发语言·c++
啦啦啦啦啦zzzz10 小时前
设计模式:桥接模式和组合模式
c++·设计模式·组合模式·桥接模式
-森屿安年-10 小时前
647. 回文子串
c++·算法·动态规划
fpcc10 小时前
c++应用网络编程之十七WebSocket
网络·c++·websocket