Python SimpleITK.ResampleImageFilter() Examples
The following are 22
code examples of SimpleITK.ResampleImageFilter().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
SimpleITK
, or try the search function
.
Example #1
Source File: random_motion.py From torchio with MIT License | 8 votes |
def resample_images( image: sitk.Image, transforms: List[sitk.Euler3DTransform], interpolation: Interpolation, ) -> List[sitk.Image]: floating = reference = image default_value = np.float64(sitk.GetArrayViewFromImage(image).min()) transforms = transforms[1:] # first is identity images = [image] # first is identity for transform in transforms: resampler = sitk.ResampleImageFilter() resampler.SetInterpolator(get_sitk_interpolator(interpolation)) resampler.SetReferenceImage(reference) resampler.SetOutputPixelType(sitk.sitkFloat32) resampler.SetDefaultPixelValue(default_value) resampler.SetTransform(transform) resampled = resampler.Execute(floating) images.append(resampled) return images
Example #2
Source File: download_IXI_Guys.py From DLTK with Apache License 2.0 | 8 votes |
def resample_image(itk_image, out_spacing=[1.0, 1.0, 1.0], is_label=False): original_spacing = itk_image.GetSpacing() original_size = itk_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(itk_image.GetDirection()) resample.SetOutputOrigin(itk_image.GetOrigin()) resample.SetTransform(sitk.Transform()) resample.SetDefaultPixelValue(itk_image.GetPixelIDValue()) if is_label: resample.SetInterpolator(sitk.sitkNearestNeighbor) else: resample.SetInterpolator(sitk.sitkBSpline) return resample.Execute(itk_image)
Example #3
Source File: utilities.py From VNet with GNU General Public License v3.0 | 6 votes |
def produceRandomlyTranslatedImage(image, label): sitkImage = sitk.GetImageFromArray(image, isVector=False) sitklabel = sitk.GetImageFromArray(label, isVector=False) itemindex = np.where(label > 0) randTrans = (0,np.random.randint(-np.min(itemindex[1])/2,(image.shape[1]-np.max(itemindex[1]))/2),np.random.randint(-np.min(itemindex[0])/2,(image.shape[0]-np.max(itemindex[0]))/2)) translation = sitk.TranslationTransform(3, randTrans) resampler = sitk.ResampleImageFilter() resampler.SetReferenceImage(sitkImage) resampler.SetInterpolator(sitk.sitkLinear) resampler.SetDefaultPixelValue(0) resampler.SetTransform(translation) outimgsitk = resampler.Execute(sitkImage) outlabsitk = resampler.Execute(sitklabel) outimg = sitk.GetArrayFromImage(outimgsitk) outimg = outimg.astype(dtype=float) outlbl = sitk.GetArrayFromImage(outlabsitk) > 0 outlbl = outlbl.astype(dtype=float) return outimg, outlbl
Example #4
Source File: download_IXI_HH.py From DLTK with Apache License 2.0 | 6 votes |
def resample_image(itk_image, out_spacing=(1.0, 1.0, 1.0), is_label=False): original_spacing = itk_image.GetSpacing() original_size = itk_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(itk_image.GetDirection()) resample.SetOutputOrigin(itk_image.GetOrigin()) resample.SetTransform(sitk.Transform()) resample.SetDefaultPixelValue(itk_image.GetPixelIDValue()) if is_label: resample.SetInterpolator(sitk.sitkNearestNeighbor) else: resample.SetInterpolator(sitk.sitkBSpline) return resample.Execute(itk_image)
Example #5
Source File: processing.py From istn with Apache License 2.0 | 6 votes |
def reorient_image(image): """Reorients an image to standard radiology view.""" dir = np.array(image.GetDirection()).reshape(len(image.GetSize()), -1) ind = np.argmax(np.abs(dir), axis=0) new_size = np.array(image.GetSize())[ind] new_spacing = np.array(image.GetSpacing())[ind] new_extent = new_size * new_spacing new_dir = dir[:, ind] flip = np.diag(new_dir) < 0 flip_diag = flip * -1 flip_diag[flip_diag == 0] = 1 flip_mat = np.diag(flip_diag) new_origin = np.array(image.GetOrigin()) + np.matmul(new_dir, (new_extent * flip)) new_dir = np.matmul(new_dir, flip_mat) resample = sitk.ResampleImageFilter() resample.SetOutputSpacing(new_spacing.tolist()) resample.SetSize(new_size.tolist()) resample.SetOutputDirection(new_dir.flatten().tolist()) resample.SetOutputOrigin(new_origin.tolist()) resample.SetTransform(sitk.Transform()) resample.SetDefaultPixelValue(image.GetPixelIDValue()) resample.SetInterpolator(sitk.sitkNearestNeighbor) return resample.Execute(image)
Example #6
Source File: data_augmentation.py From Automated-Cardiac-Segmentation-and-Disease-Diagnosis with MIT License | 5 votes |
def resize_sitk_2D(image_array, outputSize=None, interpolator=sitk.sitkLinear): """ Resample 2D images Image: For Labels use nearest neighbour For image use sitkNearestNeighbor = 1, sitkLinear = 2, sitkBSpline = 3, sitkGaussian = 4, sitkLabelGaussian = 5, """ image = sitk.GetImageFromArray(image_array) inputSize = image.GetSize() inputSpacing = image.GetSpacing() outputSpacing = [1.0, 1.0] if outputSize: outputSpacing[0] = inputSpacing[0] * (inputSize[0] /outputSize[0]); outputSpacing[1] = inputSpacing[1] * (inputSize[1] / outputSize[1]); else: # If No outputSize is specified then resample to 1mm spacing outputSize = [0.0, 0.0] outputSize[0] = int(inputSize[0] * inputSpacing[0] / outputSpacing[0] + .5) outputSize[1] = int(inputSize[1] * inputSpacing[1] / outputSpacing[1] + .5) resampler = sitk.ResampleImageFilter() resampler.SetSize(outputSize) resampler.SetOutputSpacing(outputSpacing) resampler.SetOutputOrigin(image.GetOrigin()) resampler.SetOutputDirection(image.GetDirection()) resampler.SetInterpolator(interpolator) resampler.SetDefaultPixelValue(0) image = resampler.Execute(image) resampled_arr = sitk.GetArrayFromImage(image) return resampled_arr
Example #7
Source File: sitk_utils.py From Keras-Brats-Improved-Unet3d with MIT License | 5 votes |
def sitk_resample_to_image(image, reference_image, default_value=0., interpolator=sitk.sitkLinear, transform=None, output_pixel_type=None): if transform is None: transform = sitk.Transform() transform.SetIdentity() if output_pixel_type is None: output_pixel_type = image.GetPixelID() resample_filter = sitk.ResampleImageFilter() resample_filter.SetInterpolator(interpolator) resample_filter.SetTransform(transform) resample_filter.SetOutputPixelType(output_pixel_type) resample_filter.SetDefaultPixelValue(default_value) resample_filter.SetReferenceImage(reference_image) return resample_filter.Execute(image)
Example #8
Source File: sitk_utils.py From 3D-CNNs-for-Liver-Classification with Apache License 2.0 | 5 votes |
def sitk_resample_to_image(image, reference_image, default_value=0., interpolator=sitk.sitkLinear, transform=None, output_pixel_type=None): if transform is None: transform = sitk.Transform() transform.SetIdentity() if output_pixel_type is None: output_pixel_type = image.GetPixelID() resample_filter = sitk.ResampleImageFilter() resample_filter.SetInterpolator(interpolator) resample_filter.SetTransform(transform) resample_filter.SetOutputPixelType(output_pixel_type) resample_filter.SetDefaultPixelValue(default_value) resample_filter.SetReferenceImage(reference_image) return resample_filter.Execute(image)
Example #9
Source File: Step1_PreProcessing.py From 3D-RU-Net with GNU General Public License v3.0 | 5 votes |
def Resampling(Image,Label): Size=Image.GetSize() Spacing=Image.GetSpacing() Origin = Image.GetOrigin() Direction = Image.GetDirection() ImagePyramid=[] LabelPyramid=[] for i in range(3): NewSpacing = ToSpacing[ResRate[i]] NewSize=[int(Size[0]*Spacing[0]/NewSpacing[0]),int(Size[1]*Spacing[1]/NewSpacing[1]),int(Size[2]*Spacing[2]/NewSpacing[2])] Resample = sitk.ResampleImageFilter() Resample.SetOutputDirection(Direction) Resample.SetOutputOrigin(Origin) Resample.SetSize(NewSize) Resample.SetInterpolator(sitk.sitkLinear) Resample.SetOutputSpacing(NewSpacing) NewImage = Resample.Execute(Image) ImagePyramid.append(NewImage) Resample = sitk.ResampleImageFilter() Resample.SetOutputDirection(Direction) Resample.SetOutputOrigin(Origin) Resample.SetSize(NewSize) Resample.SetOutputSpacing(NewSpacing) Resample.SetInterpolator(sitk.sitkNearestNeighbor) NewLabel = Resample.Execute(Label) LabelPyramid.append(NewLabel) return ImagePyramid,LabelPyramid #We shift the mean value to enhance the darker side
Example #10
Source File: sitk_utils.py From 3DUnetCNN with MIT License | 5 votes |
def sitk_resample_to_image(image, reference_image, default_value=0., interpolator=sitk.sitkLinear, transform=None, output_pixel_type=None): if transform is None: transform = sitk.Transform() transform.SetIdentity() if output_pixel_type is None: output_pixel_type = image.GetPixelID() resample_filter = sitk.ResampleImageFilter() resample_filter.SetInterpolator(interpolator) resample_filter.SetTransform(transform) resample_filter.SetOutputPixelType(output_pixel_type) resample_filter.SetDefaultPixelValue(default_value) resample_filter.SetReferenceImage(reference_image) return resample_filter.Execute(image)
Example #11
Source File: registration.py From DeepBrainSeg with MIT License | 5 votes |
def resize_sitk_3D(self, image_array, outputSize=None, interpolator=sitk.sitkLinear): """ Resample 3D images Image: For Labels use nearest neighbour For image use sitkNearestNeighbor = 1, sitkLinear = 2, sitkBSpline = 3, sitkGaussian = 4, sitkLabelGaussian = 5, """ image = image_array inputSize = image.GetSize() inputSpacing = image.GetSpacing() outputSpacing = [1.0, 1.0, 1.0] if outputSize: outputSpacing[0] = inputSpacing[0] * (inputSize[0] /outputSize[0]); outputSpacing[1] = inputSpacing[1] * (inputSize[1] / outputSize[1]); outputSpacing[2] = inputSpacing[2] * (inputSize[2] / outputSize[2]); else: # If No outputSize is specified then resample to 1mm spacing outputSize = [0.0, 0.0, 0.0] outputSize[0] = int(inputSize[0] * inputSpacing[0] / outputSpacing[0] + .5) outputSize[1] = int(inputSize[1] * inputSpacing[1] / outputSpacing[1] + .5) outputSize[2] = int(inputSize[2] * inputSpacing[2] / outputSpacing[2] + .5) resampler = sitk.ResampleImageFilter() resampler.SetSize(outputSize) resampler.SetOutputSpacing(outputSpacing) resampler.SetOutputOrigin(image.GetOrigin()) resampler.SetOutputDirection(image.GetDirection()) resampler.SetInterpolator(interpolator) resampler.SetDefaultPixelValue(0) image = resampler.Execute(image) return image
Example #12
Source File: processing.py From istn with Apache License 2.0 | 5 votes |
def resample_image(image, out_spacing=(1.0, 1.0, 1.0), out_size=None, is_label=False, pad_value=0): """Resamples an image to given element spacing and output size.""" original_spacing = np.array(image.GetSpacing()) original_size = np.array(image.GetSize()) if out_size is None: out_size = np.round(np.array(original_size * original_spacing / np.array(out_spacing))).astype(int) else: out_size = np.array(out_size) original_direction = np.array(image.GetDirection()).reshape(len(original_spacing),-1) original_center = (np.array(original_size, dtype=float) - 1.0) / 2.0 * original_spacing out_center = (np.array(out_size, dtype=float) - 1.0) / 2.0 * np.array(out_spacing) original_center = np.matmul(original_direction, original_center) out_center = np.matmul(original_direction, out_center) out_origin = np.array(image.GetOrigin()) + (original_center - out_center) resample = sitk.ResampleImageFilter() resample.SetOutputSpacing(out_spacing) resample.SetSize(out_size.tolist()) resample.SetOutputDirection(image.GetDirection()) resample.SetOutputOrigin(out_origin.tolist()) resample.SetTransform(sitk.Transform()) resample.SetDefaultPixelValue(pad_value) if is_label: resample.SetInterpolator(sitk.sitkNearestNeighbor) else: #resample.SetInterpolator(sitk.sitkBSpline) resample.SetInterpolator(sitk.sitkLinear) return resample.Execute(sitk.Cast(image, sitk.sitkFloat32))
Example #13
Source File: processing.py From istn with Apache License 2.0 | 5 votes |
def resample_image_to_ref(image, ref, is_label=False, pad_value=0): """Resamples an image to match the resolution and size of a given reference image.""" resample = sitk.ResampleImageFilter() resample.SetReferenceImage(ref) resample.SetDefaultPixelValue(pad_value) if is_label: resample.SetInterpolator(sitk.sitkNearestNeighbor) else: #resample.SetInterpolator(sitk.sitkBSpline) resample.SetInterpolator(sitk.sitkLinear) return resample.Execute(image)
Example #14
Source File: download_IXI_Guys.py From DLTK with Apache License 2.0 | 5 votes |
def reslice_image(itk_image, itk_ref, is_label=False): resample = sitk.ResampleImageFilter() resample.SetReferenceImage(itk_ref) if is_label: resample.SetInterpolator(sitk.sitkNearestNeighbor) else: resample.SetInterpolator(sitk.sitkBSpline) return resample.Execute(itk_image)
Example #15
Source File: random_elastic_deformation.py From torchio with MIT License | 5 votes |
def apply_bspline_transform( self, tensor: torch.Tensor, affine: np.ndarray, bspline_params: np.ndarray, interpolation: Interpolation, ) -> torch.Tensor: assert tensor.dim() == 4 assert len(tensor) == 1 image = self.nib_to_sitk(tensor[0], affine) floating = reference = image bspline_transform = self.get_bspline_transform( image, self.num_control_points, bspline_params, ) self.parse_free_form_transform( bspline_transform, self.max_displacement) resampler = sitk.ResampleImageFilter() resampler.SetReferenceImage(reference) resampler.SetTransform(bspline_transform) resampler.SetInterpolator(get_sitk_interpolator(interpolation)) resampler.SetDefaultPixelValue(tensor.min().item()) resampler.SetOutputPixelType(sitk.sitkFloat32) resampled = resampler.Execute(floating) np_array = sitk.GetArrayFromImage(resampled) np_array = np_array.transpose() # ITK to NumPy tensor[0] = torch.from_numpy(np_array) return tensor
Example #16
Source File: utilities.py From VNet with GNU General Public License v3.0 | 5 votes |
def produceRandomlyDeformedImage(image, label, numcontrolpoints, stdDef): sitkImage=sitk.GetImageFromArray(image, isVector=False) sitklabel=sitk.GetImageFromArray(label, isVector=False) transfromDomainMeshSize=[numcontrolpoints]*sitkImage.GetDimension() tx = sitk.BSplineTransformInitializer(sitkImage,transfromDomainMeshSize) params = tx.GetParameters() paramsNp=np.asarray(params,dtype=float) paramsNp = paramsNp + np.random.randn(paramsNp.shape[0])*stdDef paramsNp[0:int(len(params)/3)]=0 #remove z deformations! The resolution in z is too bad params=tuple(paramsNp) tx.SetParameters(params) resampler = sitk.ResampleImageFilter() resampler.SetReferenceImage(sitkImage) resampler.SetInterpolator(sitk.sitkLinear) resampler.SetDefaultPixelValue(0) resampler.SetTransform(tx) resampler.SetDefaultPixelValue(0) outimgsitk = resampler.Execute(sitkImage) outlabsitk = resampler.Execute(sitklabel) outimg = sitk.GetArrayFromImage(outimgsitk) outimg = outimg.astype(dtype=np.float32) outlbl = sitk.GetArrayFromImage(outlabsitk) outlbl = (outlbl>0.5).astype(dtype=np.float32) return outimg,outlbl
Example #17
Source File: data_augmentation.py From Automated-Cardiac-Segmentation-and-Disease-Diagnosis with MIT License | 4 votes |
def produceRandomlyDeformedImage(image, label, numcontrolpoints=2, stdDef=15): sitkImage=sitk.GetImageFromArray(image, isVector=False) sitklabel=sitk.GetImageFromArray(label, isVector=False) transfromDomainMeshSize=[numcontrolpoints]*sitkImage.GetDimension() tx = sitk.BSplineTransformInitializer(sitkImage,transfromDomainMeshSize) params = tx.GetParameters() paramsNp=np.asarray(params,dtype=float) paramsNp = paramsNp + np.random.randn(paramsNp.shape[0])*stdDef #remove z deformations! The resolution in z is too bad in case of 3D or its channels in 2D paramsNp[0:int(len(params)/3)]=0 #remove z deformations! The resolution in z is too bad in case of 3D or its channels params=tuple(paramsNp) tx.SetParameters(params) # print (sitkImage.GetSize(), sitklabel.GetSize(), transfromDomainMeshSize, paramsNp.shape) resampler = sitk.ResampleImageFilter() resampler.SetReferenceImage(sitkImage) resampler.SetInterpolator(sitk.sitkLinear) resampler.SetDefaultPixelValue(0) resampler.SetTransform(tx) outimgsitk = resampler.Execute(sitkImage) # For Label use nearest neighbour resampler.SetReferenceImage(sitklabel) resampler.SetInterpolator(sitk.sitkLabelGaussian) resampler.SetDefaultPixelValue(0) outlabsitk = resampler.Execute(sitklabel) outimg = sitk.GetArrayFromImage(outimgsitk) outimg = outimg.astype(dtype=np.float32) outlbl = sitk.GetArrayFromImage(outlabsitk) outlbl = (outlbl).astype(dtype=np.uint8) return outimg, outlbl # ********************************Augmentation Transforms**************************#
Example #18
Source File: utils.py From Brats2019 with MIT License | 4 votes |
def produceRandomlyDeformedImage(image, label, numcontrolpoints, stdDef, seed=1): ''' This function comes from V-net,deform a image by B-spine interpolation :param image: images ,numpy array :param label: labels,numpy array :param numcontrolpoints: control point,B-spine interpolation parameters,take 2 for default :param stdDef: Deviation,B-spine interpolation parameters,take 15 for default :return: Deformed images and GT in numpy array ''' sitkImage = sitk.GetImageFromArray(image, isVector=False) sitklabel = sitk.GetImageFromArray(label, isVector=False) transfromDomainMeshSize = [numcontrolpoints] * sitkImage.GetDimension() tx = sitk.BSplineTransformInitializer( sitkImage, transfromDomainMeshSize) params = tx.GetParameters() paramsNp = np.asarray(params, dtype=float) # 设置种子值,确保多通道时两个通道变换程度一样 np.random.seed(seed) paramsNp = paramsNp + np.random.randn(paramsNp.shape[0]) * stdDef # remove z deformations! The resolution in z is too bad paramsNp[0:int(len(params) / 3)] = 0 params = tuple(paramsNp) tx.SetParameters(params) resampler = sitk.ResampleImageFilter() resampler.SetReferenceImage(sitkImage) resampler.SetInterpolator(sitk.sitkLinear) resampler.SetDefaultPixelValue(0) resampler.SetTransform(tx) resampler.SetDefaultPixelValue(0) outimgsitk = resampler.Execute(sitkImage) outlabsitk = resampler.Execute(sitklabel) outimg = sitk.GetArrayFromImage(outimgsitk) outimg = outimg.astype(dtype=np.float32) outlbl = sitk.GetArrayFromImage(outlabsitk) # outlbl = (outlbl > 0.5).astype(dtype=np.float32) return outimg, outlbl
Example #19
Source File: download_IXI_HH.py From DLTK with Apache License 2.0 | 4 votes |
def reslice_image(itk_image, itk_ref, is_label=False): resample = sitk.ResampleImageFilter() resample.SetReferenceImage(itk_ref) if is_label: resample.SetInterpolator(sitk.sitkNearestNeighbor) else: resample.SetInterpolator(sitk.sitkBSpline) return resample.Execute(itk_image)
Example #20
Source File: random_affine.py From torchio with MIT License | 4 votes |
def apply_affine_transform( self, tensor: torch.Tensor, affine: np.ndarray, scaling_params: List[float], rotation_params: List[float], translation_params: List[float], interpolation: Interpolation, center_lps: Optional[TypeTripletFloat] = None, ) -> torch.Tensor: assert tensor.ndim == 4 assert len(tensor) == 1 image = self.nib_to_sitk(tensor[0], affine) floating = reference = image scaling_transform = self.get_scaling_transform( scaling_params, center_lps=center_lps, ) rotation_transform = self.get_rotation_transform( rotation_params, translation_params, center_lps=center_lps, ) transform = sitk.Transform(3, sitk.sitkComposite) transform.AddTransform(scaling_transform) transform.AddTransform(rotation_transform) if self.default_pad_value == 'minimum': default_value = tensor.min().item() elif self.default_pad_value == 'mean': default_value = get_borders_mean(image, filter_otsu=False) elif self.default_pad_value == 'otsu': default_value = get_borders_mean(image, filter_otsu=True) else: default_value = self.default_pad_value resampler = sitk.ResampleImageFilter() resampler.SetInterpolator(get_sitk_interpolator(interpolation)) resampler.SetReferenceImage(reference) resampler.SetDefaultPixelValue(float(default_value)) resampler.SetOutputPixelType(sitk.sitkFloat32) resampler.SetTransform(transform) resampled = resampler.Execute(floating) np_array = sitk.GetArrayFromImage(resampled) np_array = np_array.transpose() # ITK to NumPy tensor[0] = torch.from_numpy(np_array) return tensor
Example #21
Source File: sitk_image.py From MedicalDataAugmentationTool with GNU General Public License v3.0 | 4 votes |
def resample(input_image, transform, output_size, output_spacing=None, output_origin=None, output_direction=None, interpolator=None, output_pixel_type=None, default_pixel_value=None): """ Resample a given input image according to a transform. :param input_image: ITK image the input image :param transform: SimpleITK.Transform the (composite) transform to be applied :param output_size: list of int default is same as input image :param output_spacing: list of float default is input spacing from input_image :param output_direction: list of float default is input direction from input_image :param default_pixel_value: default is zero :param output_origin: list of int Default is zero-origin for each dimension :param interpolator: SimpleITK.InterpolatorEnum Default is SimpleITK.sitkLinear. :return: the resampled image """ image_dim = input_image.GetDimension() transform_dim = transform.GetDimension() assert image_dim == transform_dim, 'image and transform dim must be equal, are ' + str(image_dim) + ' and ' + str(transform_dim) output_spacing = output_spacing or [1] * image_dim output_origin = output_origin or [0] * image_dim output_direction = output_direction or np.eye(image_dim).flatten().tolist() interpolator = interpolator or 'linear' sitk_interpolator = get_sitk_interpolator(interpolator) # resample the image resample_filter = sitk.ResampleImageFilter() resample_filter.SetSize(output_size) resample_filter.SetInterpolator(sitk_interpolator) resample_filter.SetOutputSpacing(output_spacing) resample_filter.SetOutputOrigin(output_origin) resample_filter.SetOutputDirection(output_direction) resample_filter.SetTransform(transform) if default_pixel_value is not None: resample_filter.SetDefaultPixelValue(default_pixel_value) if output_pixel_type is None: resample_filter.SetOutputPixelType(input_image.GetPixelID()) else: resample_filter.SetOutputPixelType(output_pixel_type) # perform resampling output_image = resample_filter.Execute(input_image) return output_image
Example #22
Source File: DataManager.py From VNet with GNU General Public License v3.0 | 4 votes |
def getNumpyData(self,dat,method): ret=dict() for key in dat: ret[key] = np.zeros([self.params['VolSize'][0], self.params['VolSize'][1], self.params['VolSize'][2]], dtype=np.float32) img=dat[key] #we rotate the image according to its transformation using the direction and according to the final spacing we want factor = np.asarray(img.GetSpacing()) / [self.params['dstRes'][0], self.params['dstRes'][1], self.params['dstRes'][2]] factorSize = np.asarray(img.GetSize() * factor, dtype=float) newSize = np.max([factorSize, self.params['VolSize']], axis=0) newSize = newSize.astype(dtype=int) T=sitk.AffineTransform(3) T.SetMatrix(img.GetDirection()) resampler = sitk.ResampleImageFilter() resampler.SetReferenceImage(img) resampler.SetOutputSpacing([self.params['dstRes'][0], self.params['dstRes'][1], self.params['dstRes'][2]]) resampler.SetSize(newSize) resampler.SetInterpolator(method) if self.params['normDir']: resampler.SetTransform(T.GetInverse()) imgResampled = resampler.Execute(img) imgCentroid = np.asarray(newSize, dtype=float) / 2.0 imgStartPx = (imgCentroid - self.params['VolSize'] / 2.0).astype(dtype=int) regionExtractor = sitk.RegionOfInterestImageFilter() regionExtractor.SetSize(list(self.params['VolSize'].astype(dtype=int))) regionExtractor.SetIndex(list(imgStartPx)) imgResampledCropped = regionExtractor.Execute(imgResampled) ret[key] = np.transpose(sitk.GetArrayFromImage(imgResampledCropped).astype(dtype=float), [2, 1, 0]) return ret