VTK和ITK中的坐标系统

2023-05-16

当我们在处理医学图像和应用时,一个问题就是坐标系统之间的不同。在图像应用中通常有三个坐标系,分别是世界坐标系,解剖坐标系和图像坐标系。从左至右依次为世界坐标系,解剖学坐标系和图像坐标系
每种坐标系目的不同,呈现数据的方式也不一样。
解剖坐标系由三个平面组成,从侧面看为矢状面,从正面看为冠状面,从上往下看为横截面。当人体结构被看作图像时,其左边和右边刚好反过来,但其前后和上下保持不变。在解剖位置,使用xyz坐标系,X轴从前到后,y轴从左到右,z轴从上到下,并且适用于右手法则。下面的图像有助于帮助理解。
二维坐标系统

三维坐标系统
三维笛卡尔坐标系统,提供了三个物理空间维度-深度、宽度和高度。
点的x,y和z坐标可以表示到yz平面,xz平面,xy平面的距离。xy,yz和xz平面将三维空间分成8个部分,类似二维平面分成4部分。尽管对xy平面已经建立了4个象限的约定,但是在三维空间中只使用了第一象限,它包含的点的x,y,z坐标都为正。
**

世界坐标系

**
世界坐标系通常就是笛卡尔坐标系,其中放置了模型(例如MRI扫描仪或患者)。每个模型都有自己的坐标系,但是只有一个世界坐标系来定义每个模型的位置和方向。

解剖坐标系

对于医学成像技术而言,最重要的树模型坐标系时解剖坐标系(也称患者坐标系)。该空间由三个平面组成,用于描述人类的标准解剖位置。
轴向平面平行于地面并且从脚(底部)到头(顶部)分开
冠状面垂直于地面并从后(背部)向前(前部)分开
矢状面从右向左分开。
从这些平面可以看出所有轴的符号都为正。
解剖坐标系是一个连续的三维空间,其中已对图像进行了采样。 在神经成像中,通常相对于要扫描其大脑的人来定义此空间。 因此,沿着前后,下上和左右的解剖轴定义3D基础。
但是,不同的医疗应用程序对此3D基础使用不同的定义。 最常见的是以下基础:
LPS(Left,Posterior,Superior左,前,上)被用于DICOM图像在ITK中
LPS={从右到左}{从前到后}{从下到上}
RAS(Right,Anterior,Superior右,后,上)类似于LPS但前两个轴翻转,用于3D Slicer
RAS={从左到右}{从后到前}{从下到上}
这两个基础都同样有用和合乎逻辑。 仅仅需要知道图像所基于的基础。

图像坐标系统

图像坐标系描述了如何获取有关解剖结构的图像。 医学扫描仪会创建规则的矩形点和单元格阵列,这些点和单元格从左上角开始。 i轴向右增加,j轴向底部增加,k轴向后增加。
如来每个体素(i,j,k)的密度值被存储之外,解剖坐标系的原点和间隔也被存储。
原点表示在解剖坐标系中的第一个像素(0,0,0).eg(100mm,50mm,-25,)
图像间隔表示每个轴体素间的距离,eg(1.5mm,0.5mm,0.5,)

在这里插入图片描述
使用原点和间隔,体素在解剖坐标系中相应的位置就可以计算出来。

图像转换

从图像空间向量(i,j,k)到解剖空间向量x是一个仿射变换,是由线性变换A和平移变换t组成
在这里插入图片描述
转换矩阵A是一个3x3矩阵,携带所有空间方向和轴缩放的信息。t是一个3x1的向量,包含第一个体素几何位置的信息。
在这里插入图片描述
最后一个等式表明线性变换是通过矩阵乘法,平移是通过矩阵加法实现的。为了通过矩阵来表示转换和平移,必须使用一个增强矩阵。矩阵A要求在底部增加额外一行0,右边额外增加一列,平移向量。右下角为‘1’
在这里插入图片描述
取决于使用的解剖空间(LPS OR RAS),这个4x4矩阵被称为IJKtoLPS或IJKtoRAS矩阵。

2D计算IJtoLS矩阵

