colour.models Package

Sub-Packages

Module Contents

colour.models.XYZ_to_xyY(XYZ, illuminant=(0.34567, 0.3585))

Converts from CIE XYZ colourspace to CIE xyY colourspace and reference illuminant.

Parameters:
  • XYZ (array_like, (3,)) – CIE XYZ colourspace matrix.
  • illuminant (array_like, optional) – Reference illuminant chromaticity coordinates.
Returns:

CIE xyY colourspace matrix.

Return type:

ndarray, (3,)

Notes

  • Input CIE XYZ colourspace matrix is in domain [0, 1].
  • Output CIE xyY colourspace matrix is in domain [0, 1].

References

[2]Lindbloom, B. (2003). XYZ to xyY. Retrieved February 24, 2014, from http://www.brucelindbloom.com/Eqn_XYZ_to_xyY.html

Examples

>>> XYZ = np.array([0.07049534, 0.1008, 0.09558313])
>>> XYZ_to_xyY(XYZ)  
array([ 0.2641477...,  0.3777000...,  0.1008    ])
colour.models.xyY_to_XYZ(xyY)

Converts from CIE xyY colourspace to CIE XYZ colourspace.

Parameters:xyY (array_like, (3,)) – CIE xyY colourspace matrix.
Returns:CIE XYZ colourspace matrix.
Return type:ndarray, (3,)

Notes

  • Input CIE xyY colourspace matrix is in domain [0, 1].
  • Output CIE XYZ colourspace matrix is in domain [0, 1].

References

[3]Lindbloom, B. (2009). xyY to XYZ. Retrieved February 24, 2014, from http://www.brucelindbloom.com/Eqn_xyY_to_XYZ.html

Examples

>>> xyY = np.array([0.26414772, 0.37770001, 0.1008])
>>> xyY_to_XYZ(xyY)  
array([ 0.0704953...,  0.1008    ,  0.0955831...])
colour.models.xy_to_XYZ(xy)

Returns the CIE XYZ colourspace matrix from given xy chromaticity coordinates.

Parameters:xy (array_like) – xy chromaticity coordinates.
Returns:CIE XYZ colourspace matrix.
Return type:ndarray, (3,)

Notes

  • Input xy chromaticity coordinates are in domain [0, 1].
  • Output CIE XYZ colourspace matrix is in domain [0, 1].

Examples

>>> xy = (0.26414772236966133, 0.37770000704815188)
>>> xy_to_XYZ(xy)  
array([ 0.6993585...,  1.        ,  0.9482453...])
colour.models.XYZ_to_xy(XYZ, illuminant=(0.34567, 0.3585))

Returns the xy chromaticity coordinates from given CIE XYZ colourspace matrix.

Parameters:
  • XYZ (array_like, (3,)) – CIE XYZ colourspace matrix.
  • illuminant (array_like, optional) – Reference illuminant chromaticity coordinates.
Returns:

xy chromaticity coordinates.

Return type:

tuple

Notes

  • Input CIE XYZ colourspace matrix is in domain [0, 1].
  • Output xy chromaticity coordinates are in domain [0, 1].

Examples

>>> XYZ = np.array([0.07049534, 0.1008, 0.09558313])
>>> XYZ_to_xy(XYZ)  
(0.2641477..., 0.3777000...)
class colour.models.RGB_Colourspace(name, primaries, whitepoint, illuminant=None, RGB_to_XYZ_matrix=None, XYZ_to_RGB_matrix=None, transfer_function=None, inverse_transfer_function=None)

Bases: object

Implements support for the RGB colourspaces dataset from colour.models.dataset.aces_rgb, etc....

Parameters:
  • name (unicode) – RGB colourspace name.
  • primaries (array_like) – RGB colourspace primaries.
  • whitepoint (array_like) – RGB colourspace whitepoint.
  • illuminant (unicode, optional) – RGB colourspace whitepoint name as illuminant.
  • RGB_to_XYZ_matrix (array_like, optional) – Transformation matrix from colourspace to CIE XYZ colourspace.
  • XYZ_to_RGB_matrix (array_like, optional) – Transformation matrix from CIE XYZ colourspace to colourspace.
  • transfer_function (object, optional) – RGB colourspace opto-electronic conversion function from linear to colourspace.
  • inverse_transfer_function (object, optional) – RGB colourspace inverse opto-electronic conversion function from colourspace to linear.
RGB_to_XYZ_matrix

Property for self.__to_XYZ private attribute.

Returns:self.__to_XYZ.
Return type:array_like, (3, 3)
XYZ_to_RGB_matrix

Property for self.__to_RGB private attribute.

Returns:self.__to_RGB.
Return type:array_like, (3, 3)
illuminant

Property for self.__illuminant private attribute.

Returns:self.__illuminant.
Return type:unicode
inverse_transfer_function

Property for self.__inverse_transfer_function private attribute.

Returns:self.__inverse_transfer_function.
Return type:object
name

Property for self.__name private attribute.

Returns:self.__name.
Return type:unicode
primaries

