如何将3D numpy数组转换为nifti图像?

时间:2019-03-10 17:35:16

标签: python numpy image-conversion nifti

根据这个问题How to convert Nifti file to Numpy array?,我创建了nifti图片的3D numpy数组。我对此数组进行了一些修改,例如通过添加零填充来更改数组的深度。现在我想将此数组转换回nifti图片,该怎么办?

我尝试过:

imga = Image.fromarray(img, 'RGB')
imga.save("modified/volume-20.nii")

,但不能识别nii扩展名。我也尝试过:

nib.save(img,'modified/volume-20.nii')

这也不起作用,因为如果我想使用img功能,nibabel.nifti1.Nifti1Image必须为nib.save。在以上两个示例中,img都是3D numpy数组。

1 个答案:

答案 0 :(得分:1)

假设您是一个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