在Python中使用itk把Nrrd文件转为Nii文件的时候,遇到了Unsupported encoding: gzip这个提示。
下面是Python中使用itk Nrrd转Nii的原代码,供参考。
import os
from glob import glob
import numpy as np
import vtk
def readnrrd(filename):
"""Read image in nrrd format."""
reader = vtk.vtkNrrdReader()
reader.SetFileName(filename)
reader.Update()
info = reader.GetInformation()
return reader.GetOutput(), info
def writenifti(image,filename, info):
"""Write nifti file."""
writer = vtk.vtkNIFTIImageWriter()
writer.SetInputData(image)
writer.SetFileName(filename)
writer.SetInformation(info)
writer.Write()
if __name__ == '__main__':
baseDir = os.path.normpath(r'G:/aurora-nrrd/')
files = glob(baseDir+'/*label.nrrd')
for file in files:
m, info = readnrrd(file)
writenifti(m, file.replace('label.nrrd', 'label.nii'), info)
后面看到另外一篇文章,使用SimpleITK来进行转换,两行代码就搞定了,非常简单。
img = sitk.ReadImage("your_image.nrrd")
sitk.WriteImage(img, "your_image.nii.gz")
还有一种方法,但是还没有尝试过。
import nrrd
import nibabel as nib
import numpy as np
# nrrd 文件保存路径
data_path=r'./data/1.nrrd'
save_path='./data/1.nii'
data,options=nrrd.read(data_path) # 读取 nrrd 文件
img=nib.Nifti1Image(data,np.eye(4)) # 将 nrrd 文件转换为 .nii 文件
nib.save(img,save_path) # 保存 nii 文件