3D Slicer 教程三 ---- 坐标系

   上篇提到3D Slicer 教程二 ---- 数据集-CSDN博客 3d slicer的坐标系与大多数医学影像软件使用LPS(左、后、上)坐标系统不太一样, 今天就仔细介绍一下坐标系的区别,复盘一下在影像处理中遇到的坐标问题(集中在坐标处理相关的,图像插值,图像处理, 定位线,翻页同步,空间定位,三维定位,mpr切片,vr测量,cpr重建等)

  在 2000 年代初期,当 Slicer 开始开发时,LPS 和 RAS 坐标系统都被广泛使用。GE的扫描设备传统上使用 RAS 坐标系统,而西门子(Siemens)和其他公司则使用 LPS。GE 的一些研究人员是 Slicer 的早期贡献者,因此 Slicer 选择了 RAS 坐标系统作为其内部表示。

一. 介绍

在日常的影像里面一般包括3种坐标系统: 世界坐标系统(world), 解剖坐标系(anatomical),图像坐标系统(image coordinate system).

                                                            图1

二.世界坐标系

    世界坐标系统(World Coordinate System)通常是一个笛卡尔坐标系统,用于定位模型(例如MRI扫描仪或患者)。每个模型都有自己的坐标系统,但只有一个世界坐标系统来定义每个模型的位置和方向.

  • 一个全局的参考坐标系,用于在更大的空间范围内定位和定向对象。
  • 在医学成像中,可以用于将患者的扫描数据与全球或设施范围内的其他数据关联起来

  跟这个世界坐标系比较相近的是设备坐标系(Device Coordinate System)

    与成像设备相关的坐标系,用于描述在设备空间中的位置和方向。例如,CT或MRI扫描仪中使用的坐标系,通常与设备的空间对齐。

这个坐标系就是上面的第一个 ,上面设备就是常见ct设备.

世界坐标系在模型定位,图像配准和融合,多模态图像融合,导航系统,设备校准,远程医疗和协作等用的比较多.

三. 解剖坐标系(anatomical)

又称患者坐标系统(patient coordinate system)

这个空间由三个平面组成,用来描述人类的标准解剖位置:

  • 轴向平面(axial plane)与地面平行,分隔头部(Superior)和脚部(Inferior)。
  • 冠状平面(coronal plane)与地面垂直,分隔前部(Anterior)和后部(Posterior)。
  • 矢状平面(sagittal plane)与地面垂直,分隔左侧和右侧(Left and Right)。

根据这些平面,所有的轴都有正方向的标记(例如,负的Superior轴由Inferior轴表示)。

解剖坐标系统是一个连续的三维空间,其中对图像进行了

采样。在神经成像中,通常根据被扫描的人脑来定义这个空间。因此,3D基础是沿着解剖轴的前后、上下、左右来定义的。

然而,不同的医学应用使用不同的3D基础定义。最常见的基础有:

  • LPS(Left, Posterior, Superior):用于DICOM图像,表示从右向左、从前往后、从下向上的方向。
  • RAS(Right, Anterior, Superior):与LPS类似,但前两个轴翻转,表示从左向右、从后向前、从下向上的方向。

因此,两种约定之间的唯一区别是前两个坐标的符号是相反的。

注意:

1. Slicer 内部使用 RAS 坐标系统存储所有数据类型的坐标值。

2. 为了与其他软件兼容,Slicer 假设所有文件中的数据都以 LPS 坐标系统存储,除非文件中明确声明坐标系统为 RAS。因此,当 Slicer 读取或写入文件时,可能需要翻转前两个坐标轴的符号,以将数据转换为 RAS 坐标系统。

 这种内部使用 RAS 坐标系统,而与外部文件交换时使用 LPS 坐标系统的策略,使得 Slicer 能够与遵循不同坐标系统标准的设备和软件进行交互。这也意味着我们在使用 Slicer 时需要意识到坐标系统可能的变化,并在必要时进行适当的转换。

