Сохранение изображений нибабелей с размерами вокселей

Невозможно установить размеры вокселя изображения в NiftiHeader в нибабеле. Как установить определенные размеры вокселя для данного изображения?

Мне нужно сохранить изображение с некоторыми конкретными размерами вокселей в нибабеле.

image = nib.load('some_image')
c = np.array(image.get_fdata())
x = nib.Nifti1Image(c, image.affine)
nib.save(x, 'something.nii.gz')

Как мне сохранить тепловизор с некоторыми новыми размерами вокселей?


person BlackSpecter    schedule 03.04.2019    source источник
comment
Я бы предложил использовать SimpleITK   -  person g.stevo    schedule 21.05.2019


Ответы (1)


Перед сохранением необходимо изменить header information:

image = nib.load('some_image')
header_info = image.header
print(header_info)

# change the voxel dimensions to [2,2,2]
header_info['pixdim'][1:4]  = [2,2,2]

c = np.array(image.get_fdata())

# Use the new `header_info` before writing
x = nib.Nifti1Image(c, image.affine, header_info)
nib.save(x, 'something.nii.gz')
person seralouk    schedule 18.06.2019
comment
Не могли бы вы помочь мне с этим постом? stackoverflow.com/questions/56698087/ - person The Great; 21.06.2019
comment
Фактически это не сохраняет файл с измененными pixdim, поскольку они замещаются значениями в аффинной матрице. Чтобы изменить его независимо от аффинной матрицы, используйте x.header['pixdim'][1:4]=[2,2,2] после создания x. - person Oldrich; 15.01.2021
comment
это неправда. заголовок действительно изменен. см. также: ibb.co/5Ghfds7 - person seralouk; 16.01.2021