Property for self.__primaries private attribute.

Returns:self.__primaries.
Return type:array_like, (3, 2)
transfer_function

Property for self.__transfer_function private attribute.

Returns:self.__transfer_function.
Return type:object
whitepoint

Property for self.__whitepoint private attribute.

Returns:self.__whitepoint.
Return type:array_like
colour.models.normalised_primary_matrix(primaries, whitepoint)

Returns the normalised primary matrix using given primaries and whitepoint matrices.

Parameters:
  • primaries (array_like) – Primaries chromaticity coordinate matrix, (3, 2).
  • whitepoint (array_like) – Illuminant / whitepoint chromaticity coordinates.
Returns:

Normalised primary matrix.

Return type:

ndarray, (3, 3)

Examples

>>> pms = np.array([0.73470, 0.26530, 0.00000, 1.00000, 0.00010, -0.07700])
>>> whitepoint = (0.32168, 0.33767)
>>> normalised_primary_matrix(pms, whitepoint)  
array([[  9.5255239...e-01,   0.0000000...e+00,   9.3678631...e-05],
       [  3.4396645...e-01,   7.2816609...e-01,  -7.2132546...e-02],
       [  0.0000000...e+00,   0.0000000...e+00,   1.0088251...e+00]])
colour.models.RGB_luminance_equation(primaries, whitepoint)

Returns the luminance equation from given primaries and whitepoint matrices.

Parameters:
  • primaries (array_like, (3, 2)) – Primaries chromaticity coordinate matrix.
  • whitepoint (array_like) – Illuminant / whitepoint chromaticity coordinates.
Returns:

Luminance equation.

Return type:

unicode

Examples

>>> pms = np.array([0.73470, 0.26530, 0.00000, 1.00000, 0.00010, -0.07700])
>>> whitepoint = (0.32168, 0.33767)
>>> # Doctests skip for Python 2.x compatibility.
>>> RGB_luminance_equation(pms, whitepoint)  
'Y = 0.3439664...(R) + 0.7281660...(G) + -0.0721325...(B)'
colour.models.RGB_luminance(RGB, primaries, whitepoint)

Returns the luminance \(y\) of given RGB components from given primaries and whitepoint matrices.

Parameters:
  • RGB (array_like, (3,)) – RGB chromaticity coordinate matrix.
  • primaries (array_like, (3, 2)) – Primaries chromaticity coordinate matrix.
  • whitepoint (array_like) – Illuminant / whitepoint chromaticity coordinates.
Returns:

Luminance \(y\).

Return type:

numeric

Examples

>>> RGB = np.array([40.6, 4.2, 67.4])
>>> pms = np.array([0.73470, 0.26530, 0.00000, 1.00000, 0.00010, -0.07700])
>>> whitepoint = (0.32168, 0.33767)
>>> RGB_luminance(RGB, pms, whitepoint)  
12.1616018...
colour.models.XYZ_to_Lab(XYZ, illuminant=(0.34567, 0.3585))

Converts from CIE XYZ colourspace to CIE Lab colourspace.

Parameters:
  • XYZ (array_like, (3,)) – CIE XYZ colourspace matrix.
  • illuminant (array_like, optional) – Reference illuminant chromaticity coordinates.
Returns:

CIE Lab colourspace matrix.

Return type:

ndarray, (3,)

Notes

  • Input CIE XYZ is in domain [0, 1].
  • Input illuminant chromaticity coordinates are in domain [0, 1].
  • Output Lightness \(L^*\) is in domain [0, 100].

References

[2]Lindbloom, B. (2003). XYZ to Lab. Retrieved February 24, 2014, from http://www.brucelindbloom.com/Eqn_XYZ_to_Lab.html

Examples

>>> XYZ = np.array([0.07049534, 0.1008, 0.09558313])
>>> XYZ_to_Lab(XYZ)  
array([ 37.9856291..., -23.6230288...,  -4.4141703...])
colour.models.Lab_to_XYZ(Lab, illuminant=(0.34567, 0.3585))

Converts from CIE Lab colourspace to CIE XYZ colourspace.

Parameters:
  • Lab (array_like, (3,)) – CIE Lab colourspace matrix.
  • illuminant (array_like, optional) – Reference illuminant chromaticity coordinates.
Returns:

CIE XYZ colourspace matrix.

Return type:

ndarray, (3,)

Notes

  • Input Lightness \(L^*\) is in domain [0, 100].
  • Input illuminant chromaticity coordinates are in domain [0, 1].
  • Output CIE XYZ colourspace matrix is in domain [0, 1].

References

[3]Lindbloom, B. (2008). Lab to XYZ. Retrieved February 24, 2014, from http://www.brucelindbloom.com/Eqn_Lab_to_XYZ.html

Examples

>>> Lab = np.array([37.9856291, -23.62302887, -4.41417036])
>>> Lab_to_XYZ(Lab)  
array([ 0.0704953...,  0.1008    ,  0.0955831...])
colour.models.Lab_to_LCHab(Lab)

