解剖学坐标体系(LPS , RAS和LAS)

本文介绍了医学图像处理中的关键坐标体系——解剖学空间坐标,重点讲解了RAS和LPS坐标系的区别及其在医学软件中的应用,特别强调了在Unity中从LPS到RAS的转换问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对医学图像处理技术来说,最重要的坐标体系是解剖学空间坐标体系。这个坐标体系由三个位面组成,用来描述标准的人体在解剖学上的位置。在解剖学坐标系中,单位基本都是mm。

 由上图知,RAS是右手坐标系,LAS是左手坐标系, LPS什么也不是只是Dicom中专用罢了。

Unity是左手坐标系,但医学图像软件没有一个是LAS的,因此都需要经转换之苦。

解刨学坐标系

横断面(The axial plane):与地面平行,分离头部(Superior)与脚部(Inferior)

冠状面(The coronal plane):与地面垂直,分离人体的前(Anterior)后(Posterior)

矢状面(The sagittal plane):与地面垂直,分离人体的左(Left)右(Right)

这个解剖学坐标体系是一个连续的三维空间,在这个空间中,图像被采样。在神经成像中,3D基本上通过解剖轴Anterior-Posterior,Inferior-Superior,Left-Right来定义。对这些位面来 都以正向标记。(如S轴 --Superior的负面呈现为I轴--Inferior)

不同医学应用软件运用不同的3D基本定义从根本上来说,这两种坐标轴(LPS和RAS)是等价使用的,有着相同的逻辑,但是有必要知道图像到底引用了哪种坐标轴。RAS与LPS类似,不同的是两个轴翻了个头。

1)LPS(Left,Posterior,Superior),主要用于Dicom与ITK工具包上

2)RAS(Right,Anterior,Superior),主要3D Slicer用RAS,在STL导出OBJ格式的时候slicer提供了坐标系LPS和RAS两个选项(LPS简直是扯淡,我原来还误以为它是左手坐标系呢,在Unity 中啥都对不上,嗨,只能受苦选RAS,然后再用代码在UNITY中转换了)。



部分参考链接:https://www.jianshu.com/p/b8fe11a33319

 

### LPS RAS 坐标系的区别 在医学成像领域,两种常见的坐标系统分别是LPS(Left-Posterior-Superior)RAS(Right-Anterior-Superior)。这两种坐标系统的区别主要体现在轴的方向定义上: - **LPS**:这种坐标系被广泛应用于DICOM标准中,在该坐标系下,X轴指向患者的左侧,Y轴指向前方(即患者背部),Z轴则朝向头顶方向。因此,正数增量分别对应于更靠左、更往后以及更高位置的变化[^1]。 - **RAS**:相比之下,RAS是一种更加直观的右手直角坐标系,其中X轴指向右侧,Y轴指向身体前方,而Z轴同样垂直向上延伸至头部。这意味着当沿着这些轴增加数值时,会移动到右边、前面或者上方的位置[^2]。 对于3D Slicer而言,默认情况下采用的是RAS坐标系来表示空间中的点;然而,由于许多其他应用程序可能遵循不同的约定——特别是那些基于DICOM的数据源倾向于使用LPS——所以在不同平台之间交换文件之前理解并适当地转换坐标非常重要。 ### 导出OBJ模型以适应Unity环境的方法 为了确保从3D Slicer导出的对象能够在Unity环境中正确显示而不发生任何变形或错位现象,可以采取如下措施之一来进行必要的调整: #### 方法一:通过脚本自动完成坐标变换 如果希望保持原始数据不变,则可以在导入前利用Python或其他编程语言编写一段简单的代码片段用于执行所需的矩阵运算从而实现由LPSRAS坐标的映射过程。下面给出了一种适用于大多数情况下的通用解决方案示例: ```python import numpy as np def lps_to_ras(points_lps): """ 将给定的一组三维点从LPS坐标系转换为RAS坐标系 参数: points_lps (numpy.ndarray): 形状为(N, 3) 的数组,代表 N 个位于 LPS 空间内的顶点集合 返回值: numpy.ndarray: 经过转换后的相同数量级的新顶点列表,现在处于 RAS 中。 """ transformation_matrix = np.array([ [-1., 0., 0.], [0., -1., 0.], [0., 0., 1.] ]) return np.dot(transformation_matrix, points_lps.T).T # 使用方法 points_in_lps_space = ... # 这里应该是您要转换的实际点云数据 transformed_points_for_unity = lps_to_ras(points_in_lps_space) ``` 此函数接受一组按照LPS顺序排列的空间坐标作为输入参数,并返回经过适当旋转之后的结果以便它们能够匹配目标应用所期望的形式。请注意,这里假设所有的几何体都围绕原点居中分布;如果不是这样的话,还需要额外考虑平移操作。 #### 方法二:修改3D Slicer设置或插件配置 另一种更为简便的方式是在3D Slicer内部直接指定输出格式选项。具体来说就是找到负责管理网格对象保存行为的相关菜单项或是安装第三方扩展工具包,进而允许用户自定义最终产物的具体属性设定。例如,“Export Models”模块提供了多种途径让用户控制生成STL/OBJ等常见CAD文件类型的细节特征,包括但不限于选择特定参照框架等等。 一旦选择了适合当前项目的方案后,就可以继续按常规流程完成后续工作流直至获得满意的效果为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值