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

参考文章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
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值