Перейти к содержанию

ImageTransformer

ImageTransformer - специальный тип действия для трансформации изображений.

Этот тип позволяет последовательно описать необходимые изменения для изображения, чтобы при выполнении шага получить на выходе уже изменённое изображение.

Преобразование может быть одиночным или множественным.

ImageTransformer не реализует трансформации самостоятельно — внутри используется комбинация torchvision.transforms и OpenCV. Для медицинских снимков доступны circle_crop, ellipse_crop и min_area_rect_crop (обрезка по паттерну с фундус-камеры).

from hyppopipe.data.image import Image
from hyppopipe.pipeline.image.transform import ImageTransformer
from hyppopipe.pipeline import Pipeline, Step

from torchvision.transforms import v2 as transforms


image_data_processing = Pipeline(
    {
        "GetResizedImage": Step(
            ImageTransformer().resize(224),
            inputs=["__input__"],
        ),
        "GetSharpenImage": Step(
            ImageTransformer().sharpen(2.0),
            inputs=["GetResizedImage"],
        ),
        "GetBluredImage": Step(
            ImageTransformer().gaussian_blur(5, sigma=(0.1, 2.0)),
            inputs=["GetResizedImage"],
        ),
        # Гибкий интерфейс для множественных трансформаций:
        "FluentTransformations": Step(
            ImageTransformer().resize(224).gaussian_blur(5, sigma=(0.1, 2.0)).rotate(90),
            inputs=["__input__"],
        ),
        # Фабрика из трансформаций torchvision:
        "ComposedTransformations": Step(
            ImageTransformer.from_compose(
                transforms.Compose([
                    transforms.Resize(224),
                    transforms.GaussianBlur(5, sigma=(0.1, 2.0)),
                    transforms.RandomRotation((90, 90)),
                ])
            ),
            inputs=["__input__"],
        )

    },
    shift_result=False,
)

original_image = Image.from_path("images/image74prime.tif")
pipeline_result = image_data_processing.predict(original_image)

Документация

Composable torchvision and OpenCV transforms for :class:~hyppopipe.data.image.Image.

CircleCropConfig dataclass

Bases: ContourSelectConfig

:class:ContourSelectConfig plus circle-specific filters for :meth:ImageTransformer.circle_crop.

Attributes:

Name Type Description
min_radius_ratio float

Minimum enclosing-circle radius vs min(H, W).

max_radius_ratio float

Maximum radius vs min(H, W) (limits full-frame squares).

min_circularity float

4π·area/perimeter²; 0 disables the check.

ContourSelectConfig dataclass

Contour detection and filtering for OpenCV contour-based steps.

Used by :meth:ImageTransformer.ellipse_crop, :meth:ImageTransformer.min_area_rect_crop, :meth:ImageTransformer.convex_hull_mask, and :meth:ImageTransformer.contour_mask.

Attributes:

Name Type Description
threshold int

Grayscale binarization level (higher → fewer faint regions).

min_contour_area_ratio float

Ignore contours smaller than this fraction of the image.

max_contour_area_ratio float

Ignore contours larger than this (often the image frame).

reject_frame_contour bool

Skip contours whose bounding box touches all four edges.

frame_margin_px int

Edge tolerance when detecting a frame-filling contour.

FloodFillConfig dataclass

Tuning for :meth:ImageTransformer.flood_fill.

ImageTransformer

Fluent builder that applies transforms in the order they were added.

Torchvision steps run on CHW tensors; OpenCV steps receive BGR HWC uint8 arrays (standard OpenCV layout) and are converted automatically.

OpenCV steps skip themselves on invalid input or failed callables (with a warning) and pass the tensor through to the next step.

__call__(image)

Apply all configured transforms in registration order.

__init__()

Start with an empty transform list.

add(step)

Append a custom CHW tensor → CHW tensor step.

center_crop(size)

Append torchvision.transforms.v2.CenterCrop.

circle_crop(config=None, **kwargs)

Append OpenCV crop around a filtered contour's enclosing circle.

Parameters:

Name Type Description Default
config CircleCropConfig | None

Full tuning object; overrides keyword arguments when set.

None
**kwargs Any

Fields for :class:CircleCropConfig (e.g. threshold=40).

{}

Example::

ImageTransformer().circle_crop(
    threshold=40,
    max_contour_area_ratio=0.75,
    min_circularity=0.5,
)

clear()

Remove all transforms from the recipe.

contour_mask(config=None, *, background=None, **kwargs)

Zero (or fill) pixels outside the selected contour polygon.

convex_hull_mask(config=None, *, background=None, **kwargs)

Zero (or fill) pixels outside the convex hull of the selected contour.

ellipse_crop(config=None, **kwargs)

Crop axis-aligned square around :func:cv2.fitEllipse of the selected contour.

flood_fill(config=None, **kwargs)

Region growing from seed_xy (image center when omitted).

from_compose(compose) classmethod

Create a transformer from a torchvision.transforms.v2.Compose.

Each child transform becomes its own sequential step (order preserved).

from_transforms(transformations) classmethod

Create a transformer from torchvision v2 transforms (one step each).

gaussian_blur(kernel_size, sigma)

Append torchvision.transforms.v2.GaussianBlur.

min_area_rect_crop(config=None, **kwargs)

Perspective-crop the oriented minimum-area rectangle of the selected contour.

morphology(config=None, **kwargs)

Apply :func:cv2.morphologyEx on grayscale (optionally binarized first).

normalize(mean, std)

Append torchvision.transforms.v2.Normalize.

opencv(fn, *, step_name='opencv')

Append an OpenCV callable (BGR HWC uint8 in/out).

remove_small_components(config=None, *, background=None, **kwargs)

Drop connected components smaller than min_area after thresholding.

resize(size, *args, **kwargs)

Append torchvision.transforms.v2.Resize.

rotate(degrees)

Append torchvision.transforms.v2.RandomRotation.

sharpen(factor=2.0)

Append torchvision.transforms.v2.RandomAdjustSharpness with p=1.

torchvision(transform)

Append a torchvision.transforms.v2 transform (runs on CHW tensor).

MaskBackgroundConfig dataclass

Background applied outside a contour or component mask.

Attributes:

Name Type Description
value tuple[int, int, int] | int

(B, G, R) for color images, or a single intensity for grayscale.

MorphologyConfig dataclass

Tuning for :meth:ImageTransformer.morphology.

RemoveSmallComponentsConfig dataclass

Tuning for :meth:ImageTransformer.remove_small_components.