功能说明:将DICOM格式的文件(以下简称dcm文件)转化为NIFTI格式的文件(以下简称nii文件)。
其中,医院拿到的dcm文件又分为不同的图像(T1 T2 DWI ADC等),读取dcm文件后,需要读取其中信息,判断其图像类型,选择需要的dcm图像,并转化为nii文件。
读取信息可通过pydicom 读取data后,通过data.data_element获取信息:
import pydicom
filepath = "./T2"
data = pydicom.dcmread(filepath+'/000000.dcm') #读取一张dcm文件\
print(data.data_element)
打印结果:
转化通过python的库SimpleITK读取dcm文件,再通过sitk.WriteImage(dcm_image, "filename.nii.gz")保存为nii
import SimpleITK as sitk
'''
功能:读取filepath下的dcm文件
返回值:读取得到的SimpleITK.SimpleITK.Image类
其他说明: file = sitk.ReadImage(filepath)
获取基本信息,大小,像素间距,坐标原点,方向
file.GetSize()
file.GetOrigin()
file.GetSpacing()
file.GetDirection()
'''
def readdcm(filepath):
#filepath = "./T2"
series_id = sitk.ImageSeriesReader.GetGDCMSeriesIDs(filepath)
series_file_names = sitk.ImageSeriesReader.GetGDCMSeriesFileNames(filepath, series_id[0])
series_reader = sitk.ImageSeriesReader() #读取数据端口
series_reader.SetFileNames(series_file_names) #读取名称
images = series_reader.Execute()#读取数据
#print(images.GetSpacing())
#sitk.WriteImage(images, "T2_1.nii.gz")#保存为nii
return images
if __name__ == '__main__':
filepath = "./dcm" #保存路径
dcm_images = readdcm(filepath) #读取文件
sitk.WriteImage(dcm_images, "dcm.nii.gz")#保存为nii