Converts from CIE Lab colourspace to CIE LCHab colourspace.

Parameters:Lab (array_like, (3,)) – CIE Lab colourspace matrix.
Returns:CIE LCHab colourspace matrix.
Return type:ndarray, (3,)

Notes

  • Lightness \(L^*\) is in domain [0, 100].

References

[4]Lindbloom, B. (2007). Lab to LCH(ab). Retrieved February 24, 2014, from http://www.brucelindbloom.com/Eqn_Lab_to_LCH.html

Examples

>>> Lab = np.array([37.9856291, -23.62302887, -4.41417036])
>>> Lab_to_LCHab(Lab)  
array([  37.9856291...,   24.0319036...,  190.5841597...])
colour.models.LCHab_to_Lab(LCHab)

Converts from CIE LCHab colourspace to CIE Lab colourspace.

Parameters:LCHab (array_like, (3,)) – CIE LCHab colourspace matrix.
Returns:CIE Lab colourspace matrix.
Return type:ndarray, (3,)

Notes

  • Lightness \(L^*\) is in domain [0, 100].

References

[5]Lindbloom, B. (2006). LCH(ab) to Lab. Retrieved February 24, 2014, from http://www.brucelindbloom.com/Eqn_LCH_to_Lab.html

Examples

>>> LCHab = np.array([37.9856291, 24.03190365, 190.58415972])
>>> LCHab_to_Lab(LCHab)  
array([ 37.9856291..., -23.6230288...,  -4.4141703...])
colour.models.XYZ_to_Luv(XYZ, illuminant=(0.34567, 0.3585))

Converts from CIE XYZ colourspace to CIE Luv colourspace.

Parameters:
  • XYZ (array_like, (3,)) – CIE XYZ colourspace matrix.
  • illuminant (array_like, optional) – Reference illuminant chromaticity coordinates.
Returns:

CIE Luv colourspace matrix.

Return type:

ndarray, (3,)

Notes

  • Input CIE XYZ colourspace matrix is in domain [0, 1].
  • Input illuminant chromaticity coordinates are in domain [0, 1].
  • Output \(L^*\) is in domain [0, 100].

References

[2]Lindbloom, B. (2003). XYZ to Luv. Retrieved February 24, 2014, from http://brucelindbloom.com/Eqn_XYZ_to_Luv.html

Examples

>>> XYZ = np.array([0.07049534, 0.1008, 0.09558313])
>>> XYZ_to_Luv(XYZ)  
array([ 37.9856291..., -28.7922944...,  -1.3558195...])
colour.models.Luv_to_XYZ(Luv, illuminant=(0.34567, 0.3585))

Converts from CIE Luv colourspace to CIE XYZ colourspace.

Parameters:
  • Luv (array_like, (3,)) – CIE Luv colourspace matrix.
  • illuminant (array_like, optional) – Reference illuminant chromaticity coordinates.
Returns:

CIE XYZ colourspace matrix.

Return type:

ndarray, (3,)

Notes

  • Input \(L^*\) is in domain [0, 100].
  • Input illuminant chromaticity coordinates are in domain [0, 1].
  • Output CIE XYZ colourspace matrix is in domain [0, 1].

References

[3]Lindbloom, B. (2003). Luv to XYZ. Retrieved February 24, 2014, from http://brucelindbloom.com/Eqn_Luv_to_XYZ.html

Examples

>>> Luv = np.array([37.9856291, -28.79229446, -1.3558195])
>>> Luv_to_XYZ(Luv)  
array([ 0.0704953...,  0.1008    ,  0.0955831...])
colour.models.Luv_to_uv(Luv, illuminant=(0.34567, 0.3585))

Returns the \(uv^p\) chromaticity coordinates from given CIE Luv colourspace matrix.

Parameters:
  • Luv (array_like, (3,)) – CIE Luv colourspace matrix.
  • illuminant (array_like, optional) – Reference illuminant chromaticity coordinates.
Returns:

\(uv^p\) chromaticity coordinates.

Return type:

tuple

Notes

  • Input \(L^*\) is in domain [0, 100].
  • Output \(uv^p\) chromaticity coordinates are in domain [0, 1].

References

[4]Wikipedia. (n.d.). The forward transformation. Retrieved February 24, 2014, from http://en.wikipedia.org/wiki/CIELUV#The_forward_transformation

Examples

>>> Luv = np.array([37.9856291, -28.79229446, -1.3558195])
>>> Luv_to_uv(Luv)  
(0.1508530..., 0.4853297...)
colour.models.Luv_uv_to_xy(uv)

Returns the xy chromaticity coordinates from given CIE Luv colourspace \(uv^p\) chromaticity coordinates.

Parameters:uv (array_like) – CIE Luv u”v” chromaticity coordinates.
Returns:xy chromaticity coordinates.
Return type:tuple

Notes

  • Input \(uv^p\) chromaticity coordinates are in domain [0, 1].
  • Output xy is in domain [0, 1].

References

