从numpy数组创建一个nifti文件

时间:2015-02-04 20:26:02

标签: python numpy file-format nifti

我有一个numpy数组,我想将其转换为nifti文件。通过文档,似乎PyNIfTI用于执行此操作:

image=NiftiImage(Array)               

但是,PyNIfTI不再受支持了。 PyNIfTI的继任者NiBabel似乎并不支持这一功能。我肯定错过了什么。有谁知道怎么做?

2 个答案:

答案 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