8

From this question How to convert Nifti file to Numpy array?, I created a 3D numpy array of a nifti image. I made some modifications to this array (changed depth of the array by adding padding of zeroes).

How can I convert this array back to nifti image?

I tried:

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

but it doesn't identify nii extension. I also tried:

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

this is also not working, because img must be nibabel.nifti1.Nifti1Image if I want to use nib.save feature. In both of the examples above img is a 3D numpy array.

1 Answer 1

8

Assuming that you a numpy array and you want to use nib.save function, you need to first get the affine transformation.

Example:

# 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')

Now you will be able to overlay the output.nii.gz onto the task-rest_bold.nii.gz

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.