Source code for paidiverpy.models.convert_params
"""Convert layer parameters models."""
from typing import Any
from pydantic import Field
from paidiverpy.utils.base_model import BaseModel
[docs]
class BitParams(BaseModel):
"""This class contains the parameters for the bit conversion."""
output_bits: int = Field(8, description="Number of bits in output image")
raise_error: bool = Field(False, description="Raise error on failure")
[docs]
class ToParams(BaseModel):
"""This class contains the parameters for the channel conversion."""
to: str = Field("uint8", description="Target data type")
channel_selector: int = Field(0, description="Index of channel to select")
raise_error: bool = Field(False, description="Raise error on failure")
[docs]
class NormalizeParams(BaseModel):
"""This class contains the parameters for the image normalization."""
min: float = Field(0, description="Minimum normalization value")
max: float = Field(1, description="Maximum normalization value")
method: str = Field("minmax", description="Normalization method")
raise_error: bool = Field(False, description="Raise error on failure")
[docs]
class ResizeParams(BaseModel):
"""This class contains the parameters for the image resizing."""
size: dict[str, int] | None = Field(None, description="Target size {'width': value, 'height': value}")
preserve_aspect: bool = Field(True, description="Preserve aspect ratio")
scale: float | dict[str, float] = Field(1, description="Scale factor. Format {'width': value, 'height': value} or float for uniform scaling")
interpolation: str = Field("linear", description="Interpolation method")
raise_error: bool = Field(False, description="Raise error on failure")
[docs]
class CropParams(BaseModel):
"""This class contains the parameters for the image cropping."""
size: dict[str, int] | float = Field(1, description="Crop size. Format {'width': value, 'height': value} or float for percentage")
size_type: str = Field("percent", description="Size type: percent or pixels")
mode: str = Field("center", description="Crop mode")
top_left: dict[str, int] = Field({"top": 0, "left": 0}, description="Top-left corner for cropping. Format {'top': value, 'left': value}")
raise_error: bool = Field(False, description="Raise error on failure")
CONVERT_LAYER_METHODS = {
"bits": {"params": BitParams, "method": "convert_bits"},
"to": {"params": ToParams, "method": "channel_convert"},
"normalize": {"params": NormalizeParams, "method": "normalize_image"},
"resize": {"params": ResizeParams, "method": "resize"},
"crop": {"params": CropParams, "method": "crop_images"},
}
ConvertParamsUnion = BitParams | ToParams | NormalizeParams | ResizeParams | CropParams | dict[str, Any]