[5]Wikipedia. (n.d.). The reverse transformation. Retrieved from http://en.wikipedia.org/wiki/CIELUV#The_reverse_transformation

Examples

>>> uv = (0.15085309882985695, 0.48532970854318019)
>>> Luv_uv_to_xy(uv)  
(0.2641477..., 0.3777000...)
colour.models.Luv_to_LCHuv(Luv)

Converts from CIE Luv colourspace to CIE LCHuv colourspace.

Parameters:Luv (array_like, (3,)) – CIE Luv colourspace matrix.
Returns:CIE LCHuv colourspace matrix.
Return type:ndarray, (3,)

Notes

  • \(L^*\) is in domain [0, 100].

References

[6]Lindbloom, B. (2003). Luv to LCH(uv). Retrieved February 24, 2014, from http://www.brucelindbloom.com/Eqn_Luv_to_LCH.html

Examples

>>> Luv = np.array([37.9856291, -28.79229446, -1.3558195])
>>> Luv_to_LCHuv(Luv)  
array([  37.9856291...,   28.8241993...,  182.6960474...])
colour.models.LCHuv_to_Luv(LCHuv)

Converts from CIE LCHuv colourspace to CIE Luv colourspace.

Parameters:LCHuv (array_like, (3,)) – CIE LCHuv colourspace matrix.
Returns:CIE Luv colourspace matrix.
Return type:ndarray, (3,)

Notes

  • \(L^*\) is in domain [0, 100].

References

[7]Lindbloom, B. (2006). LCH(uv) to Luv. Retrieved February 24, 2014, from http://www.brucelindbloom.com/Eqn_LCH_to_Luv.html

Examples

>>> LCHuv = np.array([37.9856291, 28.82419933, 182.69604747])
>>> LCHuv_to_Luv(LCHuv)  
array([ 37.9856291..., -28.7922944...,  -1.3558195...])
colour.models.XYZ_to_UCS(XYZ)

Converts from CIE XYZ colourspace to CIE UCS colourspace.

Parameters:XYZ (array_like, (3,)) – CIE XYZ colourspace matrix.
Returns:CIE UCS colourspace matrix.
Return type:ndarray, (3,)

Notes

  • Input CIE XYZ colourspace matrix is in domain [0, 1].
  • Output CIE UCS colourspace matrix is in domain [0, 1].

Examples

>>> XYZ = np.array([0.07049534, 0.1008, 0.09558313])
>>> XYZ_to_UCS(XYZ)  
array([ 0.0469968...,  0.1008    ,  0.1637439...])
colour.models.UCS_to_XYZ(UVW)

Converts from CIE UCS colourspace to CIE XYZ colourspace.

Parameters:UVW (array_like, (3,)) – CIE UCS colourspace matrix.
Returns:CIE XYZ colourspace matrix.
Return type:ndarray, (3,)

Notes

  • Input CIE UCS colourspace matrix is in domain [0, 1].
  • Output CIE XYZ colourspace matrix is in domain [0, 1].

Examples

>>> UVW = np.array([0.04699689, 0.1008, 0.1637439])
>>> UCS_to_XYZ(UVW)  
array([ 0.0704953...,  0.1008    ,  0.0955831...])
colour.models.UCS_to_uv(UVW)

Returns the uv chromaticity coordinates from given CIE UCS colourspace matrix.

Parameters:UVW (array_like, (3,)) – CIE UCS colourspace matrix.
Returns:uv chromaticity coordinates.
Return type:tuple

Notes

  • Input CIE UCS colourspace matrix is in domain [0, 1].
  • Output uv chromaticity coordinates are in domain [0, 1].

Examples

>>> UCS = np.array([0.04699689, 0.1008, 0.1637439])
>>> UCS_to_uv(UCS)  
(0.1508530..., 0.3235531...)
colour.models.UCS_uv_to_xy(uv)

Returns the xy chromaticity coordinates from given CIE UCS colourspace uv chromaticity coordinates.

Parameters:uv (array_like) – CIE UCS uv chromaticity coordinates.
Returns:xy chromaticity coordinates.
Return type:tuple

Notes

  • Input uv chromaticity coordinates are in domain [0, 1].
  • Output xy chromaticity coordinates are in domain [0, 1].

Examples

>>> uv = (0.15085308732766581, 0.3235531372954405)
>>> UCS_uv_to_xy(uv)  
(0.2641477..., 0.3777000...)
colour.models.XYZ_to_UVW(XYZ, illuminant=(0.34567, 0.3585))

Converts from CIE XYZ colourspace to CIE 1964 U*V*W* colourspace.

Parameters:
  • XYZ (array_like, (3,)) – CIE XYZ colourspace matrix.
  • illuminant (array_like, optional) – Reference illuminant chromaticity coordinates.
Returns:

CIE 1964 U*V*W* colourspace matrix.

Return type:

ndarray, (3,)

Notes

  • Input CIE XYZ colourspace matrix is in domain [0, 100].
  • Output CIE UVW colourspace matrix is in domain [0, 100].

Warning

The input / output domains of that definition are non standard!

