当前位置: 首页 > news >正文

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 不要积分喔

相关文章:

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

上篇提到3D Slicer 教程二 ---- 数据集-CSDN博客 3d slicer的坐标系与大多数医学影像软件使用LPS(左、后、上)坐标系统不太一样, 今天就仔细介绍一下坐标系的区别,复盘一下在影像处理中遇到的坐标问题(集中在坐标处理相关的,图像插值,图像处理, 定位线,翻…...

Video-LLaMA论文解读和项目部署教程

Video-LLaMA: An Instruction-tuned Audio-Visual Language Model for Video Understanding 相关工作 大型语言模型: 本文的工作基于这些LLM,并提供即插即用插件,使其能够理解视频中的视觉和听觉内容。 多模态大型语言模型: 现有…...

Elasticsearch设置 X-Pack认证,设置账号和密码

前言 以下Elasticsearch版本:7.9.3 ES自带的X-Pack密码验证: X-Pack是elasticsearch的一个扩展包,将安全,警告,监视,图形和报告功能捆绑在一个易于安装的软件包中,所以我们想要开启账号密码验证…...

机器学习——量子机器学习(Quantum Machine Learning)

机器学习——量子机器学习(Quantum Machine Learning) 量子机器学习(Quantum Machine Learning)——未来的智能计算量子机器学习的核心概念使用Qiskit进行量子机器学习——代码示例代码解析量子机器学习的应用结论 量子机器学习&a…...

Android Studio 的 Gradle 任务列表只显示测试任务

问题现象如下: 问题原因: 这是因为Android Studio 设置中勾选了屏蔽其他gradle任务的选项。 解决方法: File -> Settings -> Experimental 取消勾选Only include test tasks in the Gradle task list generated during Gradle Sync&…...

Keepalived:高可用性的守护神

Keepalived:高可用性的守护神 在现代企业IT系统中,高可用性是确保业务连续性和服务质量的关键要素。系统面对硬件故障、软件错误、人为失误或自然灾害时,依然能保持正常运行,这样的能力对于企业来说至关重要。为此,业界开发了一系列高可用性解决方案,其中Keepalived以其…...

Golang笔记_day08

Go面试题(一) 1、空切片 和 nil 切片 区别 空切片: 空切片是指长度和容量都为0的切片。它不包含任何元素,但仍然具有切片的容量属性。在Go语言中,可以使用内置的make函数创建一个空切片,例如:…...

如何在 React 中更新状态对象的某个值

在 React 中,我们经常需要更新组件的状态来反映 UI 的变化。如果状态是一个复杂的对象,比如一个包含多个筛选条件的对象,我们希望只更新其中的某个键,而不是整个状态对象。今天,我将向大家展示如何在更新状态时保留已有…...

edge浏览器:你的连接不是专用连接

最近在使用edge浏览器打开github时,发现打不开了,提升你的连接不是专用连接。试了很多种方法甚至重装了浏览器,都没有用。 直到看到了这篇文章,才得到解决: 10 个修复此站点在 Windows Edge 上的连接不安全的问题htt…...

PDF 软件如何帮助您编辑、转换和保护文件

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的…...

如何使用Java爬虫处理API接口返回的JSON数据?

处理API接口返回的JSON数据是Java爬虫开发中的一个常见任务。在Java中,有多个库可以帮助我们解析JSON数据,其中最流行的是Jackson和Gson。以下是使用这两个库处理JSON数据的基本步骤和示例代码。 使用Jackson处理JSON Jackson是一个功能强大的JSON处理…...

Ajax是什么?

Ajax是什么? Ajax是创建交互式网页应用的网页开发技术。简单来说就是网页在不加载的情况下,可以跟服务器交换数据,并更新页面的内容。 原理: 1. 创建xhr(xmlHttpRequest)对象; 2, 通过xhr对象的open()方法和…...

技术方向简介

掌握 Java基础,包括OOP思想、集合、常用的设计模式;熟悉基本的数据结构和算法; 掌握JVM虚拟机和Java多线程并发编程,熟悉线程池、线程安全机制、锁的使用; 熟悉MySQL、Oracle等关系型数据库锁、事务、索引相关知识,了解DDL原理&…...

延迟队列实现及其原理详解

1.绪论 本文主要讲解常见的几种延迟队列的实现方式,以及其原理。 2.延迟队列的使用场景 延迟队列主要用于解决每个被调度的任务开始执行的时间不一致的场景,主要包含如下场景: 1.比如订单超过15分钟后,关闭未关闭的订单。 2.比如用户可以…...

web APIs

目录 Web APIs第一天Dom获取&属性操作Web API基本认知变量声明作用和分类什么是DOMDOM树DOM对象 获取Dom对象根据CSS选择器来获取DOM元素(重点)其他获取DOM元素方法(了解) 操作元素内容对象.innerText 属性对象.innerHTML 属性…...

【Web前端概述】

HTML 是用来描述网页的一种语言,全称是 Hyper-Text Markup Language,即超文本标记语言。我们浏览网页时看到的文字、按钮、图片、视频等元素,它们都是通过 HTML 书写并通过浏览器来呈现的。 一、HTML简史 1991年10月:一个非正式…...

文献阅读:一种基于艾伦脑图谱的空间表达数据可视化、空间异质性描绘和单细胞配准工具

::: block-1 文献介绍 文献题目: AllenDigger,一种基于艾伦脑图谱的空间表达数据可视化、空间异质性描绘和单细胞配准的工具 研究团队: 王晓群(北京师范大学) 发表时间: 2023-03-16 发表期刊&#xff1a…...

Redis学习笔记(三)--Redis客户端

文章目录 一、命令行客户端二、图形界面客户端1、Redis Desktop Manager2、RedisPlus 三、java代码客户端 本文参考: Redis学习汇总(已完结) Redis超详细入门教程(基础篇) Redis视频从入门到高级,redis视频…...

面试知识梳理

一、vue篇章 1.vue2和vue3性能方面的提升最主要的原因是什么? 1、1响应式的系统优化: vue3使用了es6的proxy对象来实现响应式系统,取代了vue2中基于Object.defineProperty的方法。Proxy提供了更强大和灵活的拦截能力,可以更有效地…...

Unity3D ScrollView 滚动视图组件详解及代码实现

前言 在Unity3D中,ScrollView(滚动视图)是一种常用的UI组件,它允许用户通过滚动来查看超出当前视图范围的内容。ScrollView通常用于显示长列表、大量文本或图像等。本文将详细介绍Unity3D中的ScrollView组件,并提供代…...

13.java面向对象:封装

java面向对象:封装 我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。 封装(数据的隐藏)通常应禁止直接访问一个对象中…...

记录:网鼎杯2024赛前热身CRYPT01密码学

题目 下载并打开附件 判断为凯撒密码,尝试移位解密 在第10位发现flag字样 提交得分 解密脚本为个人自用,因比赛未结束故不开源...

GitHub加速

GitHub加速 终端命令行 支持终端命令行 git clone , wget , curl 等工具下载. 支持 raw.githubusercontent.com , gist.github.com , gist.githubusercontent.com 文件下载.注意:不支持 SSH Key 方式 git clone 下载. git clone git clone https://ghp.ci/https:…...

每天学习一个Linux命令:xrandr

xrandr 是一个用于在 X Window 系统中管理显示器的命令行工具。它可以用来设置显示器的分辨率、刷新率、旋转方向和连接状态等。下面是 xrandr 的详细用法和案例。 基本用法 xrandr [选项]常用选项 -q 或 --query: 查询当前显示器的状态。-s 或 --size: 设置显示器的分辨率。…...

路由表来源(基于华为模拟器eNSP)

概叙 在交换网络中,若要实现不同网段之间的通信,需要依靠三层设备(路由器、三层交换机等),而路由器只知道其直连网段的路由条目,对于非直连的网段,在默认情况下,路由器是不可达的&a…...

并查集(Union-Find)

并查集(Disjoint Set,也称为Union-Find数据结构)是一种用于高效处理不相交集(即集合内元素互相独立,没有交集)的数据结构。它主要用于解决以下两种操作: 查找(Find)&…...

Linux上的AI框架都有哪些?哪些AI框架适合驱动EACO地球链自动发展完善?

Linux上的AI框架种类繁多,涵盖了深度学习、机器学习、自然语言处理等多个领域。以下是一些常用的AI框架: 深度学习框架 Deeplearning4j 简介:Deeplearning4j(Deep Learning For Java)是Java和Scala环境下的一个开源分…...

java的第一个游戏界面

看视频02_大鱼吃小鱼_添加背景图_尚学堂_哔哩哔哩_bilibili 学习方法: 就对的视频小代码,书籍没有,遇到不懂的问ai 今日成果, 界面代码 package new_gameobj;import java.awt.Graphics; import java.awt.Image; import java.…...

【AIGC】ChatGPT提示词Prompt高效编写模式:Self-ask Prompt、ReACT与Reflexion

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯自我提问 (Self-ask Prompt)如何工作应用实例优势结论 💯协同思考和动作 (ReACT)如何工作应用实例优势结论 💯失败后自我反思 (Reflexion)如何工作…...

android studio无法下载依赖包问题

新建Flutter项目Android项目后,点击运行出现报错! error.png 这是镜像站点无法访问造成的!只需要修改为国内可访问的站点即可。 第一步:修改项目Android目录下的build.gradle buildscript { ext.kotlin_version 1.3.50 repositorie…...