四.图像坐标系统(Image Coordinate System)

这个坐标系就是我们熟悉的坐标系了

医学扫描仪创建了规则的点和单元格的矩形数组,这些点和单元格从左上角开始。i轴向右增加,j轴向下增加,k轴向后增加。

除了每个体素(voxel)的灰度值(ijk)之外,还存储了解剖坐标的原点和间距。

原点代表了解剖坐标系统中第一个体素(0, 0, 0)的位置,例如(100, 50, -25)毫米。

这个一般是dicom Tag: 0020,0032 Image Position (Patient) 患者原点坐标值

间距指定了每个轴上体素之间的距离,例如(1.5, 0.5, 0.5)毫米。

这个一般  dicom tag:(0028,0030) Pixel Spacing 像素间距

这意味着,如果你知道了原点的位置和体素的间距,你就可以计算出图像坐标系统中任何体素在解剖坐标系统中的对应位置。

假设你有一个图像,其原点位于(100, 50)毫米,间距为(1.5, 0.5)毫米。这意味着第一个体素(0, 0)位于(100, 50)毫米的位置,下一个体素(0, 1)将位于(100, 50 + 0.5)毫米的位置,而体素(1, 0)将位于(100 + 1.5, 50)毫米的位置。通过这种方式,你可以确定图像中每个体素在实际解剖空间中的位置。

总结一下这个转换,在平时的处理中,世界坐标系默认就跟患者坐标系一样了(业务不涉及到配准这边)  以图1为准

(1) 先Image Position (Patient) (DICOM Tag: 0020,0032):表示图像左上角在患者坐标系中的位置,单位通常是毫米(mm)。这个标签包含三个值,分别对应于X、Y、Z轴的位置.

确定原点的坐标 确定图1 第3个图左上角在第2个图的位置

(2)Image Orientation (Patient) (DICOM Tag: 0020,0037):定义了图像坐标与解剖学坐标体系对应坐标的夹角余弦值。这个标签包含六个值,前三个值表示图像行(row)的方向,后三个值表示图像列(column)的方向。这些值是相对于患者身体的,通常使用LPS(左后上)坐标系

确定图1 第3个图在 第2个图 的方向

(3)其他位置就是相对于 图1  第3个图的偏移,(偏移带像素间隔的)

Pixel Spacing (DICOM Tag: 0028,0030):给出了图像行和列方向的像素间距,即分辨率,单位也是毫米(mm)。这个标签包含两个值,第一个值表示行间距,第二个值表示列间距.

同一个图上, 同个序列不同图 涉及到 Spacing Between Slices (DICOM Tag: 0018,0088):表示相邻切片之间的物理距离,单位通常是毫米(mm)

Slice Thickness (DICOM Tag: 0018,0050):表示每个切片的厚度,单位也是毫米(mm)

(二维图像其实是一个三维体的像素投影  跟三维里面的最大,最小,平均密度投影不太像,这块是取的体接近最中间那片图像)

补充:

    (1) ITK坐标系统

医学扫描仪(如CT、MRI等)在获取图像数据时,会有一个固定的坐标系统来标记和定位图像中的每个点。这个坐标系统就是IJK坐标系统,它定义了图像数据的三维空间,其中:

  • I代表图像的一层中,水平方向上的位置(通常是左右方向)。
  • J代表图像的一层中,垂直方向上的位置(通常是前后方向)。
  • K代表图像堆栈中的层级位置,也就是沿着扫描方向的深度(通常是上下方向)。

IJK坐标系统关注的是图像数据本身,而不是扫描仪设备或扫描台的位置。这意味着,即使扫描台或患者移动,图像数据在IJK坐标系统中的位置也是固定的。这个坐标系统对于图像的采集、处理和分析都是非常重要的,因为它确保了图像数据的空间一致性和准确性。