Examples

>>> XYZ = np.array([0.07049534, 0.1008, 0.09558313]) * 100
>>> XYZ_to_UVW(XYZ)  
array([-28.0483277...,  -0.8805242...,  37.0041149...])
colour.models.XYZ_to_IPT(XYZ)

Converts from CIE XYZ colourspace to IPT colourspace. [1]_

Parameters:XYZ (array_like, (3,)) – CIE XYZ colourspace matrix.
Returns:IPT colourspace matrix.
Return type:ndarray, (3,)

Notes

  • Input CIE XYZ colourspace matrix needs to be adapted for CIE Standard Illuminant D Series D65.

Examples

>>> XYZ = np.array([0.96907232, 1, 1.12179215])
>>> XYZ_to_IPT(XYZ)  
array([ 1.0030082...,  0.0190691..., -0.0136929...])
colour.models.IPT_to_XYZ(IPT)

Converts from IPT colourspace to CIE XYZ colourspace. [1]_

Parameters:IPT (array_like, (3,)) – IPT colourspace matrix.
Returns:CIE XYZ colourspace matrix.
Return type:ndarray, (3,)

Examples

>>> IPT = np.array([1.00300825, 0.01906918, -0.01369292])
>>> IPT_to_XYZ(IPT)  
array([ 0.9690723...,  1.        ,  1.1217921...])
colour.models.IPT_hue_angle(IPT)

Computes the hue angle from IPT colourspace. [1]_

Parameters:IPT (array_like, (3,)) – IPT colourspace matrix.
Returns:Hue angle.
Return type:numeric

Examples

>>> IPT_hue_angle(([0.96907232, 1, 1.12179215]))  
0.8427358...
colour.models.linear_to_log(value, method=u'Cineon', **kwargs)

Converts from linear to log using given method.

Parameters:
  • value (numeric) – Value.
  • method (unicode, optional) – {‘Cineon’, ‘Panalog’, ‘REDLog’, ‘ViperLog’, ‘PLog’, ‘C-Log’, ‘ACEScc’, ‘ALEXA Log C’, ‘DCI-P3’, ‘S-Log’, ‘S-Log2’, ‘S-Log3’}, Computation method.
  • **kwargs (**) – Keywords arguments.
Returns:

Log value.

Return type:

numeric

Examples

>>> linear_to_log(0.18)  
0.4573196...
>>> linear_to_log(0.18, method='ACEScc')  
0.4135884...
>>> linear_to_log(0.18, method='PLog', log_reference=400)   
0.3910068...
>>> linear_to_log(0.18, method='S-Log')  
0.3599878...
colour.models.log_to_linear(value, method=u'Cineon', **kwargs)

Converts from log to linear using given method.

Parameters:
  • value (numeric) – Value.
  • method (unicode, optional) – {‘Cineon’, ‘Panalog’, ‘REDLog’, ‘ViperLog’, ‘PLog’, ‘C-Log’, ‘ACEScc’, ‘ALEXA Log C’, ‘DCI-P3’, ‘S-Log’, ‘S-Log2’, ‘S-Log3’}, Computation method.
  • **kwargs (**) – Keywords arguments.
Returns:

Log value.

Return type:

numeric

Examples

>>> log_to_linear(0.45731961308541841)  
0.18...
>>> log_to_linear(0.41358840249244228, method='ACEScc')   
0.18...
>>> log_to_linear(0.39100684261974583, method='PLog', log_reference=400)   
0.1...
>>> log_to_linear(0.35998784642215442, method='S-Log')   
0.1799999...
colour.models.linear_to_cineon(value, black_offset=0.0107977516232771, **kwargs)

Defines the linear to Cineon conversion function.

Parameters:
  • value (numeric) – Linear value.
  • black_offset (numeric) – Black offset.
  • **kwargs (**, optional) – Unused parameter provided for signature compatibility with other linear / log conversion objects.
Returns:

Cineon value.

Return type:

numeric

Examples

>>> linear_to_cineon(0.18)  
0.4573196...
colour.models.cineon_to_linear(value, black_offset=0.0107977516232771, **kwargs)

Defines the Cineon to linear conversion function.

Parameters:
  • value (numeric) – Cineon value.
  • black_offset (numeric) – Black offset.
  • **kwargs (**, optional) – Unused parameter provided for signature compatibility with other linear / log conversion objects.
Returns:

Linear value.

Return type:

numeric

Examples

>>> cineon_to_linear(0.45731961308541841)  
0.18...
colour.models.linear_to_panalog(value, black_offset=0.04077184461038074, **kwargs)

Defines the linear to Panalog conversion function.

Parameters:
  • value (numeric) – Linear value.
  • black_offset (numeric) – Black offset.
  • **kwargs (**, optional) – Unused parameter provided for signature compatibility with other linear / log conversion objects.
Returns:

Panalog value.

Return type:

numeric

Examples

>>> linear_to_panalog(0.18)  
0.3745767...
colour.models.panalog_to_linear(value, black_offset=0.04077184461038074, **kwargs)

