之前自己有一个比较笨的方法,就是将NRRD图像导入到MITK软件中,然后再另存成NIFTI的数据。如果数据少,还可以接受。但是当数据比较多时,这种方法过于耗时耗力。
为了解决这个问题,网上搜索了一些解决方案,并将两个代码进行了合并,供使用,具体代码如下。代码中
baseDir可以修改成指定的目录,files里面*后面的部分,改为自己匹配的文件名。1 import os 2 fr 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:/auroranrrd/') 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)
上一篇:ITK 计算质心
下一篇:ITK 计算 EuclideanDistance









