Source code for paidiverpy.models.colour_params

"""Colour layer parameters models."""

from typing import Any
from pydantic import Field
from paidiverpy.utils.base_model import BaseModel


[docs] class GrayScaleParams(BaseModel): """Parameters for the grayscale conversion.""" method: str = Field("opencv", description="Grayscale conversion method") invert_colours: bool = Field(False, description="Invert grayscale values") raise_error: bool = Field(False, description="Raise error on failure")
[docs] class GaussianBlurParams(BaseModel): """Parameters for Gaussian blur.""" sigma: float = Field(1.0, description="Sigma value for Gaussian kernel") raise_error: bool = Field(False, description="Raise error on failure")
[docs] class SharpenParams(BaseModel): """Parameters for sharpening.""" alpha: float = Field(1.5, description="Weight of original image") beta: float = Field(-0.5, description="Weight of blurred image") raise_error: bool = Field(False, description="Raise error on failure")
[docs] class ContrastAdjustmentParams(BaseModel): """Parameters for contrast adjustment.""" method: str = Field("clahe", description="Contrast adjustment method") kernel_size: dict[str, int] | int | None = Field( None, description=( "Kernel size for CLAHE. It can be a dict with the format " "{'dim1': value, 'dim2': value} until the ndim, or an integer for square kernel size." ), ) clip_limit: float = Field(0.01, description="Clip limit for CLAHE") gamma_value: float = Field(0.5, description="Gamma correction value") raise_error: bool = Field(False, description="Raise error on failure")
[docs] class IlluminationCorrectionParams(BaseModel): """Parameters for illumination correction.""" method: str = Field("rolling", description="Correction method (e.g. rolling ball)") radius: int = Field(5, description="Radius of the illumination filter") raise_error: bool = Field(False, description="Raise error on failure")
[docs] class DeblurParams(BaseModel): """Parameters for deblurring.""" method: str = Field("wiener", description="Deblurring method") psf_type: str = Field("gaussian", description="Point Spread Function type") sigma: int = Field(20, description="Sigma for Gaussian PSF") angle: int = Field(45, description="Angle for motion blur PSF") raise_error: bool = Field(False, description="Raise error on failure")
[docs] class ColourAlterationParams(BaseModel): """Parameters for colour alteration.""" method: str = Field("white_balance", description="Colour alteration method") raise_error: bool = Field(False, description="Raise error on failure")
[docs] class EdgeDetectionParams(BaseModel): """Parameters for edge detection.""" method: str = Field("sobel", description="Edge detection method") blur_radius: int = Field(1, description="Blur radius before edge detection") threshold: dict[str, float] | None = Field( None, description="Threshold for edge detection. It should have the format {'low': value, 'high': value}. High value is optional." ) object_type: str = Field("bright", description="Type of object (bright or dark)") object_selection: str = Field("largest", description="Object selection strategy") estimate_sharpness: bool = Field(False, description="Estimate image sharpness") deconv: bool = Field(False, description="Apply deconvolution") deconv_method: str = Field("LR", description="Deconvolution method") deconv_iter: int = Field(10, description="Deconvolution iterations") deconv_mask_weight: float = Field(0.03, description="Deconvolution mask weighting") small_float_val: float = Field(1e-6, description="Small float to avoid division by zero") save_features_as_file: bool = Field(False, description="Save features as file") raise_error: bool = Field(False, description="Raise error on failure")
COLOUR_LAYER_METHODS = { "grayscale": {"params": GrayScaleParams, "method": "grayscale"}, "gaussian_blur": {"params": GaussianBlurParams, "method": "gaussian_blur"}, "edge_detection": {"params": EdgeDetectionParams, "method": "edge_detection"}, "sharpen": {"params": SharpenParams, "method": "sharpen"}, "contrast": {"params": ContrastAdjustmentParams, "method": "contrast_adjustment"}, "deblur": {"params": DeblurParams, "method": "deblur"}, "illumination_correction": { "params": IlluminationCorrectionParams, "method": "illumination_correction", }, "colour_alteration": {"params": ColourAlterationParams, "method": "colour_alteration"}, } ColourParamsUnion = ( GrayScaleParams | GaussianBlurParams | EdgeDetectionParams | SharpenParams | ContrastAdjustmentParams | DeblurParams | IlluminationCorrectionParams | ColourAlterationParams | EdgeDetectionParams | dict[str, Any] )