class_docstr: CoarseDropout of the rectangular regions in the image.
  
  Args:
      max_holes (int): Maximum number of regions to zero out.
      max_height (int, float): Maximum height of the hole.
      If float, it is calculated as a fraction of the image height.
      max_width (int, float): Maximum width of the hole.
      If float, it is calculated as a fraction of the image width.
      min_holes (int): Minimum number of regions to zero out. If `None`,
          `min_holes` is be set to `max_holes`. Default: `None`.
      min_height (int, float): Minimum height of the hole. Default: None. If `None`,
          `min_height` is set to `max_height`. Default: `None`.
          If float, it is calculated as a fraction of the image height.
      min_width (int, float): Minimum width of the hole. If `None`, `min_height` is
          set to `max_width`. Default: `None`.
          If float, it is calculated as a fraction of the image width.
  
      fill_value (int, float, list of int, list of float): value for dropped pixels.
      mask_fill_value (int, float, list of int, list of float): fill value for dropped pixels
          in mask. If `None` - mask is not affected. Default: `None`.
  
  Targets:
      image, mask, keypoints
  
  Image types:
      uint8, float32
  
  Reference:
  |  https://arxiv.org/abs/1708.04552
  |  https://github.com/uoguelph-mlrg/Cutout/blob/master/util/cutout.py
  |  https://github.com/aleju/imgaug/blob/master/imgaug/augmenters/arithmetic.py
code: def get_params_dependent_on_targets(self, params):
      img = params["image"]
      height, width = img.shape[:2]
  
      holes = []
      for _n in range(random.randint(self.min_holes, self.max_holes)):
          if all(
              [
                  isinstance(self.min_height, int),
                  isinstance(self.min_width, int),
                  isinstance(self.max_height, int),
                  isinstance(self.max_width, int),
              ]
          ):
              hole_height = random.randint(
                  self.min_height, self.max_height
              )
              hole_width = random.randint(
                  self.min_width, self.max_width
              )
          elif all(
              [
                  isinstance(self.min_height, float),
                  isinstance(self.min_width, float),
                  isinstance(self.max_height, float),
                  isinstance(self.max_width, float),
              ]
          ):
              hole_height = int(
                  height
                  * random.uniform(self.min_height, self.max_height)
              )
              hole_width = int(
                  width * random.uniform(self.min_width, self.max_width)
              )
          else:
              raise ValueError(
                  "Min width, max width, \
                      min height and max height \
                      should all either be ints or floats. \
                      Got: {} respectively".format(
                      [
                          type(self.min_width),
                          type(self.max_width),
                          type(self.min_height),
                          type(self.max_height),
                      ]
                  )
              )
  
          y1 = random.randint(0, height - hole_height)
          x1 = random.randint(0, width - hole_width)
          y2 = y1 + hole_height
          x2 = x1 + hole_width
          holes.append((x1, y1, x2, y2))
  
      return {"holes": holes}
  
file_path: albumentations/albumentations/augmentations/dropout/coarse_dropout.py
imports: import random
  from typing import Iterable, List, Optional, Sequence, Tuple, Union
  import numpy
  from ...core.transforms_interface import DualTransform, KeypointType
  from .functional import cutout
label_desc: Use image node_id 5 for calling the CoarseDropout obj's underlying member method code with example usage: obj.get_params_dependent_on_targets(params) and returns: dict