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 __init__(
      self,
      max_holes: int = 8,
      max_height: int = 8,
      max_width: int = 8,
      min_holes: Optional[int] = None,
      min_height: Optional[int] = None,
      min_width: Optional[int] = None,
      fill_value: int = 0,
      mask_fill_value: Optional[int] = None,
      always_apply: bool = False,
      p: float = 0.5,
  ):
      super(CoarseDropout, self).__init__(always_apply, p)
      self.max_holes = max_holes
      self.max_height = max_height
      self.max_width = max_width
      self.min_holes = min_holes if min_holes is not None else max_holes
      self.min_height = (
          min_height if min_height is not None else max_height
      )
      self.min_width = min_width if min_width is not None else max_width
      self.fill_value = fill_value
      self.mask_fill_value = mask_fill_value
      if not 0 < self.min_holes <= self.max_holes:
          raise ValueError(
              "Invalid combination of min_holes and max_holes. Got: {}".format(
                  [min_holes, max_holes]
              )
          )
  
      self.check_range(self.max_height)
      self.check_range(self.min_height)
      self.check_range(self.max_width)
      self.check_range(self.min_width)
  
      if not 0 < self.min_height <= self.max_height:
          raise ValueError(
              "Invalid combination of min_height and max_height. Got: {}".format(
                  [min_height, max_height]
              )
          )
      if not 0 < self.min_width <= self.max_width:
          raise ValueError(
              "Invalid combination of min_width and max_width. Got: {}".format(
                  [min_width, max_width]
              )
          )
  
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 1 to create a new CoarseDropout object from inherited base classes: DualTransform with example: obj = CoarseDropout(max_holes, max_height, max_width, min_holes, min_height, min_width, fill_value, mask_fill_value, always_apply, p)