class_docstr: Adjust image contrast to ``255*1/(1+exp(gain*(cutoff-I_ij/255)))``.
  
  Values in the range ``gain=(5, 20)`` and ``cutoff=(0.25, 0.75)`` seem to
  be sensible.
  
  A combination of ``gain=5.5`` and ``cutof=0.45`` is fairly close to
  the identity function.
  
  **Supported dtypes**:
  
  See :func:`~imgaug.augmenters.contrast.adjust_contrast_sigmoid`.
  
  Parameters
  ----------
  gain : number or tuple of number or list of number or imgaug.parameters.StochasticParameter, optional
      Multiplier for the sigmoid function's output.
      Higher values lead to quicker changes from dark to light pixels.
  
          * If a number, then that value will be used for all images.
          * If a tuple ``(a, b)``, then a value from the interval
            ``[a, b]`` will be sampled uniformly per image.
          * If a list, then a random value will be sampled from that list
            per image.
          * If a ``StochasticParameter``, then a value will be sampled per
            image from that parameter.
  
  cutoff : number or tuple of number or list of number or imgaug.parameters.StochasticParameter, optional
      Cutoff that shifts the sigmoid function in horizontal direction.
      Higher values mean that the switch from dark to light pixels happens
      later, i.e. the pixels will remain darker.
  
          * If a number, then that value will be used for all images.
          * If a tuple ``(a, b)``, then a value from the range ``[a, b]``
            will be used per image.
          * If a list, then a random value will be sampled from that list
            per image.
          * If a ``StochasticParameter``, then a value will be sampled per
            image from that parameter.
  
  per_channel : bool or float, optional
      Whether to use the same value for all channels (``False``) or to
      sample a new value for each channel (``True``). If this value is a
      float ``p``, then for ``p`` percent of all images `per_channel` will
      be treated as ``True``, otherwise as ``False``.
  
  seed : None or int or imgaug.random.RNG or numpy.random.Generator or numpy.random.BitGenerator or numpy.random.SeedSequence or numpy.random.RandomState, optional
      See :func:`~imgaug.augmenters.meta.Augmenter.__init__`.
  
  name : None or str, optional
      See :func:`~imgaug.augmenters.meta.Augmenter.__init__`.
  
  random_state : None or int or imgaug.random.RNG or numpy.random.Generator or numpy.random.BitGenerator or numpy.random.SeedSequence or numpy.random.RandomState, optional
      Old name for parameter `seed`.
      Its usage will not yet cause a deprecation warning,
      but it is still recommended to use `seed` now.
      Outdated since 0.4.0.
  
  deterministic : bool, optional
      Deprecated since 0.4.0.
      See method ``to_deterministic()`` for an alternative and for
      details about what the "deterministic mode" actually does.
  
  Examples
  --------
  >>> import imgaug.augmenters as iaa
  >>> aug = iaa.SigmoidContrast(gain=(3, 10), cutoff=(0.4, 0.6))
  
  Modify the contrast of images according to
  ``255*1/(1+exp(gain*(cutoff-v/255)))``, where ``v`` is a pixel value,
  ``gain`` is sampled uniformly from the interval ``[3, 10]`` (once per
  image) and ``cutoff`` is sampled uniformly from the interval
  ``[0.4, 0.6]`` (also once per image).
  
  >>> aug = iaa.SigmoidContrast(
  >>>     gain=(3, 10), cutoff=(0.4, 0.6), per_channel=True)
  
  Same as in the previous example, but ``gain`` and ``cutoff`` are each
  sampled once per image *and* channel.
