从 numpy 数组创建 nifti 文件
Creating a nifti file from a numpy array
我有一个 numpy 数组,我想将其转换为 nifti 文件。通过文档,PyNIfTI 似乎曾经使用以下方式执行此操作:
image=NiftiImage(Array)
但是,不再支持 PyNIfTI。 PyNIfTI 的继承者 NiBabel 似乎不支持此功能。我肯定错过了什么。有人知道怎么做吗?
较新的替换函数 NiBabel package would be called Nifty1Image
. However, you are required to pass in the 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 文件格式,这也需要仿射变换。
接受的答案就足够了。我为此添加了几行详细解释。
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))
函数 np.eye(n)
returns 一个 n x n 单位矩阵。
这里 np.eye(4)
用于生成 4 x 4 矩阵,因为 Nifti 处理 4 x 4 文件格式。因此,通过与 4 x 4 单位矩阵相乘,将 3 x 3 矩阵转换为 4 x 4。
所以,总是 affine = np.eye(4)
会起作用。
同样适用于Nifti1Image
和Nifti2Image
我有一个 numpy 数组,我想将其转换为 nifti 文件。通过文档,PyNIfTI 似乎曾经使用以下方式执行此操作:
image=NiftiImage(Array)
但是,不再支持 PyNIfTI。 PyNIfTI 的继承者 NiBabel 似乎不支持此功能。我肯定错过了什么。有人知道怎么做吗?
较新的替换函数 NiBabel package would be called Nifty1Image
. However, you are required to pass in the 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 文件格式,这也需要仿射变换。
接受的答案就足够了。我为此添加了几行详细解释。
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))
函数 np.eye(n)
returns 一个 n x n 单位矩阵。
这里 np.eye(4)
用于生成 4 x 4 矩阵,因为 Nifti 处理 4 x 4 文件格式。因此,通过与 4 x 4 单位矩阵相乘,将 3 x 3 矩阵转换为 4 x 4。
所以,总是 affine = np.eye(4)
会起作用。
同样适用于Nifti1Image
和Nifti2Image