下列图像展示了解剖空间(LPS)在左边和相应的图像坐标在右边
在这里插入图片描述
原点(在解剖空间第一个像素的坐标)是(50mm,300mm),两个像素之间的间隔是(50mm,50mm).
在2D例子中A是一个2X2矩阵t是一个2X1向量。因此线性变换等式为在这里插入图片描述
通过将IJtoLS矩阵与右侧的向量相乘,将获得以下乘积:
在这里插入图片描述
等式和矩阵相乘看出总共有6个未知参数(A11,A12,A21,A22,t1,t2).
但是,有关原点和间距的知识允许图像和解剖空间之间具有以下关系:
在这里插入图片描述
因此有如下6个方程在这里插入图片描述
根据上面提到的t包含关于第一个像素几何坐标的信息。因此IJtoLS矩阵为
在这里插入图片描述
再R(A)S基中有如下示意图
在这里插入图片描述
IJtoRS矩阵为在这里插入图片描述
这个矩阵和IJtoLS矩阵很相似,但有2个不同
由于原点的不同t改变了
有轴翻转了,所以IJtoRS矩阵的第一列要加负号。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VTK和ITK中的坐标系统 的相关文章

  • VTK交互器

    VTK交互器定义了用户了与VtkWidget界面的交互方式 结构图如下 交互器类名 功能 vtkInteractorStyle 一个实现大部分动作的基类 对交互只有接口 没有实际功能 vtkInteractorStyle3D 允许用户交互
  • Windows下编译VTK-9.1.0

    VTK 9编译要点 VTK 9 1 0 src CMake vtkModule cmake 第4075行可以修改Debug的库后缀 VTK 9 2 0 src CMake vtkModule cmake 第4230行可以修改Debug的库后
  • 使用Python+VTK获取3D体渲染模型任意角度切面(更新中)

    目录 效果图 实现目标 安装依赖 Code 其他需求 效果图 废话少说先上效果图 右边红色的plane是想要获取3D模型对应切面的平面 左边是这个切面的切片的图像 实现目标 定义一个任意角度的切面 都能把体绘制模型的这个切面的图像获取 并且
  • 关于 VTK 7.1.0 + python3.X 的 pycharm 开发环境的搭建

    在此记录一下关于关于 VTK 7 1 0 python3 X 的 pycharm 开发环境的搭建中碰到的问题 一 什么是 VTK 以及支持 python 的版本 VTK visualization toolkit 是一个开源的免费软件系统
  • VTK5.10.1+Cmake+vs2010整合安装

    1 下载 VS2010就自己在网上找了咯 这里不提供具体路径下载了 vtk 5 10 1 zip源程序 vtkdata 5 10 1 zip 数据 vtkDocHtml 5 10 1 tar gz 文档可以不下载 vtk相关安装程序下载 h
  • win10环境下PCL安装和配置回顾(一)

    2020年博主有写过几篇关于PCL的博客 这边想先回顾下 再增加点新内容 之前写的博客专栏如下链接 https blog csdn net jiugeshao category 11993239 html spm 1001 2014 300
  • VTK配置步骤(WIN7 64位 + VS2012 + VTK-5.10.1)

    前面的废话可以不看 我很啰嗦 由于项目中需要用到VTK 上周三就开始编译VTK源码 中间出现了一系列问题 首先是下载的高版本代码顺利编译后 自己新建的工程总是提示链接错误 尽管所有的库文件都加入了 还是不正确 之后下载了vtk较低版本5 8
  • vtk使用之Mapper和actor的关联

    参考博客 VTK的Mapper Dezeming的博客 CSDN博客 vtk mapper VTK 图形进阶 vtkPolyData数据生成与显示 简 单的博客 CSDN博客 vtkpolydata 类vtkMapper及其派生类 把输入的
  • Google Colab 中保存的文件位于哪里?

    我正在尝试访问保存热方程解的 VTK 文件 但我不知道它在 Colab 中的保存位置 from fenics import import time T 2 0 final time num steps 50 number of time s
  • 如何在vtk中以不同的颜色显示点云?

    我有一个点云 我想在 vtk 中可视化 我想根据某些条件看到它们具有不同的颜色 我正在使用Python 关于如何做到这一点有什么建议吗 多谢 下面是一个根据 z 轴值设置点颜色的示例 import vtk from numpy import
  • 来自 Fortran 代码的 RECTILINEAR_GRID 的二进制 VTK

    我有一个 fortran 代码来生成二进制 VTK 格式的网格 此代码生成一个二进制 VTK 文件 如下所示 vtk DataFile Version 3 0 vtk output BINARY DATASET RECTILINEAR GR
  • vtkOBJReader 将 OBJ 作为单独的 vtkPolyData 对象导入

    我的目的是获得 vtkPolyData 通过 vtk OBJ 导入实现理想的颜色 纹理 传递给 k3d 查看器使用 k3d vtk poly data
  • 从多个 MPI 输出组成 VTK 文件

    对于盖驱动腔 CFD 的格子玻尔兹曼模拟 我将立方域分解为 也是立方 8 个子域 这些子域按 8 个等级独立计算 每个 MPI 等级都会为每个时间步生成一个 VTK 文件 并且由于我使用的是 ParaView 所以我希望将整个事物可视化为一
  • 在python中使用VTK找到3D空间中两个圆柱体的交集

    在 python 中使用 VTK 我编写了一些代码来为我想要的对象创建一个 actor 例如对于气缸 def cylinder object startPoint endPoint radius my color DarkRed USER
  • vtkRenderer 错误

    我是 vtk 的新手 所以我首先使用 CMake 和 Visual Studio 2017 构建 vtk 8 1 1 并使用默认选项和示例 许多示例运行良好 但其中一些会出现错误 这是 CreateTree 示例 但 HelloWorld
  • 如何在一个 .vtu 文件中写入多个 vtkUnstructedGrid

    我想在一个 vtu 文件中写入多个非结构化网格 我在下面尝试过 MakeHexagonalPrism 和 MakeHexahedron 返回 vtkSmartPointer 类型 结果是输出文件中只有一个非结构化网格 vtkSmartPoi
  • 使用vtk和k3d在jupyter笔记本中渲染gltf/glb文件

    我探索了如何在 jupyter 笔记本中内联渲染 gltf glb 文件以保持查看器回调交互性完整的可用方法 我最终使用 vtk 和 k3d 来实现这一目标 我遇到的两个障碍是 如何使用 vtkGLTFReader 从 vtkPolyDat
  • 如何将 vtkSphere 保存到 VTK 文件?

    我正在尝试将多个球体保存到一个文件中 以便稍后使用 ParaView 进行可视化 我拥有的是一个文本文件 其中包含有关每个球体的位置和形状 半径 的信息 我正在使用 Python 和 VTK 构建一个文件来可视化 ParaView 中的数据
  • 在 Python 中保存 VTK 中的数据数组

    Question 如何从 Python 中的 VTK 中提取数据集数组并将其保存在新文件中 e g 对于具有幅度数据集的 VTKforce 移位 and current仅提取移位并将其保存在较小的文件中 Problem 我在远程服务器上有数
  • Qt 创建者 + MITK (Linux)

    我正在尝试使用MITK 与 Qt Creator 我已经通过 ccmake 成功编译并使用了 VTK 和 ITK 我已经编译了 MITK超级建造模式 它下载 CTK VTK ITK 等 然后我就配置好了 我已经用 make 编译了 大约两个

