我有一个想要转换成nifti文件的numpy数组。通过文档可以看出,PyNIfTI似乎是通过以下方式做到这一点的:
image=NiftiImage(Array) 但是,不再支持PyNIfTI。PyNIfTI的继任者NiBabel似乎不支持此功能。我一定漏掉了什么。有人知道怎么做吗?
发布于 2015-02-05 04:44:46
较新的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文件格式,这也需要仿射转换。
发布于 2018-11-22 17:42:04
接受的答案就足够了。我为此添加了几行详细的解释。
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乘n的单位矩阵。
这里,当Nifti处理4x4文件格式时,此np.eye(4)用于生成4x4矩阵。所以你的3乘3矩阵被转换为4乘4乘以4乘以4的单位矩阵。
所以,affine = np.eye(4)总是可以工作的。
同样适用于Nifti1Image和Nifti2Image
https://stackoverflow.com/questions/28330785
复制相似问题