0
点赞
收藏
分享

微信扫一扫

dicom(.dcm)转nifti(.nii)

fbd4ffd0717b 2022-02-16 阅读 81
python
import SimpleITK as sitk
import os
import pydicom
import matplotlib.pyplot as plt

os.chdir( 'C:\\Users\\xxxx\\Desktop\\DemoData\\DemoRaw\\DemoData\\FunRaw')
#避免因路径中含中文导致SimpleITK无法读取

def dcm2nii(dcms_path, nii_path):
	# 1.构建dicom序列文件阅读器,并执行(即将dicom序列文件“打包整合”)
    reader = sitk.ImageSeriesReader()
    dicom_names = reader.GetGDCMSeriesFileNames(dcms_path)
    reader.SetFileNames(dicom_names)
    image2 = reader.Execute()
    #print(image2)
	# 2.将整合后的数据转为array,并获取dicom文件基本信息
    image_array = sitk.GetArrayFromImage(image2)  # z, y, x
    origin = image2.GetOrigin()  # x, y, z
    spacing = image2.GetSpacing()  # x, y, z
    direction = image2.GetDirection()  # x, y, z
	# 3.将array转为img,并保存为.nii.gz
    image3 = sitk.GetImageFromArray(image_array)
    image3.SetSpacing(spacing)
    image3.SetDirection(direction)
    image3.SetOrigin(origin)
    sitk.WriteImage(image3, nii_path)


dcms_path = r'.\Sub_002'   # dicom序列文件所在路径
nii_path = r'.\Sub_002\test.nii' # 所需.nii文件保存路径
###将dicom(.dcm)文件转为nifti(.nii)文件###
dcm2nii(dcms_path, nii_path)
举报

相关推荐

0 条评论