colour.models.log_encoding_VLog

colour.models.log_encoding_VLog(L_in, bit_depth=10, out_normalised_code_value=True, in_reflection=True, constants={'b': 0.00873, 'c': 0.241514, 'cut1': 0.01, 'cut2': 0.181, 'd': 0.598206}, **kwargs)[source]

Defines the Panasonic V-Log log encoding curve / opto-electronic transfer function.

Parameters:
  • L_in (numeric or array_like) – Linear reflection data :math`L_{in}`.
  • bit_depth (int, optional) – Bit depth used for conversion.
  • out_normalised_code_value (bool, optional) – Whether the non-linear Panasonic V-Log data \(V_{out}\) is encoded as normalised code values.
  • in_reflection (bool, optional) – Whether the light level :math`L_{in}` to a camera is reflection.
  • constants (Structure, optional) – Panasonic V-Log constants.
Other Parameters:
 

**kwargs (dict, optional) – Keywords arguments for deprecation management.

Returns:

Non-linear data \(V_{out}\).

Return type:

numeric or ndarray

Notes

Domain Scale - Reference Scale - 1
L_in [0, 1] [0, 1]
Range Scale - Reference Scale - 1
V_out [0, 1] [0, 1]

References

[Panasonic2014a]

Examples

>>> log_encoding_VLog(0.18)  # doctest: +ELLIPSIS
0.4233114...

The values of Fig.2.2 V-Log Code Value table in [Panasonic2014a] are obtained as follows:

>>> L_in = np.array([0, 18, 90]) / 100
>>> np.around(log_encoding_VLog(L_in, 10, False) * 100).astype(np.int)
array([ 7, 42, 61])
>>> np.around(log_encoding_VLog(L_in) * (2 ** 10 - 1)).astype(np.int)
array([128, 433, 602])
>>> np.around(log_encoding_VLog(L_in) * (2 ** 12 - 1)).astype(np.int)
array([ 512, 1733, 2409])

Note that some values in the last column values of Fig.2.2 V-Log Code Value table in [Panasonic2014a] are different by a code: [512, 1732, 2408].