colour.gamma_function

colour.gamma_function(a, exponent=1, negative_number_handling='Indeterminate')[source]

Defines a typical gamma encoding / decoding function.

Parameters:
  • a (numeric or array_like) – Array to encode / decode.
  • exponent (numeric or array_like, optional) – Encoding / decoding exponent.
  • negative_number_handling (unicode, optional) –

    {‘Indeterminate’, ‘Mirror’, ‘Preserve’, ‘Clamp’}, Defines the behaviour for a negative numbers and / or the definition return value:

    • Indeterminate: The behaviour will be indeterminate and definition return value might contain nans.
    • Mirror: The definition return value will be mirrored around abscissa and ordinate axis, i.e. Blackmagic Design: Davinci Resolve behaviour.
    • Preserve: The definition will preserve any negative number in a, i.e. The Foundry Nuke behaviour.
    • Clamp: The definition will clamp any negative number in a to 0.
Returns:

Encoded / decoded array.

Return type:

numeric or ndarray

Raises:

ValueError – If the negative number handling method is not defined.

Examples

>>> gamma_function(0.18, 2.2)  # doctest: +ELLIPSIS
0.0229932...
>>> gamma_function(-0.18, 2.0)  # doctest: +ELLIPSIS
0.0323999...
>>> gamma_function(-0.18, 2.2)
nan
>>> gamma_function(-0.18, 2.2, 'Mirror')  # doctest: +ELLIPSIS
-0.0229932...
>>> gamma_function(-0.18, 2.2, 'Preserve')  # doctest: +ELLIPSIS
-0.1...
>>> gamma_function(-0.18, 2.2, 'Clamp')  # doctest: +ELLIPSIS
0.0