Lambda transforms
lambda_transforms
#
ImageFunction
#
ImageFunction(
function: typing.Callable[..., SimpleITK.Image],
copy_geometry: bool = True,
**kwargs: typing.Any
)
Bases: imgtools.transforms.base_transform.BaseTransform
Apply a custom function to process an image.
This class wraps a user-defined function and allows it to be used like any other transform in the library. The function must accept a SimpleITK image as its first parameter and return a SimpleITK image.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
typing.Callable[..., SimpleITK.Image]
|
A callable that processes a SimpleITK image and returns a processed image. |
required |
|
bool
|
If True, copies the input image's geometry to the result. |
True
|
|
typing.Any
|
Optional keyword arguments to be passed to the processing function. |
{}
|
Examples:
>>> import SimpleITK as sitk
>>> import numpy as np
>>> from imgtools.datasets.sample_images import (
... create_sphere_image,
... )
>>> from imgtools.transforms import ImageFunction
>>> # Create a sample sphere image
>>> image = create_sphere_image()
>>> # Define a custom function to invert intensities
>>> def invert_intensity(image, max_value=1.0):
... return sitk.Subtract(max_value, image)
>>> # Create a transform using this function
>>> inverter = ImageFunction(
... invert_intensity, max_value=1.0
... )
>>> inverted = inverter(image)
>>> # Define a function that operates on the NumPy array
>>> def add_random_noise(image, noise_level=0.1):
... array = sitk.GetArrayFromImage(image)
... noise = np.random.normal(
... 0, noise_level, array.shape
... )
... array = array + noise
... result = sitk.GetImageFromArray(array)
... result.CopyInformation(image)
... return result
>>> # Create and apply a noise transform
>>> noiser = ImageFunction(
... add_random_noise, noise_level=0.2
... )
>>> noisy = noiser(image)
>>> print("Applied custom image transforms")
Applied custom image transforms
Registers a user-defined function for image processing along with its settings. The supplied function must accept a SimpleITK image and return a processed image. If copy_geometry is True, the geometry of the input image will be copied to the output.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
typing.Callable[..., SimpleITK.Image]
|
A callable that processes a SimpleITK image and returns a processed image. |
required |
|
bool
|
If True, copies the input image's geometry to the result. |
True
|
|
typing.Any
|
Optional keyword arguments to be passed to the processing function. |
{}
|
Source code in src/imgtools/transforms/lambda_transforms.py
name
property
#
Return the name of the transform class for logging and debugging.
Returns:
Type | Description |
---|---|
str
|
The name of the transform class. |
SimpleITKFilter
#
SimpleITKFilter(
sitk_filter: SimpleITK.ImageFilter,
*execute_args: typing.Any
)
Bases: imgtools.transforms.base_transform.BaseTransform
Apply a SimpleITK image filter to an image.
This class wraps a SimpleITK image filter and allows it to be used like any other transform in the library. It provides a consistent interface for applying SimpleITK filters within the transform framework.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
SimpleITK.ImageFilter
|
A SimpleITK image filter instance to process images. |
required |
|
typing.Any
|
Optional positional arguments to pass to the filter's Execute method. These arguments come after the input image in the Execute call. |
()
|
Examples:
>>> import SimpleITK as sitk
>>> from imgtools.datasets.sample_images import (
... create_noisy_sphere_image,
... )
>>> from imgtools.transforms import SimpleITKFilter
>>> # Create a sample image with noise
>>> image = create_noisy_sphere_image(
... noise_level=0.3
... )
>>> # Create a median filter to remove noise
>>> median_filter = sitk.MedianImageFilter()
>>> median_filter.SetRadius(2)
>>> # Use SimpleITKFilter to apply the filter
>>> median_transform = SimpleITKFilter(median_filter)
>>> filtered_image = median_transform(image)
>>> # Use SimpleITKFilter with a different filter that takes parameters
>>> gradient_magnitude = sitk.GradientMagnitudeRecursiveGaussianImageFilter()
>>> gradient_transform = SimpleITKFilter(
... gradient_magnitude, 1.5
... ) # sigma=1.5
>>> gradient_image = gradient_transform(image)
>>> print(
... "Applied median filter and gradient magnitude filter"
... )
Applied median filter and gradient magnitude filter
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
SimpleITK.ImageFilter
|
A SimpleITK image filter instance to process images. |
required |
|
typing.Any
|
Optional positional arguments to pass to the filter's Execute method. |
()
|
Source code in src/imgtools/transforms/lambda_transforms.py
name
property
#
Return the name of the transform class for logging and debugging.
Returns:
Type | Description |
---|---|
str
|
The name of the transform class. |