第一步安装dicom2nifti库,在你的环境中使用pip安装:
pip install dicom2nifti
第二步,在你的python代码中使用dicom2nifti.convert_directory()函数,可以将对应目录文件夹下的序列.dcm文件转换为.nii文件:
import dicom2niftidicom2nifti.convert_directory(path_of_dycom_series,path_of_nii_file)#第一个参数是dycom文件的目录,第二个是你要保存nii文件的目录。需要注意的是,默认输出的是nii.gz压缩文件,你也可以通过compression=False,选择不压缩nii文件
因为发现目前搜索到的多数中文教程并不能正确将FMRI图像正确转换,例如很多用simpleITk的seriesreader的,所以写了一下自己正确转换的方法。因为FMRI是一个4D数据,有时间轴,所以用seriesreader读写出来的图像把时间轴维度给降维了。
当然你用SPM12工具的dycom import也是能正确转换的,但是我还是喜欢python这样的,代码直接简单。
下面提供一个简单的批量转换的代码:
import dicom2niftiimport osroot = "data/XX" #root path is like 'data/XX'converted_path = "nii_data/XX" #path of converted_files_path to savef_path = os.path.join(root,"fmri")# files of my fmri is like 'data/XX/fmri'converted_f_path = os.path.join(converted_path,"fmri")#converted fmri files pathfor i,item in enumerate(os.listdir(f_path)):item_path = os.path.join(f_path,item)# single fmri series directory pathc_item_path = os.path.join(converted_f_path,item)os.makedirs(c_item_path)dicom2nifti.convert_directory(item_path,output_folder=c_item_path)print(i)
SimpleITK其实是具有读取FMRI图像这样的4D数据的函数的,这里就不过多介绍了,主要原因是dicom2nifti这个库被很多医学图像处理工具所采用,比如SPM。很多论文的pipeline都是用的这个,所以我们如果是方法创新的话,最好预处理跟别人保持一致,否则容易被质疑。