我有一个numpy数组,我想将其转换为nifti文件。通过文档,似乎PyNIfTI用于执行此操作:
image=NiftiImage(Array)
但是,PyNIfTI不再受支持了。 PyNIfTI的继任者NiBabel似乎并不支持这一功能。我肯定错过了什么。有谁知道怎么做?
答案 0 :(得分:12)
较新的NiBabel包中的替换函数将被称为Nifty1Image
。但是,您需要传递affine transformation来定义该图像相对于某个参照系的位置。
最简单的形式如下:
import nibabel as nib
import numpy as np
data = np.arange(4*4*3).reshape(4,4,3)
new_image = nib.Nifti1Image(data, affine=np.eye(4))
您也可以使用Nifti2Image
写入NIfTI-2文件格式,这也需要仿射变换。
答案 1 :(得分:1)
接受的答案就足够了。我为此添加了几行详细的解释。
将nibabel作为笔尖导入 将numpy导入为np
data = np.arange(4 * 4 * 3).reshape(4,4,3)
new_image = nib.Nifti1Image(data,affine = np.eye(4))
np.eye(n)函数通过n个单位矩阵给出n。 在这里,此np.eye(4)用于生成4 x 4矩阵,作为Nifti处理4 x 4文件格式。因此,通过将3 x 3矩阵与4 x 4恒等矩阵相乘,可以将其转换为4 x 4。
因此,始终仿射= np.eye(4)将起作用。
相同的内容同时适用于Nifti1Image和Nifti2Image