Skip to content

function_util

data.transform.function_util

Define utility functions for data augmentation.

ImageType module-attribute

ImageType = ndarray

check_value

check_value(data: Union[int, float], min_value: Union[int, float], max_value: Union[int, float])
Source code in SaigeToolkit/data/transform/function_util.py
def check_value(data: Union[int, float], min_value: Union[int, float], max_value: Union[int, float]):
    if not (isinstance(data, (int, float))):
        raise AugmentationParameterTypeError

    if not (min_value <= data <= max_value):
        raise AugmentationParameterRangeError

check_range

check_range(data: Union[Sequence[int], Sequence[float]], min_value: Union[int, float], max_value: Union[int, float])
Source code in SaigeToolkit/data/transform/function_util.py
def check_range(
    data: Union[Sequence[int], Sequence[float]],
    min_value: Union[int, float],
    max_value: Union[int, float],
):
    if not (isinstance(data, Sequence) and len(data) == 2):
        raise AugmentationParameterTypeError

    check_value(data[0], min_value, max_value)
    check_value(data[1], min_value, max_value)

    if not (min_value <= data[0] <= data[1] <= max_value):
        raise AugmentationParameterRangeError

ratio_to_value

ratio_to_value(ratio: float, min_value: Union[int, float], max_value: Union[int, float])
Source code in SaigeToolkit/data/transform/function_util.py
def ratio_to_value(ratio: float, min_value: Union[int, float], max_value: Union[int, float]):
    check_value(ratio, 0.0, 1.0)

    min_value, max_value = min(min_value, max_value), max(min_value, max_value)

    return (ratio * (max_value - min_value)) + min_value

support_gray

support_gray(function)
Source code in SaigeToolkit/data/transform/function_util.py
def support_gray(function):
    @wraps(function)
    def wrapper(image: ImageType, *args, **kwargs):
        is_gray = image.ndim == 2
        if is_gray:
            image = np.stack([image, image, image], axis=-1)

        image = function(image, *args, **kwargs)

        if is_gray:
            image = image[:, :, 0]

        return image

    return wrapper

support_rgba

support_rgba(function)
Source code in SaigeToolkit/data/transform/function_util.py
def support_rgba(function):
    @wraps(function)
    def wrapper(image: ImageType, *args, **kwargs):
        is_rgba = image.ndim == 3 and image.shape[2] == 4
        if is_rgba:
            mask = image[:, :, 3:4]
            image = image[:, :, :3]

        image = function(image, *args, **kwargs)

        if is_rgba:
            image = np.concatenate([image, mask], axis=2)

        return image

    return wrapper

support_3dim_gray_image

support_3dim_gray_image(function)
Source code in SaigeToolkit/data/transform/function_util.py
def support_3dim_gray_image(function):
    @wraps(function)
    def decorator(image: ImageType, *args, **kwargs) -> Any:
        is_3dim_gray = image.ndim == 3 and image.shape[2] == 1
        if is_3dim_gray:
            image = image[:, :, 0]

        result = function(image=image, *args, **kwargs)

        if is_3dim_gray:
            result = result[:, :, np.newaxis]
        return result

    return decorator

support_multi_image

support_multi_image(function)
Source code in SaigeToolkit/data/transform/function_util.py
def support_multi_image(function):
    @wraps(function)
    def decorator(image: Union[List[ImageType], ImageType], *args, **kwargs) -> Any:
        multipage = isinstance(image, List)
        if not multipage:
            image = [image]

        results = [function(image=image_i, *args, **kwargs) for image_i in image]

        if not multipage:
            results = results[0]
        return results

    return decorator