Resample only one axis

In this example, we create a custom preprocessing transfom that changes the image spacing across one axis only.

Inspired by this discussion.

original (sagittal), original (coronal), original (axial), transformed (sagittal), transformed (coronal), transformed (axial)
import torch

import torchio as tio


class ResampleZ:
    def __init__(self, spacing_z):
        self.spacing_z = spacing_z

    def __call__(self, subject):
        # We'll assume all images in the subject have the same spacing
        sx, sy, _ = subject.spacing
        resample = tio.Resample((sx, sy, self.spacing_z))
        resampled = resample(subject)
        return resampled


torch.manual_seed(42)
image = tio.datasets.FPG().t1
transforms = tio.ToCanonical(), ResampleZ(spacing_z=7)
transform = tio.Compose(transforms)
transformed = transform(image)
subject = tio.Subject(original=image, transformed=transformed)
subject.plot()

Total running time of the script: (0 minutes 0.914 seconds)

Gallery generated by Sphinx-Gallery