Как преобразовать трехмерный массив nifti в nibabel? - PullRequest
1 голос
/ 10 марта 2019

Из этого вопроса Как преобразовать файл Nifti в массив Numpy? , я создал трехмерный массив изображений Nifti.Я сделал некоторые изменения в этом массиве, например, изменил глубину массива, добавив заполнение нулями.Теперь я хочу преобразовать этот массив обратно в изображение 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 является трехмерным массивом.

1 Ответ

1 голос
/ 17 июня 2019

Предполагая, что вы массив 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

.
...