Defines the Panalog to linear conversion function.

Parameters:
  • value (numeric) – Panalog value.
  • black_offset (numeric) – Black offset.
  • **kwargs (**, optional) – Unused parameter provided for signature compatibility with other linear / log conversion objects.
Returns:

Linear value.

Return type:

numeric

Examples

>>> panalog_to_linear(0.37457679138229816)  
0.1...
colour.models.linear_to_red_log(value, black_offset=0.009955040995908344, **kwargs)

Defines the linear to REDLog conversion function.

Parameters:
  • value (numeric) – Linear value.
  • black_offset (numeric) – Black offset.
  • **kwargs (**, optional) – Unused parameter provided for signature compatibility with other linear / log conversion objects.
Returns:

REDLog value.

Return type:

numeric

Examples

>>> linear_to_red_log(0.18)  
0.6376218...
colour.models.red_log_to_linear(value, black_offset=0.009955040995908344, **kwargs)

Defines the REDLog to linear conversion function.

Parameters:
  • value (numeric) – REDLog value.
  • black_offset (numeric) – Black offset.
  • **kwargs (**, optional) – Unused parameter provided for signature compatibility with other linear / log conversion objects.
Returns:

Linear value.

Return type:

numeric

Examples

>>> red_log_to_linear(0.63762184598817484)  
0.1...
colour.models.linear_to_viper_log(value, **kwargs)

Defines the linear to ViperLog conversion function.

Parameters:
  • value (numeric) – Linear value.
  • **kwargs (**, optional) – Unused parameter provided for signature compatibility with other linear / log conversion objects.
Returns:

ViperLog value.

Return type:

numeric

Examples

>>> linear_to_viper_log(0.18)  
0.6360080...
colour.models.viper_log_to_linear(value, **kwargs)

Defines the ViperLog to linear conversion function.

Parameters:
  • value (numeric) – ViperLog value.
  • **kwargs (**, optional) – Unused parameter provided for signature compatibility with other linear / log conversion objects.
Returns:

Linear value.

Return type:

numeric

Examples

>>> viper_log_to_linear(0.63600806701041346)  
0.1799999...
colour.models.linear_to_pivoted_log(value, log_reference=445, linear_reference=0.18, negative_gamma=0.6, density_per_code_value=0.002)

Defines the linear to Josh Pines style pivoted log conversion function.

Parameters:
  • value (numeric) – Linear value.
  • log_reference (numeric) – Log reference.
  • linear_reference (numeric) – Linear reference.
  • negative_gamma (numeric) – Negative gamma.
  • density_per_code_value (numeric) – Density per code value.
Returns:

Josh Pines style pivoted log value.

Return type:

numeric

Examples

>>> linear_to_pivoted_log(0.18)  
0.4349951...
colour.models.pivoted_log_to_linear(value, log_reference=445, linear_reference=0.18, negative_gamma=0.6, density_per_code_value=0.002)

Defines the Josh Pines style pivoted log to linear conversion function.

Parameters:
  • value (numeric) – Josh Pines style pivoted log value.
  • log_reference (numeric) – Log reference.
  • linear_reference (numeric) – Linear reference.
  • negative_gamma (numeric) – Negative gamma.
  • density_per_code_value (numeric) – Density per code value.
Returns:

Linear value.

Return type:

numeric

Examples

>>> pivoted_log_to_linear(0.43499511241446726)  
0.1...
colour.models.linear_to_c_log(value, **kwargs)

Defines the linear to Canon Log conversion function.

Parameters:
  • value (numeric) – Linear value.
  • **kwargs (**, optional) – Unused parameter provided for signature compatibility with other linear / log conversion objects.
Returns:

Canon Log value.

Return type:

numeric

References

[2]Thorpe, L. (2012). CANON-LOG TRANSFER CHARACTERISTIC. Retrieved from http://downloads.canon.com/CDLC/Canon-Log_Transfer_Characteristic_6-20-2012.pdf

Examples

>>> linear_to_c_log(0.20) * 100  
32.7953896...
colour.models.c_log_to_linear(value, **kwargs)

Defines the Canon Log to linear conversion function. [2]_

Parameters:
  • value (numeric) – Canon Log value.
  • **kwargs (**, optional) – Unused parameter provided for signature compatibility with other linear / log conversion objects.
Returns:

Linear value.

Return type:

numeric

Examples

>>> c_log_to_linear(32.795389693580908 / 100)  
0.19999999...
colour.models.linear_to_aces_cc(x, **kwargs)
colour.models.aces_cc_to_linear(x, **kwargs)
colour.models.linear_to_alexa_log_c(x, **kwargs)
colour.models.alexa_log_c_to_linear(x, **kwargs)
colour.models.linear_to_s_log(x, **kwargs)
colour.models.linear_to_dci_p3_log(x, **kwargs)
colour.models.dci_p3_log_to_linear(x, **kwargs)
colour.models.s_log_to_linear(x, **kwargs)
colour.models.linear_to_s_log2(x, **kwargs)
colour.models.s_log2_to_linear(x, **kwargs)
colour.models.linear_to_s_log3(x, **kwargs)
colour.models.s_log3_to_linear(x, **kwargs)
colour.models.XYZ_to_RGB(XYZ, illuminant_XYZ, illuminant_RGB, XYZ_to_RGB_matrix, chromatic_adaptation_transform=u'CAT02', transfer_function=None)

