Python 为什么Nibabel会更改我文件的大小?

Python 为什么Nibabel会更改我文件的大小?,python,numpy,image-processing,nibabel,Python,Numpy,Image Processing,Nibabel,我正在处理格式为nii.gz的图像。因此,我使用的是打开它们。问题是,当我打开图像,将其转换为numpy数组并将其转换回Nifti格式时,输出大小会发生变化。顺序是: nifti_image = nib.load('/my_path_to_image/image.nii.gz') np_img = ct_images.get_fdata() nifti_final = nib.Nifti1Image(data, affine=np.eye(4)) # Convert them to nifti

我正在处理格式为nii.gz的图像。因此,我使用的是打开它们。问题是,当我打开图像,将其转换为numpy数组并将其转换回Nifti格式时,输出大小会发生变化。顺序是:

nifti_image = nib.load('/my_path_to_image/image.nii.gz')
np_img = ct_images.get_fdata()
nifti_final = nib.Nifti1Image(data, affine=np.eye(4)) # Convert them to nifti
nib.save(nifti_final , 'image.nii.gz')
初始文件为
~45MB
,运行上述代码后,图像为
~65MB
。我知道原始图像是16位编码的。我最初的理论是,当转换为numpy数组时,它们被编码为
64位
,事实确实如此。因此,我尝试了以下方法:

nifti_image = nib.load('/my_path_to_image/image.nii.gz')
np_img = ct_images.get_fdata()
np_img = np_img.astype(numpy.float16, copy=False)
nifti_final = nib.Nifti1Image(data, affine=np.eye(4)) # Convert them to nifti
nib.save(nifti_final , 'image.nii.gz')

但是,输出仍然是相同的大小
~65MB
。知道为什么会发生这种情况吗?

您应该将原始nifti仿射和标题信息添加到输出nifti中。例如,在您的情况下:

nifti_final = nib.Nifti1Image(data, nifti_image.affine, nifti_image.header)