(2) XYS 坐标系统

  这个就是平时用的右手坐标系

 (3)感兴趣的可以看看这个, 从LPS 转成RAS,坐标变换

  将LPS(左、后、上)坐标系转换为RAS(右、前、上)

  • 在LPS坐标系中,X轴从右向左增加,Y轴从前往后面增加,Z轴从下向上增加。
  • 在RAS坐标系中,X轴从左向右增加,Y轴从后向前增加,Z轴同样从下向上增加
  • 从LPS到RAS,需要对前两个坐标轴进行翻转。这可以通过一个变换矩阵来实现,该矩阵对X和Y轴的符号进行反转。
  • 一个简单的变换矩阵可以表示为:
  • 这个矩阵会将LPS坐标系中的点转换到RAS坐标系

看看官方文档 https://download.csdn.net/download/smallITperson/89889256 不要积分喔

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/896343.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

服务器软件之Tomcat

服务器软件之Tomcat 服务器软件之Tomcat 服务器软件之Tomcat一、什么是Tomcat二、安装Tomcat1、前提:2、下载3、解压下载的tomcat4、tomcat启动常见错误4.1、tomcat8.0 startup报错java.util.logging.ErrorManager: 44.2、java.lang.UnsatisfiedLinkError 三、Tomca…

Ansible概述

目录 一、ansible简介 二、absible的特点 三、ansible的工作原理以及流程 四、ansible环境安装部署 五、ansible命令行模块 六、inventory 主机清单 一、ansible简介 Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。…

应用层——电子邮件、MIME、简单网络管理协议SNMP

电子邮件 电子邮件系统采用三个主要构件组成:用户代理、邮件服务器、电子邮件所需的协议 我们可以简单的认为邮件服务器中有很多邮箱,还有用来缓存再转发邮件的缓存,发送方使用用户代理通过邮件发送协议。例如SMTP将邮件发送给发送方。 邮件服…

基于MATLAB的混沌序列图像加密程序

设计目的 图像信息生动形象,它已成为人类表达信息的重要手段之一,网络上的图像数据很多是要求发送方和接受都要进行加密通信,信息的安全与保密显得尤为重要,因此我想运用异或运算将数据进行隐藏,连续使用同一数据对图…

排序04 视频播放建模

视频播放时长 用p拟合y,t是用户的实际观看时长,用y和p熵作为损失函数,使得p接近y。 输出z,对z做sigmoid变换。 exp(z)可以视为对播放时长的预估 视频完播 回归方法 二元分类方法 调整:预估完播率不能直接使用

预置持久化应用或者常驻应用会导致自升级不了android:persistent=”true”属性

1.错误打印: 2.问题原因: Android系统策略限制,持久化&system 不能自升级 3.持久化应用通常会在AndroidManifest.xml上下文有没配置android:persistent”true”属性 4.解决方案: 1.应用去掉android:persistent”true”属性…

【基于docker的深度学习训练环境】关键步骤记录

最近给公司搭建了一个小型的深度学习环境,实现了多人通过SSH对GPU资源的利用,下面对一些关键架构和易用性部分进行记录。 一、整体软硬件框架 1、硬件配置,采用的双GPU的方案,两块消费级显卡。 2、应用层架构 宿主机系统为ubunt…

【Redis】缓存预热、雪崩、击穿、穿透、过期删除策略、内存淘汰策略

Redis常见问题总结: Redis常见问题总结Redis缓存预热Redis缓存雪崩Redis缓存击穿Redis缓存穿透 Redis 中 key 的过期删除策略数据删除策略 Redis内存淘汰策略一、Redis对过期数据的处理(一)相关配置(二)内存淘汰流程&a…

WSL2-轻量级AI训练场景最佳生产环境

WSL2 只适用于 Win 10 、Win11 在运行 AI 软件、AI 模型训练,Linux 是最佳的操作系统。 在运行各种软件,如:Stable Diffusion Web UI 等,使用 Docker 容器运行也更方便后期的快速复用,同样的 Docker 容器在 Linux 中…

【STM32学习】PWM学习(四),散热风扇的控制,PWM调速调制,

