colour.models.log_encoding_CanonLog3#

colour.models.log_encoding_CanonLog3(x: ArrayLike, bit_depth: int = 10, out_normalised_code_value: bool = True, in_reflection: bool = True, method: Literal['v1', 'v1.2'] | str = 'v1.2') NDArrayFloat[source]#

Define the Canon Log 3 log encoding curve / opto-electronic transfer function.

Parameters:
  • x (ArrayLike) – Linear data \(x\).

  • bit_depth (int) – Bit-depth used for conversion.

  • out_normalised_code_value (bool) – Whether the Canon Log 3 non-linear data is encoded as normalised code values.

  • in_reflection (bool) – Whether the light level \(x\) to a camera is reflection.

  • method (Literal['v1', 'v1.2'] | str) – Computation method.

Returns:

Canon Log 3 non-linear data.

Return type:

numpy.ndarray

Notes

  • Introspection of the grafting points by Shaw, N. (2018) shows that the Canon Log 3 v1 IDT was likely derived from its encoding curve as the latter is grafted at +/-0.014:

    >>> clog3 = 0.04076162
    >>> (clog3 - 0.073059361) / 2.3069815
    -0.014000000000000002
    >>> clog3 = 0.105357102
    >>> (clog3 - 0.073059361) / 2.3069815
    0.013999999999999997
    

Domain

Scale - Reference

Scale - 1

x

[0, 1]

[0, 1]

Range

Scale - Reference

Scale - 1

clog2

[0, 1]

[0, 1]

References

[Canon16], [Canon20]

Examples

>>> log_encoding_CanonLog3(0.18) * 100  
34.3389370...