如何将 3D numpy 数组转换为 nibabel 中的 nifti 图像?
How to convert 3D numpy array to nifti image in nibabel?
根据这个问题 ,我创建了一个 nifti 图像的 3D numpy 数组。我对这个数组做了一些修改,比如我通过添加零填充来改变数组的深度。现在我想将这个数组转换回 nifti 图像,我该怎么做?
我试过了:
imga = Image.fromarray(img, 'RGB')
imga.save("modified/volume-20.nii")
但它不识别 nii
扩展。我也试过:
nib.save(img,'modified/volume-20.nii')
这也不起作用,因为如果我想使用 nib.save
功能,img
必须是 nibabel.nifti1.Nifti1Image
。在上面的两个例子中,img
是一个 3D numpy 数组。
假设你有一个numpy数组并且你想使用nib.save
函数,你需要先得到affine
转换。
示例:
# define the path to the data
func_filename = os.path.join(data_path, 'task-rest_bold.nii.gz')
# load the data
func = nib.load(func_filename)
# do computations that lead to a 3D numpy array called "output"
# bla bla bla
# output = np.array(....)
# to save this 3D (ndarry) numpy use this
ni_img = nib.Nifti1Image(output, func.affine)
nib.save(ni_img, 'output.nii.gz')
现在您可以将 output.nii.gz
叠加到 task-rest_bold.nii.gz
上
根据这个问题
我试过了:
imga = Image.fromarray(img, 'RGB')
imga.save("modified/volume-20.nii")
但它不识别 nii
扩展。我也试过:
nib.save(img,'modified/volume-20.nii')
这也不起作用,因为如果我想使用 nib.save
功能,img
必须是 nibabel.nifti1.Nifti1Image
。在上面的两个例子中,img
是一个 3D numpy 数组。
假设你有一个numpy数组并且你想使用nib.save
函数,你需要先得到affine
转换。
示例:
# define the path to the data
func_filename = os.path.join(data_path, 'task-rest_bold.nii.gz')
# load the data
func = nib.load(func_filename)
# do computations that lead to a 3D numpy array called "output"
# bla bla bla
# output = np.array(....)
# to save this 3D (ndarry) numpy use this
ni_img = nib.Nifti1Image(output, func.affine)
nib.save(ni_img, 'output.nii.gz')
现在您可以将 output.nii.gz
叠加到 task-rest_bold.nii.gz