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

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

被折叠的 条评论
为什么被折叠?