Converts from CIE XYZ colourspace to RGB colourspace using given CIE XYZ colourspace matrix, illuminants, chromatic adaptation method, normalised primary matrix and transfer function.

Parameters:
  • XYZ (array_like, (3,)) – CIE XYZ colourspace matrix.
  • illuminant_XYZ (array_like) – CIE XYZ colourspace illuminant xy chromaticity coordinates.
  • illuminant_RGB (array_like) – RGB colourspace illuminant xy chromaticity coordinates.
  • XYZ_to_RGB_matrix (array_like, (3, 3)) – Normalised primary matrix.
  • chromatic_adaptation_transform (unicode, optional) – {‘CAT02’, ‘XYZ Scaling’, ‘Von Kries’, ‘Bradford’, ‘Sharp’, ‘Fairchild, ‘CMCCAT97’, ‘CMCCAT2000’, ‘CAT02_BRILL_CAT’, ‘Bianco’, ‘Bianco PC’}, Chromatic adaptation transform.
  • transfer_function (object, optional) – Transfer function.
Returns:

RGB colourspace matrix.

Return type:

ndarray, (3,)

Notes

  • Input CIE XYZ colourspace matrix is in domain [0, 1].
  • Input illuminant_XYZ xy chromaticity coordinates are in domain [0, 1].
  • Input illuminant_RGB xy chromaticity coordinates are in domain [0, 1].
  • Output RGB colourspace matrix is in domain [0, 1].

Examples

>>> XYZ = np.array([0.07049534, 0.1008, 0.09558313])
>>> illuminant_XYZ = (0.34567, 0.35850)
>>> illuminant_RGB = (0.31271, 0.32902)
>>> chromatic_adaptation_transform = 'Bradford'
>>> XYZ_to_RGB_matrix = np.array([
...     [3.24100326, -1.53739899, -0.49861587],
...     [-0.96922426, 1.87592999, 0.04155422],
...     [0.05563942, -0.2040112, 1.05714897]])
>>> XYZ_to_RGB(
...     XYZ,
...     illuminant_XYZ,
...     illuminant_RGB,
...     XYZ_to_RGB_matrix,
...     chromatic_adaptation_transform)  
array([ 0.0110360...,  0.1273446...,  0.1163103...])
colour.models.RGB_to_XYZ(RGB, illuminant_RGB, illuminant_XYZ, RGB_to_XYZ_matrix, chromatic_adaptation_transform=u'CAT02', inverse_transfer_function=None)

Converts from RGB colourspace to CIE XYZ colourspace using given RGB colourspace matrix, illuminants, chromatic adaptation method, normalised primary matrix and transfer function.

Parameters:
  • RGB (array_like, (3,)) – RGB colourspace matrix.
  • illuminant_RGB (array_like) – RGB colourspace illuminant chromaticity coordinates.
  • illuminant_XYZ (array_like) – CIE XYZ colourspace illuminant chromaticity coordinates.
  • RGB_to_XYZ_matrix (array_like, (3, 3)) – Normalised primary matrix.
  • chromatic_adaptation_transform (unicode, optional) – {‘CAT02’, ‘XYZ Scaling’, ‘Von Kries’, ‘Bradford’, ‘Sharp’, ‘Fairchild, ‘CMCCAT97’, ‘CMCCAT2000’, ‘CAT02_BRILL_CAT’, ‘Bianco’, ‘Bianco PC’}, Chromatic adaptation transform.
  • inverse_transfer_function (object, optional) – Inverse transfer function.
Returns:

CIE XYZ colourspace matrix.

Return type:

ndarray, (3,)

Notes

  • Input RGB colourspace matrix is in domain [0, 1].
  • Input illuminant_RGB xy chromaticity coordinates are in domain [0, 1].
  • Input illuminant_XYZ xy chromaticity coordinates are in domain [0, 1].
  • Output CIE XYZ colourspace matrix is in domain [0, 1].

Examples

>>> RGB = np.array([0.01103604, 0.12734466, 0.11631037])
>>> illuminant_RGB = (0.31271, 0.32902)
>>> illuminant_XYZ = (0.34567, 0.35850)
>>> chromatic_adaptation_transform = 'Bradford'
>>> RGB_to_XYZ_matrix = np.array([
...     [0.41238656, 0.35759149, 0.18045049],
...     [0.21263682, 0.71518298, 0.0721802],
...     [0.01933062, 0.11919716, 0.95037259]])
>>> RGB_to_XYZ(
...     RGB,
...     illuminant_RGB,
...     illuminant_XYZ,
...     RGB_to_XYZ_matrix,
...     chromatic_adaptation_transform)  
array([ 0.0704953...,  0.1008    ,  0.0955831...])
colour.models.RGB_to_RGB(RGB, input_colourspace, output_colourspace, chromatic_adaptation_transform=u'CAT02')