随机推荐

  • 认识MEC

    文章目录 一 什么是MEC 二 什么是移动通信系统 三 为什么要有MEC 一 什么是MEC 所谓MEC 从字面上直观理解就能知道 这是一种运用在移动通信系统 Mobile 边缘节点 Edge 并承担大量计算任务 Computer 的玩意儿
  • ROS学习-2 工作空间文件结构和创建功能包

    古月居ROS入门21讲第九个视频 src放功能包的源码和laungh文件 build是编译过程中产生的中间文件 xff0c 二进制文件 install是安装空间 xff0c 放最终编译生成的可执行文件的 xff0c 可以给客户使用的文件 d
  • HC32L系列MCU在KEIL新建工程后在JLINK 下 SW Device下找不到设备的解决方法

    HC32L系列MCU在KEIL新建工程后在JLINK 下 SW Device下找不到设备的解决方法 问题 xff1a 新建工程HC32L的工程 xff0c 通过JLINK连接目标板 xff0c 点击KEIL环境的魔术棒 xff0c 选取JL
  • 漫谈Anchor-based和Anchor-Free

    曾几何时 xff0c Anchor based独霸目标检测这块CV疆域内的肥沃之地 如今 xff0c Anchor Free以其灵活的走位在目标检测中有了一席之地 xff0c 正以星星之火可以燎原之势扩大着自己的声势 Anchor base
  • 【新书推荐】【2020】基于MATLAB和Pixhawk的多轴飞行器设计与控制实践

    本书是斯普林格于2017年出版的 Introduction to Multicopter Design and Control 的姊妹版本 xff0c 旨在通过一个实际的过程帮助读者加深对多轴飞行器设计与控制的理解 As the siste
  • 【新书推荐】【2020】无人机系统设计

    从系统角度全面介绍无人飞机系统的设计和分析 Provides a comprehensive introduction to the design and analysis of unmanned aircraft systems with
  • HDFS使用Kerberos

    转载自 xff1a http www datastart cn tech 2016 06 07 kerberos 1 html 本文尝试记录HDFS各服务配置使用kerberos的过程 xff0c 配置的东西比较多 xff0c 一定会有疏漏
  • 【无人机】【2011.03】无人飞行器的自主飞行研究

    本文为澳大利亚悉尼大学 xff08 作者 xff1a Nicholas R J Lawrance xff09 的博士论文 xff0c 共233页 无人机 xff08 UAV xff09 在一系列工业 科学和国防应用中提供了独特的能力 小型无
  • 【无人机】【2019】无人机巡线路由算法研究

    本文为美国密苏里理工大学 xff08 作者 xff1a YU LI xff09 的硕士论文 xff0c 共79页 随着机器人技术的迅速发展 xff0c 越来越多的公用事业公司使用机器人来执行各种任务 无人机是一种高效的高压输电线路巡检机器人
  • 【电力电子】【2010.09】无人机系统的自适应控制

    四旋翼直升无人机 本文为美国麻省理工学院 xff08 作者 xff1a Zachary Thompson Dydek xff09 的博士学位论文 xff0c 共139页 自适应控制被认为是未来高性能 关键安全系统 xff08 如高超声速飞行
  • 【新书推荐】【2018.11】无人机多传感器导航的非线性卡尔曼滤波

    2018 11 无人机多传感器导航的非线性卡尔曼滤波Nonlinear Kalman Filter for Multi Sensor Navigation of Unmanned Aerial Vehicles xff0c 共254页 如果
  • 【源码】轻松实现四轴飞行器的模拟与控制

    本模型取自题为 Quadcopter Simulation and Control Made Easy 的网络研讨会 xff0c 您可以在这里找到相关视频内容 xff1a https www mathworks com videos qua
  • 【无人机】【2014.08】无人机循环路由

    本文为以色列理工学院 xff08 作者 xff1a Nir Drucker xff09 的硕士论文 xff0c 共65页 许多无人驾驶飞行器 xff08 UAV xff09 针对的国防和民用相关任务涉及在各种时间限制下监测预先确定的一组地面
  • 学习【gRPC C++简单示例及代码】

    文章目录 0 启动程序1 未作修改部分1 1 demo proto 2 添加注释部分2 1 server cc2 2 client cc 3 重点修改部分3 1 CMakeLists txt原始代码3 2 CMakeLists txt精简修
  • 利用Gitee搭建私人仓库-https篇

    利用Gitee搭建私人仓库 https篇 第一步 xff1a 注册Gitee账号https gitee com 第二步 xff1a 创建私人仓库 安装git 第一步 xff1a 下载git git下载地址第二步 xff1a 按照默认安装就好
  • 嵌入式开发必看:PCB设计的这几个问题,你能明白了吗?

    PCB设计布局 xff0c 是把电路器件放在印制电路板布线区内 布局是否合理不仅影响后面的布线工作 xff0c 而且对整个电路板的性能也有重要影响 在保证电路功能和性能指标后 xff0c 要满足工艺性 检测和维修方面的要求 xff0c 元件
  • STM32实例-蜂鸣器实验

    本章我们通过另外一个实验来讲述 STM32 IO 口的输出 通过 STM32F1 芯片的一个 IO口控制板载有源 无源蜂鸣器 xff0c 实现蜂鸣器控制 蜂鸣器介绍 蜂鸣器是一种一体化结构的电子讯响器 xff0c 采用直流电压供电 xff0
  • PCM分析及音量控制

    PCM音量控制 本文转自 xff1a http blog jianchihu net pcm volume control html 一 声音的相关概念 声音是介质振动在听觉系统中产生的反应 声音总可以被分解为不同频率不同强度正弦波的叠加
  • 总结大佬经验,如何学习STM32?(入门、进阶)

    大佬经验 一 想快速入门进阶 xff0c 面向工作时 先把工作中需要的东西学会 xff0c 一项一项的来 xff0c 比如先把GPIO弄清楚 xff0c 怎么初始化 xff0c 怎么输入输出 xff0c 然后定时器 串口 ADC DAC D
  • VTK和ITK中的坐标系统

    当我们在处理医学图像和应用时 xff0c 一个问题就是坐标系统之间的不同 在图像应用中通常有三个坐标系 xff0c 分别是世界坐标系 xff0c 解剖坐标系和图像坐标系 每种坐标系目的不同 xff0c 呈现数据的方式也不一样 解剖坐标系由三