9

我有一个 numpy 数组,我想将其转换为 nifti 文件。通过文档,PyNIfTI 似乎曾经这样做过:

image=NiftiImage(Array)               

但是,不再支持 PyNIfTI。PyNIfTI 的继承者 NiBabel 似乎不支持这个功能。我肯定错过了什么。有谁知道如何做到这一点?

4

2 回答 2

20

更新的NiBabel包中的替换函数将被调用Nifty1Image。但是,您需要传入定义该图像相对于某个参考框架的位置的仿射变换。

在最简单的形式中,它看起来像这样:

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))

您还可以使用 写入 NIfTI-2 文件格式Nifti2Image,这也需要仿射变换。

于 2015-02-04T20:44:46.083 回答
3

接受的答案就足够了。我为此添加了几行详细的解释。

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)返回一个 n 单位矩阵。
在这里,这np.eye(4)用于生成 4 x 4 矩阵,因为 Nifti 处理 4 x 4 文件格式。因此,您的 3 x 3 矩阵通过乘以 4 x 4 单位矩阵转换为 4 x 4。

所以,总是affine = np.eye(4)会工作。

同样适用于Nifti1Image两者Nifti2Image

于 2018-11-22T09:42:03.610 回答