import numpy as np import SimpleITK as sitk from config.constant import LABEL_MAP def resample_img(sitk_image, out_spacing=[0.5, 0.5, 0.5], is_label=False): # Resample images to 2mm spacing with SimpleITK original_spacing = sitk_image.GetSpacing() original_size = sitk_image.GetSize() out_size = [ int(np.round(original_size[0] * (original_spacing[0] / out_spacing[0]))), int(np.round(original_size[1] * (original_spacing[1] / out_spacing[1]))), int(np.round(original_size[2] * (original_spacing[2] / out_spacing[2])))] resample = sitk.ResampleImageFilter() resample.SetOutputSpacing(out_spacing) resample.SetSize(out_size) resample.SetOutputDirection(sitk_image.GetDirection()) resample.SetOutputOrigin(sitk_image.GetOrigin()) resample.SetTransform(sitk.Transform()) resample.SetDefaultPixelValue(sitk_image.GetPixelIDValue()) if is_label: resample.SetInterpolator(sitk.sitkNearestNeighbor) else: resample.SetInterpolator(sitk.sitkBSpline) return resample.Execute(sitk_image)