3D slicer, MITK默认会将医学图像保存为格式为NRRD的图像,但是我们还是习惯于操作NIFTI格式的数据,于是就有了NRRD转换成NIFTI的需求。
之前自己有一个比较笨的方法,就是将NRRD图像导入到MITK软件中,然后再另存成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)