29 lines
No EOL
1.1 KiB
Python
29 lines
No EOL
1.1 KiB
Python
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) |