Converts from given input RGB colourspace to output RGB colourspace using given chromatic adaptation method.

Parameters:
  • RGB (array_like, (3,)) – RGB colourspace matrix.
  • input_colourspace (RGB_Colourspace) – RGB input colourspace.
  • output_colourspace (RGB_Colourspace) – RGB output colourspace.
  • chromatic_adaptation_transform (unicode, optional) – {‘CAT02’, ‘XYZ Scaling’, ‘Von Kries’, ‘Bradford’, ‘Sharp’, ‘Fairchild, ‘CMCCAT97’, ‘CMCCAT2000’, ‘CAT02_BRILL_CAT’, ‘Bianco’, ‘Bianco PC’}, Chromatic adaptation transform.
  • (3,) (ndarray,) – RGB colourspace matrix.

Notes

  • RGB colourspace matrices are in domain [0, 1].

Examples

>>> from colour import sRGB_COLOURSPACE, PROPHOTO_RGB_COLOURSPACE
>>> RGB = np.array([0.01103604, 0.12734466, 0.11631037])
>>> RGB_to_RGB(
...     RGB,
...     sRGB_COLOURSPACE,
...     PROPHOTO_RGB_COLOURSPACE)  
array([ 0.0643338...,  0.1157362...,  0.1157614...])
colour.models.XYZ_to_sRGB(XYZ, illuminant=(0.31271, 0.32902), chromatic_adaptation_transform=u'CAT02', transfer_function=True)

Converts from CIE XYZ colourspace to sRGB colourspace.

Parameters:
  • XYZ (array_like, (3,)) – CIE XYZ colourspace matrix.
  • illuminant (array_like, optional) – Source illuminant chromaticity coordinates.
  • chromatic_adaptation_transform (unicode, optional) – {‘CAT02’, ‘XYZ Scaling’, ‘Von Kries’, ‘Bradford’, ‘Sharp’, ‘Fairchild, ‘CMCCAT97’, ‘CMCCAT2000’, ‘CAT02_BRILL_CAT’, ‘Bianco’, ‘Bianco PC’}, Chromatic adaptation transform.
  • transfer_function (bool, optional) – Apply sRGB transfer function.
Returns:

sRGB colour matrix.

Return type:

ndarray, (3,)

Notes

  • Input CIE XYZ colourspace matrix is in domain [0, 1].

Examples

>>> import numpy as np
>>> XYZ = np.array([0.07049534, 0.1008, 0.09558313])
>>> XYZ_to_sRGB(XYZ)  
array([ 0.1750135...,  0.3881879...,  0.3216195...])
colour.models.sRGB_to_XYZ(RGB, illuminant=(0.31271, 0.32902), chromatic_adaptation_method=u'CAT02', inverse_transfer_function=True)

Converts from sRGB colourspace to CIE XYZ colourspace.

Parameters:
  • RGB (array_like, (3,)) – sRGB colourspace matrix.
  • illuminant (array_like, optional) – Source illuminant chromaticity coordinates.
  • chromatic_adaptation_method (unicode, optional) – {‘CAT02’, ‘XYZ Scaling’, ‘Von Kries’, ‘Bradford’, ‘Sharp’, ‘Fairchild, ‘CMCCAT97’, ‘CMCCAT2000’, ‘Bianco’, ‘Bianco PC’}, Chromatic adaptation method.
  • inverse_transfer_function (bool, optional) – Apply sRGB inverse transfer function.
Returns:

CIE XYZ colour matrix.

Return type:

ndarray, (3,)

Notes

  • Input RGB colourspace matrix is in domain [0, 1].

Examples

>>> import numpy as np
>>> RGB = np.array([0.17501358, 0.38818795, 0.32161955])
>>> sRGB_to_XYZ(RGB)  
array([ 0.0704953...,  0.1008    ,  0.0955831...])
colour.models.spectral_to_aces_relative_exposure_values(spd, illuminant=<colour.colorimetry.spectrum.SpectralPowerDistribution object at 0x2b436d42a0d0>)

Converts given spectral power distribution to ACES2065-1 colourspace relative exposure values.

Parameters:
  • spd (SpectralPowerDistribution) – Spectral power distribution.
  • illuminant (SpectralPowerDistribution, optional) – Illuminant spectral power distribution.
Returns:

ACES2065-1 colourspace relative exposure values matrix.

Return type:

ndarray, (3,)

Notes

  • Output ACES2065-1 colourspace relative exposure values matrix is in domain [0, 1].

References

Examples

>>> from colour import COLOURCHECKERS_SPDS
>>> spd = COLOURCHECKERS_SPDS['ColorChecker N Ohta']['dark skin']
>>> spectral_to_aces_relative_exposure_values(spd)  
array([ 0.1187697...,  0.0870866...,  0.0589442...])