import os
import glob
import nibabel as nib
import pydicom
import numpy as np
#import SimpleITK as sitk
# 定义输入和输出文件夹
dicom_folder = "D:/Segment/airway/Chest-anonymization"
nifti_folder = "D:/Segment/airway/Chest-anonymization"
# 遍历输入文件夹下的所有文件和子文件夹
# 遍历DICOM文件夹中的所有子文件夹
for subdir in os.listdir(dicom_folder):
if os.path.isdir(os.path.join(dicom_folder, subdir)):
# 获取DICOM文件夹中所有dcm文件的路径
dcm_files = glob.glob(os.path.join(dicom_folder, subdir, "*.dcm"))
if len(dcm_files) > 0:
# 读取第一个dcm文件获取图像信息
dcm = pydicom.read_file(dcm_files[0])
data = np.zeros((len(dcm_files), dcm.Rows, dcm.Columns))
for i, dcm_file in enumerate(dcm_files):
# 读取dcm文件并将像素值存储到numpy数组中
dcm = pydicom.read_file(dcm_file)
data[i] = dcm.pixel_array
# 创建NIfTI文件
nii = nib.Nifti1Image(data, np.eye(4))
# 保留原始头文件信息
nii.header.set_intent(dcm.header.get("Intent"))
nii.header.set_xyzt_units(dcm.header.get("xyzt_units"))
nii.header.set_qform(dcm.header.get("qform_code"), dcm.header.get("qform"))
nii.header.set_sform(dcm.header.get("sform_code"), dcm.header.get("sform"))
nib.save(nii, os.path.join(nifti_folder, subdir + ".nii.gz"))
读取dicom序列并存为nii文件
最新推荐文章于 2023-12-28 11:32:26 发布