RandomCropPerturber

class nrtk.impls.perturb_image.generic.crop_perturber.RandomCropPerturber(box_alignment_mode: str = 'extent', seed: int | np.random.Generator | None = 1)

RandomCropPerturber randomly crops an image and adjusts bounding boxes accordingly.

Attributes:

rng (numpy.random.Generator): Random number generator for deterministic behavior.

Methods:
perturb:

Applies a random crop to an input image and adjusts bounding boxes.

__call__:

Calls the perturb method with the given input image.

get_config:

Returns the current configuration of the RandomCropPerturber instance.

Methods

from_config

Instantiate a new instance of this class given the configuration JSON-compliant dictionary encapsulating initialization arguments.

get_config

Returns the current configuration of the _SPNoisePerturber instance.

get_default_config

Generate and return a default configuration dictionary for this class.

get_impls

Discover and return a set of classes that implement the calling class.

get_type_string

Returns the fully qualified type string of the PerturbImage class or its subclass.

is_usable

Check whether this class is available for use.

perturb

Randomly crops an image and adjusts bounding boxes.

__init__(box_alignment_mode: str = 'extent', seed: int | np.random.Generator | None = 1) None

RandomCropPerturber applies a random cropping perturbation to an input image.

It ensures that bounding boxes are adjusted correctly to reflect the new cropped region.

Args:
rng:

Random number generator for deterministic behavior.

seed:

Seed for rng.

box_alignment_mode:

Mode for how to handle how bounding boxes change. Should be one of the following options:

extent: a new axis-aligned bounding box that encases the transformed misaligned box extant: a new axis-aligned bounding box that is encased inside the transformed misaligned box median: median between extent and extant

Default value is extent

get_config() dict[str, Any]

Returns the current configuration of the _SPNoisePerturber instance.

Returns:
return dict[str, Any]:

Configuration dictionary with current settings.

perturb(image: np.ndarray[Any, Any], boxes: Iterable[tuple[AxisAlignedBoundingBox, dict[Hashable, float]]] | None = None, additional_params: dict[str, Any] | None = None) tuple[np.ndarray[Any, Any], Iterable[tuple[AxisAlignedBoundingBox, dict[Hashable, float]]] | None]

Randomly crops an image and adjusts bounding boxes.

Args:
image:

Input image as a numpy array of shape (H, W, C).

boxes:

List of bounding boxes in AxisAlignedBoundingBox format and their corresponding classes.

additional_params:
Dictionary containing:
  • “crop_size” (tuple[int, int]): Crop size as (crop_height, crop_width).

Returns:
return tuple[np.ndarray, Iterable[tuple[AxisAlignedBoundingBox, dict[Hashable, float]]] | None]:

Cropped image with the modified bounding boxes.