3D slicer, MITK默认会将医学图像保存为格式为NRRD的图像,但是我们还是习惯于操作NIFTI格式的数据,于是就有了NRRD转换成NIFTI的需求。
之前自己有一个比较笨的方法,就是将NRRD图像导入到MITK软件中,然后再另存成NIFTI的数据。如果数据少,还可以接受。但是当数据比较多时,这种方法过于耗时耗力。
为了解决这个问题,网上搜索了一些解决方案,并将两个代码进行了合并,供使用,具体代码如下。代码中baseDir
可以修改成指定的目录,files
里面*
后面的部分,改为自己匹配的文件名。
1 import os 2 from glob import glob 3 import numpy as np 4 import vtk 5 6 7 def readnrrd(filename): 8 """Read image in nrrd format.""" 9 reader = vtk.vtkNrrdReader() 10 reader.SetFileName(filename) 11 reader.Update() 12 info = reader.GetInformation() 13 return reader.GetOutput(), info 14 15 16 def writenifti(image,filename, info): 17 """Write nifti file.""" 18 writer = vtk.vtkNIFTIImageWriter() 19 writer.SetInputData(image) 20 writer.SetFileName(filename) 21 writer.SetInformation(info) 22 writer.Write() 23 24 25 if __name__ == '__main__': 26 baseDir = os.path.normpath(r'G:/aurora-nrrd/') 27 files = glob(baseDir+'/*label.nrrd') 28 for file in files: 29 m, info = readnrrd(file) 30 writenifti(m, file.replace('label.nrrd', 'label.nii'), info)
标签:info,转换成,NIFTI,writer,NRRD,__,reader From: https://www.cnblogs.com/ybqjymy/p/17549995.html