【医学影像】如何无信息损失的读取、处理和保存nii文件(python,nibabel)

最近工作中需要解决一个问题:

读取nii格式的医学图像,更改内部的矩阵,重新保存成nii数据

但是Nifti数据本身是除了 矩阵信息(也就是图像信息之外),还有和物理坐标相关的 仿射矩阵 以及 Header头文件 信息,但是nibabel的获取数据的方法get_data()是一个单向操作,只可以获取数据,并不能把数据直接存到一个现成的nii文件中,并没有诸如nii_img.data = newdata 这样的方法,意味着不能直接对数据进行更改。

更坑的是,网上也没有教程,官方也没有教程,所以我决定自己写一个!

 

import nibabel as nb

#读取nii文件
nii_img = nb.load('test.nii.gz')
nii_data = nii_img.get_data()
new_data = nii_data.copy()

#省略一些处理data的骚操作,比如:
#new_data[new_data>0] = 1

#把仿射矩阵和头文件都存下来
affine = nii_img.affine.copy()
hdr = nii_img.header.copy()

#形成新的nii文件
new_nii = nb.Nifti1Image(new_data, affine, hdr)

#保存nii文件,后面的参数是保存的文件名
nb.save(new_nii, 'new_test.nii.gz')

 

  • 18
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值