读取和保存nifti图像之nibabel与SimpleITK的区别

这篇博客对比了nibabel和SimpleITK在读取、保存.nii或.nii.gz文件时的差异。nibabel在保存时会丢失空间、原点和方向等信息,而SimpleITK保存的文件为.nii.gz格式,且两者在数据输出顺序上有所不同。

nibabel读取.nii或.nii.gz

import nibabel as nib

file_path = '/home/.../motion_102_0000.nii.gz' # file suffix can also be .nii

data = nib.load(file_path)

voxel_ndarray = data.get_fdata()  #读取成numpy array

print(voxel_ndarray.shape)

output:

(x,y,z), 如(192,256,40)40是slice的数量。

 SimpleITK读取.nii或.nii.gz

import SimpleITK as sitk

file_path = '' #给出文件路径

img_obj = sitk.ReadImage(file_path)
origin = img_obj.GetOrigin()        #读取图像origin, direction, space便于后面存储保留这些信息
direction = img_obj.GetDirection()
space = img_obj.GetSpacing()

voxel_ndarray = sitk.GetArrayFromImage(img_obj)

print(voxel_ndarray.shape)

output:

输出(z, x, y), 其中z是slice的数量。这是两个工具包的差别之出。

文件的保存使用nibabel

#newnparray 为需要存的np array
#new_filepath 为存储数据的路径

new_img = nib.Nifti1Image(newnparray, np.eye(4))

nib.save(new_img, n
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值