def get_filelist(dir, Filelist):
if os.path.isdir(dir):
for s in os.listdir(dir):
newDir = os.path.join(dir, s)
Filelist.append(newDir)
return Filelist
list = get_filelist(NII_DIR, [])
for e in list:
Refimg = sitk.ReadImage(e, sitk.sitkFloat64)
resample = sitk.ResampleImageFilter()
resample.SetOutputDirection(Refimg.GetDirection())
resample.SetOutputOrigin(Refimg.GetOrigin())
spacing = Refimg.GetSpacing()
resample.SetInterpolator(sitk.sitkNearestNeighbor)
resample.SetReferenceImage(Refimg)
Tar_img = sitk.ReadImage(e)
resample.SetReferenceImage(Refimg)
RefimgSize1 = sitk.GetArrayFromImage(Refimg).shape
RefimgSize = [RefimgSize1[2],RefimgSize1[1],int(RefimgSize1[0]/3)]
resample.SetSize(RefimgSize)
ReSpacing = [spacing[0], spacing[1], spacing[2] * 3.0]
resample.SetOutputSpacing(ReSpacing)
newimage = resample.Execute(Tar_img)
sitk.WriteImage(newimage, e)
以下是3D
import os
import pydicom
import numpy as np
import SimpleITK as sitk
# 设置DICOM文件路径
dcm_folder = 'E:/SRS00003/'
# 读取DICOM序列
dcm_files = [os.path.join(dcm_folder, f) for f in os.listdir(dcm_folder)]
dcm_slices = [pydicom.read_file(f) for f in dcm_files]
# 提取DICOM数据和元数据
dcm_data = np.stack([s.pixel_array for s in dcm_slices])
dcm_spacing = np.array([float(dcm_slices[0].PixelSpacing[0]), float(dcm_slices[0].PixelSpacing[1]), float(dcm_slices[0].SliceThickness)])
# 将DICOM数据转换为SimpleITK图像
dcm_image = sitk.GetImageFromArray(dcm_data)
dcm_image.SetSpacing(dcm_spacing)
# 重新采样到1mm间距
resampled_spacing = (dcm_spacing[0], dcm_spacing[1], 1.0)
resampled_size =[dcm_image.GetSize()[0],dcm_image.GetSize()[1],dcm_image.GetSize()[2]*3]
resampled_image = sitk.Resample(dcm_image, resampled_size, sitk.Transform(), sitk.sitkLinear, dcm_image.GetOrigin(), resampled_spacing, dcm_image.GetDirection(), 0.0, dcm_image.GetPixelID())
# 将SimpleITK图像转换为Numpy数组
resampled_data = sitk.GetArrayFromImage(resampled_image)
# 保存为Nifti格式的图像文件
output_folder = 'E:/output/out.nii.gz'
resampled_image = sitk.GetImageFromArray(resampled_data)
resampled_image.SetSpacing(resampled_spacing)
sitk.WriteImage(resampled_image, output_folder)