目录 1、基础概念 2、PWM调速风扇功能介绍 2.1风扇功率 2.2、PWM输出流程图 2.3、PWM占空比计算 2.4参数计算 3、配置实现 3.1、添加TIM1功能 3.2、生成代码 3.3、修改代码 1、基础概念 参考:【STM32学习】PWM脉冲宽度调制学习笔记,&#xff…

关于k8s集群高可用性的探究

1. k8s的高可用的核心是什么? 说到核心、本质 意味着要从物理层来考虑技术 k8s是一个容器编排管理工具,k8s受欢迎的时机 是docker容器受欢迎时,因为太多的docker容器,管理起来是一个大工程 那么刚好k8s是google自己用了十来年…

《向量数据库指南》揭秘:GraphRAG如何重塑知识图谱与RAG的融合之道

嘿,各位向量数据库和AI领域的探索者们,我是你们的老朋友,大禹智库的向量数据库高级研究员王帅旭,也是《向量数据库指南》的作者。今天,咱们来聊聊一个既前沿又实用的话题——GraphRAG,一个通过结合知识图谱来增强检索增强生成(RAG)能力的新方法。如果你对向量数据库和A…

web网页QQ登录

代码&#xff1a; <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>QQ登录ent</title> </head> <style>ul > li{list-style: none; } a …

Axure重要元件三——中继器函数

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;中继器函数 主要内容&#xff1a;Item、Reperter、TargetItem 1、中继器的函数&#xff1a;Item\Reperter\TargetItem Item item&#xff1a;获取…

【重学 MySQL】七十四、揭秘存储过程的强大功能与实战技巧

【重学 MySQL】七十四、揭秘存储过程的强大功能与实战技巧 存储过程简介存储过程的分类存储过程的创建基本语法语法元素分析注意点示例 存储过程的调用基本语法语法元素分析调用示例注意事项 存储过程的强大功能实战技巧示例总结 在 MySQL 的学习过程中&#xff0c;存储过程&am…

如何删除Maven

1.找到Maven安装路径 方法一&#xff1a; 可以直接在文件资源管理器里面选中“此电脑”然后右上角搜“apache-maven”&#xff0c;这个过程可能长达几分钟甚至更久 方法二&#xff1a; 这里推荐一个名叫“Everything”的软件&#xff0c;能够快速的查找到需要的文件 2.找到本…

Vue3中ref和reactive的对比

1. ref 定义 用途: 用于创建基本数据类型或单一值的响应式引用。语法: const myRef ref(initialValue); 特性 返回一个包含 .value 属性的 Proxy 对象。适用于基本数据类型&#xff08;如数字、字符串、布尔值等&#xff09;和单一值。 import { ref } from vue;const co…

C++学习笔记1——引用

引用变量是C新增的一种复合类型。 引用是已定义的变量的别名。如变量a为变量b的应用&#xff0c;则可以交替使用a或者b来表示该变量。引用变量主要用于函数的形参&#xff0c;此时函数使用的是该变量的原始数据而不是变量的副本。其作用有些类似于指针&#xff0c;但在类设计中…

pychar社区版下载

文章目录 第⼀步&#xff1a;下载社区版第二步&#xff1a;安装pycharm社区版第三步&#xff1a;创建项目 第⼀步&#xff1a;下载社区版 下载网址&#xff1a;https://www.jetbrains.com/pycharm/download/other.html 第二步&#xff1a;安装pycharm社区版 第三步&#xff1a…

从选题到致谢!50条经典ChatGPT学术指令1天完成1篇论文

AIPaperGPT&#xff0c;论文写作神器~ https://www.aipapergpt.com/ 还在为毕业论文头疼&#xff1f;今天给你分享50条神仙提示词&#xff0c;直接1天搞定整篇论文&#xff01;从选题到致谢&#xff0c;全流程全覆盖。你可能不信&#xff0c;论文还能这么快写完&#xff1f;真…