class_docstr_tok: ["Adjust","image","contrast","to","``","255","*","1\/","(","1+exp","(","gain","*","(","cutoff-I_ij\/255",")",")",")","``",".","Values","in","the","range","``","gain=","(","5",",","20",")","``","and","``","cutoff=","(","0.25",",","0.75",")","``","seem","to","be","sensible",".","A","combination","of","``","gain=5.5","``","and","``","cutof=0.45","``","is","fairly","close","to","the","identity","function",".","*","*","Supported","dtypes","*","*",":","See",":","func",":","`","~imgaug.augmenters.contrast.adjust_contrast_sigmoid","`",".","Parameters","--","--","--","--","--","gain",":","number","or","tuple","of","number","or","list","of","number","or","imgaug.parameters.StochasticParameter",",","optional","Multiplier","for","the","sigmoid","function","'s","output",".","Higher","values","lead","to","quicker","changes","from","dark","to","light","pixels",".","*","If","a","number",",","then","that","value","will","be","used","for","all","images",".","*","If","a","tuple","``","(","a",",","b",")","``",",","then","a","value","from","the","interval","``","[","a",",","b","]","``","will","be","sampled","uniformly","per","image",".","*","If","a","list",",","then","a","random","value","will","be","sampled","from","that","list","per","image",".","*","If","a","``","StochasticParameter","``",",","then","a","value","will","be","sampled","per","image","from","that","parameter",".","cutoff",":","number","or","tuple","of","number","or","list","of","number","or","imgaug.parameters.StochasticParameter",",","optional","Cutoff","that","shifts","the","sigmoid","function","in","horizontal","direction",".","Higher","values","mean","that","the","switch","from","dark","to","light","pixels","happens","later",",","i.e",".","the","pixels","will","remain","darker",".","*","If","a","number",",","then","that","value","will","be","used","for","all","images",".","*","If","a","tuple","``","(","a",",","b",")","``",",","then","a","value","from","the","range","``","[","a",",","b","]","``","will","be","used","per","image",".","*","If","a","list",",","then","a","random","value","will","be","sampled","from","that","list","per","image",".","*","If","a","``","StochasticParameter","``",",","then","a","value","will","be","sampled","per","image","from","that","parameter",".","per_channel",":","bool","or","float",",","optional","Whether","to","use","the","same","value","for","all","channels","(","``","False","``",")","or","to","sample","a","new","value","for","each","channel","(","``","True","``",")",".","If","this","value","is","a","float","``","p","``",",","then","for","``","p","``","percent","of","all","images","`","per_channel","`","will","be","treated","as","``","True","``",",","otherwise","as","``","False","``",".","seed",":","None","or","int","or","imgaug.random.RNG","or","numpy.random.Generator","or","numpy.random.BitGenerator","or","numpy.random.SeedSequence","or","numpy.random.RandomState",",","optional","See",":","func",":","`","~imgaug.augmenters.meta.Augmenter.__init__","`",".","name",":","None","or","str",",","optional","See",":","func",":","`","~imgaug.augmenters.meta.Augmenter.__init__","`",".","random_state",":","None","or","int","or","imgaug.random.RNG","or","numpy.random.Generator","or","numpy.random.BitGenerator","or","numpy.random.SeedSequence","or","numpy.random.RandomState",",","optional","Old","name","for","parameter","`","seed","`",".","Its","usage","will","not","yet","cause","a","deprecation","warning",",","but","it","is","still","recommended","to","use","`","seed","`","now",".","Outdated","since","0.4.0.","deterministic",":","bool",",","optional","Deprecated","since","0.4.0",".","See","method","``","to_deterministic","(",")","``","for","an","alternative","and","for","details","about","what","the","``","deterministic","mode","''","actually","does",".","Examples","--","--","--","--",">",">",">","import","imgaug.augmenters","as","iaa",">",">",">","aug","=","iaa.SigmoidContrast","(","gain=","(","3",",","10",")",",","cutoff=","(","0.4",",","0.6",")",")","Modify","the","contrast","of","images","according","to","``","255","*","1\/","(","1+exp","(","gain","*","(","cutoff-v\/255",")",")",")","``",",","where","``","v","``","is","a","pixel","value",",","``","gain","``","is","sampled","uniformly","from","the","interval","``","[","3",",","10","]","``","(","once","per","image",")","and","``","cutoff","``","is","sampled","uniformly","from","the","interval","``","[","0.4",",","0.6","]","``","(","also","once","per","image",")",".",">",">",">","aug","=","iaa.SigmoidContrast","(",">",">",">","gain=","(","3",",","10",")",",","cutoff=","(","0.4",",","0.6",")",",","per_channel=True",")","Same","as","in","the","previous","example",",","but","``","gain","``","and","``","cutoff","``","are","each","sampled","once","per","image","*","and","*","channel","."]
code: def __init__(
      self,
      gain=(5, 6),
      cutoff=(0.3, 0.6),
      per_channel=False,
      seed=None,
      name=None,
      random_state="deprecated",
      deterministic="deprecated",
  ):
      # TODO add inv parameter?
      params1d = [
          iap.handle_continuous_param(
              gain,
              "gain",
              value_range=(0, None),
              tuple_to_uniform=True,
              list_to_choice=True,
          ),
          iap.handle_continuous_param(
              cutoff,
              "cutoff",
              value_range=(0, 1.0),
              tuple_to_uniform=True,
              list_to_choice=True,
          ),
      ]
      func = adjust_contrast_sigmoid
  
      super(SigmoidContrast, self).__init__(
          func,
          params1d,
          per_channel,
          dtypes_allowed="uint8 uint16 uint32 uint64 int8 int16 int32 int64 "
          "float16 float32 float64",
          dtypes_disallowed="float128 bool",
          seed=seed,
          name=name,
          random_state=random_state,
          deterministic=deterministic,
      )
  
imports: from __future__ import print_function, division, absolute_import
  import numpy
  import six.moves
  import skimage.exposure
  import cv2
  import imgaug
  from imgaug.imgaug import _normalize_cv2_input_arr_
  from .None import meta
  from .None import color
  from ..None import parameters
  from ..None import dtypes
  from ..augmentables.batches import _BatchInAugmentation
label_desc: Use image node_id 1 to create a new SigmoidContrast object from inherited base classes: _ContrastFuncWrapper with example: obj = SigmoidContrast(gain, cutoff, per_channel, seed, name, random_state, deterministic)