在SimpleITK形式下,将RAS和IJK坐标系互转

本文介绍如何使用Python的SimpleITK库在Slicer软件中实现从RAS坐标到像素坐标的转换方法。首先读取了nrrd格式的医学图像文件,并通过调整方向矩阵和原点坐标来适配Slicer的坐标系。接着定义了两个函数:一个用于将RAS坐标转换为IJK像素坐标,另一个则实现了逆向转换。

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

参考文章slicer软件中RAS转换为像素坐标方法

import SimpleITK as sitk    
import numpy as np            

itkimage=sitk.ReadImage("MRBrainTumor1.nrrd")

#先转成list,再由list转为numpy
numpyOrigin = np.array(list(itkimage.GetOrigin()))
numpyOrigin[0]=-numpyOrigin[0]
numpyOrigin[1]=-numpyOrigin[1]


numpySpacing= np.array(list(itkimage.GetSpacing()))

numpyDirection= np.array(list(itkimage.GetDirection())).reshape(3,3)
numpyDirection[0,0]=-numpyDirection[0,0]
numpyDirection[1,1]=-numpyDirection[1,1]

def RAS_to_IJK(ras, origin, direction, spacing):
    ras = ras - origin
    ras = np.matmul(np.linalg.inv(direction), ras)
    ijk = ras / spacing

    return ijk


def IJK_to_RAS(ijk, origin, direction, spacing):

    ras = ijk * spacing
    ras = np.matmul(direction, ras)
    ras = ras + origin
    
    return ras
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值