3D slicer, MITK默認會將醫(yī)學圖像保存為格式為NRRD的圖像,但是我們還是習慣于操作NIFTI格式的數(shù)據(jù),于是就有了NRRD轉換成NIFTI的需求。
之前自己有一個比較笨的方法,就是將NRRD圖像導入到MITK軟件中,然后再另存成NIFTI的數(shù)據(jù)。如果數(shù)據(jù)少,還可以接受。但是當數(shù)據(jù)比較多時,這種方法過于耗時耗力。
為了解決這個問題,網上搜索了一些解決方案,并將兩個代碼進行了合并[1],供使用,具體代碼如下。代碼中baseDir可以修改成指定的目錄,files里面*后面的部分,改為自己匹配的文件名。
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()
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)