三维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 中实时显示

验证点误差计算

相关推荐
anew___5 小时前
蜂鸣器播放音乐——让 Arduino 唱出旋律
c++·stm32·单片机·嵌入式硬件·c
stolentime6 小时前
洛谷P10515 转圈题解
c++·算法·数学建模·贪心算法
tdtsmt7 小时前
穿戴硬件量产工艺实录:天地通电子智能手表主板 SMT 贴片案
c++
m0_7345717611 小时前
深入理解C++ 析构函数<一>基本概念
开发语言·c++
t-think12 小时前
C++ string 类(上)—— string类初识与常用接口详解
开发语言·c++
cpp_learners12 小时前
C++ 实现责任链模式(Chain of Responsibility):从一堆 if-else 到可插拔的处理管道
开发语言·c++·责任链模式
郝学胜_神的一滴12 小时前
C++11 工程级应用 12:编译期类型魔法,干掉重复与臃肿的代码
c++·visual studio
David猪大卫13 小时前
【C++修炼】哈希表的实现
数据结构·c++·笔记·学习·算法·哈希算法·散列表
广州山泉婚姻13 小时前
列表初始化:C++11全新初始化体系
c++·人工智能
莫生灬灬13 小时前
灵码 LingBuilder:用中文写代码,确定性生成真实 C++ 工程(开源)
c++·开源·mfc