Colour Versions Save

Colour Science for Python

v0.3.11

6 years ago

Colour 0.3.11 - Alpha Milestone

This release is an important milestone on The Road to Stable. The spectral backend has been entirely overhauled and is based on a continuous signal implementation. It is backward incompatible but we think that the ease of use and speed improvements are worth it.

It requires minimal code changes from an usage standpoint compared to previous version, e.g. colour.SpectralPowerDistribution instantiation now requires spectral data as first argument:

Colour 0.3.11

    >>> data = {
    ...     500: 0.0651,
    ...     520: 0.0705,
    ...     540: 0.0772,
    ...     560: 0.0870,
    ...     580: 0.1128,
    ...     600: 0.1360
    ... }
    >>> SpectralPowerDistribution(data)

Colour 0.3.10

    >>> data = {
    ...     500: 0.0651,
    ...     520: 0.0705,
    ...     540: 0.0772,
    ...     560: 0.0870,
    ...     580: 0.1128,
    ...     600: 0.1360
    ... }
    >>> SpectralPowerDistribution('Sample', data)

The documentation has been entirely rewritten with an improved presentation and layout, the bibliography and cross-references have been fixed and overall it should be much easier and accessible than the interim automatic version previously used. It still misses a lot of context content but we will be gradually addressing that in future versions.

As part of some import API changes, a deprecation system has been implement so that only key objects are exposed at the colour top level namespace. The colour.plotting sub-package is also affected. As a result you might see warnings as such:

>>> import colour
>>> colour.tsplit
/Users/kelsolaar/Documents/Development/colour-science/colour/colour/utilities/verbose.py:141: ColourWarning: "colour.tsplit" object access is deprecated and will change to "colour.utilities.tsplit" in a future release.
  warn(*args, **kwargs)
<function tsplit at 0x103152c08>

Please adjust your access accordingly to the warnings and the updated documentation. You can also find the related API changes exposed into the colour.API_CHANGES and colour.plotting.API_CHANGES attributes.

We have also started to use Invoke to provide automation in our regular maintenance tasks.

Features

colour.adaptation

  • Implement colour.chromatic_adaptation definition wrapping the following definitions: (@kelsolaar)
    • colour.adaptation.chromatic_adaptation_CIE1994
    • colour.adaptation.chromatic_adaptation_CMCCAT2000
    • colour.adaptation.chromatic_adaptation_Fairchild1990
    • colour.adaptation.chromatic_adaptation_VonKries

colour.algebra

  • Implement colour.NullInterpolator class: a call within given tolerances will return existing y variable values or default if outside tolerances. (@kelsolaar)
  • Implement colour.kernel_nearest_neighbour, colour.kernel_linear, colour.kernel_sinc, colour.kernel_lanczos, and colour.kernel_cardinal_spline interpolating kernel definitions for use with the new colour.KernelInterpolator class performing interpolation of a 1-D function. (@kelsolaar)

colour.appearance

  • Implement support for CAM16 colour appearance model with colour.XYZ_to_CAM16 and colour.CAM16_to_XYZ definitions. (@kelsolaar)

colour.continuous

  • Implement colour.continuous.AbstractContinuousFunction, colour.continuous.Signal and colour.continuous.MultiSignal classes implementing support for continuous functions/signals representation. (@kelsolaar, @MichaelMauderer)

colour.difference

Implement support for Li et al. (2017) CAM16 based uniform colourspaces colour difference with colour.difference.delta_E_CAM16LCD, colour.difference.delta_E_CAM16SCD, and colour.difference.delta_E_CAM16UCS definitions. (@KelSolaar)

  • colour.delta_E wrapper definition has been improved and accepts the following methods: (@kelsolaar)
    • CIE 1976
    • CIE 1994
    • CIE 2000
    • CMC
    • CAM02-LCD
    • CAM02-SCD
    • CAM02-UCS
    • CAM16-LCD
    • CAM16-SCD
    • CAM16-UCS

colour.models

  • Implement support for ITU-R BT.2100 transfer functions with the following definitions: (@kelsolaar, @Nick-Shaw)
    • colour.models.oetf_BT2100_PQ
    • colour.models.oetf_reverse_BT2100_PQ
    • colour.models.eotf_BT2100_PQ
    • colour.models.eotf_reverse_BT2100_PQ
    • colour.models.ootf_BT2100_PQ
    • colour.models.ootf_reverse_BT2100_PQ
    • colour.models.oetf_BT2100_HLG
    • colour.models.oetf_reverse_BT2100_HLG
    • colour.models.eotf_BT2100_HLG
    • colour.models.eotf_reverse_BT2100_HLG
    • colour.models.ootf_BT2100_HLG
    • colour.models.ootf_reverse_BT2100_HLG
  • Implement support for SMPTE 240M transfer functions with colour.models.oetf_SMPTE240M and colour.models.eotf_SMPTE240M definitions. (@KelSolaar)
  • Implement colour.oetf_reverse and colour.eotf_reverse definitions and colour.OETFS_REVERSE and colour.EOTFS_REVERSE attributes defining relevant reverse OETF and EOTF conversions. (@kelsolaar, @Nick-Shaw, @KevinJW)
  • Implement colour.legal_to_full and colour.full_to_legal definitions providing conversions between full range and legal range. (@kelsolaar)
  • Implement colour.CV_range definition returning the Code Value range for given bit depth, range legality and representation. (@Nick-Shaw)
  • Implement support for Li et al. (2017) CAM16 based uniform colourspaces with colour.JMh_CAM16_to_CAM16LCD, colour.CAM16LCD_to_JMh_CAM16, colour.JMh_CAM16_to_CAM16SCD, colour.CAM16SCD_to_JMh_CAM16, colour.JMh_CAM16_to_CAM16UCS, CAM16UCS_to_JMh_CAM16 definitions. (@KelSolaar)
  • Implement colour.RGB_Colourspace.__str__ and colour.RGB_Colourspace.__repr__ methods. (@KelSolaar)

colour.recovery

  • Implement colour.XYZ_to_spectral definition wrapping the following definitions: (@kelsolaar)
    • colour.recovery.XYZ_to_spectral_Meng2015
    • colour.recovery.RGB_to_spectral_Smits1999

colour.utilities

  • Implement colour.utilities.closest_indexes definition that returns a array closest element indexes to reference b array elements. (@kelsolaar)
  • Implement colour..utilities.fill_nan definition that fills given array NaNs either through linear interpolation or with given constant value. (@kelsolaar)
  • Implement colour.utilities.ndarray_write context manager that sets given array writeable to perform an operation and then read-only. (@kelsolaar)
  • Implement colour.utilities.first_item definition that returns the first item of given iterable. (@kelsolaar)

Fixes

colour.models

  • colour.models.log_encoding_CanonLog3 and colour.models.log_decoding_CanonLog3 definitions implementation was slightly incorrect, they have been reimplemented correctly. (@Nick-Shaw, @kelsolaar)
  • colour.models.log_encoding_SLog2 and colour.models.log_decoding_SLog2 definitions implementation was incorrect, they have been reimplemented correctly. (@Nick-Shaw, @kelsolaar)

colour.plotting

  • colour.plotting.display definition was raising an exception when attempting to save a figure. (@kelsolaar)

colour.recovery

  • colour.recovery.XYZ_to_spectral_Meng2015 definition recovered spectral power distribution has been scaled by 100. (@kelsolaar)

colour.temperature

  • colour.temperature.uv_to_CCT_Ohno2013 definition was incorrectly using parabolic solution. (@brandondube, @KelSolaar)
    • As a consequence correlated colour temperature computations using Ohno (2013) method are slightly affected:
      • CCT: 6507.51282029, 0.00322336 ---> 6507.47380460, 0.00322335
      • CQS: 75.3424278440688 ---> 75.342591389578701

colour.utilities

  • colour.utilities.is_iterable definition does not consume consumes the first item of given iterator. (@kelsolaar, @MichaelMauderer)

colour.volume

  • MacAdam (1935) Optimal Colour Stimuli data for D65 illuminant taken from Centore (2012) had a reproduction error.

Changes

colour.adaptation

  • colour.adaptation.chromatic_adaptation_CMCCAT2000: (@kelsolaar)
    • Signature: chromatic_adaptation_CMCCAT2000(XYZ, XYZ_w, XYZ_wr, L_A1, L_A2, surround=CMCCAT2000_VIEWING_CONDITIONS['Average'], direction='Forward')

colour.colorimetry

  • colour.DEFAULT_WAVELENGTH_DECIMALS: (@kelsolaar)

    • Remove
  • colour.SpectralMapping: (@kelsolaar)

    • Remove
  • colour.SpectralPowerDistribution: (@kelsolaar)

    • Signature: __init__(self, data=None, domain=None, **kwargs)
  • colour.SpectralPowerDistribution.data: (@kelsolaar)

    • Remove
  • colour.SpectralPowerDistribution.title: (@kelsolaar)

    • Name: SpectralPowerDistribution.strict_name
  • colour.SpectralPowerDistribution.items: (@kelsolaar)

    • Remove
  • colour.SpectralPowerDistribution.__iter__: (@kelsolaar)

    • Remove
  • colour.SpectralPowerDistribution.get: (@kelsolaar)

    • Remove
  • colour.SpectralPowerDistribution.extrapolate: (@kelsolaar)

    • Signature: extrapolate(self, shape, extrapolator=None, extrapolator_args=None)
  • colour.SpectralPowerDistribution.interpolate: (@kelsolaar)

    • Signature: interpolate(self, shape, interpolator=None, interpolator_args=None)
  • colour.SpectralPowerDistribution.align: (@kelsolaar)

    • Signature: align(self, shape, interpolator=None, interpolator_args=None, extrapolator=None, extrapolator_args=None)
  • colour.SpectralPowerDistribution.trim_wavelengths: (@kelsolaar)

    • Name: SpectralPowerDistribution.trim
  • colour.SpectralPowerDistribution.zeros: (@kelsolaar)

    • Remove
  • colour.SpectralPowerDistribution.clone: (@kelsolaar)

    • Name: SpectralPowerDistribution.copy
  • colour.MultiSpectralPowerDistribution: (@kelsolaar)

    • Signature: __init__(self, data=None, domain=None, labels=None, **kwargs)
  • colour.MultiSpectralPowerDistribution.mapping: (@kelsolaar)

    • Remove
  • colour.MultiSpectralPowerDistribution.data: (@kelsolaar)

    • Remove
  • colour.MultiSpectralPowerDistribution.title: (@kelsolaar)

    • Name: MultiSpectralPowerDistribution.strict_name
  • colour.MultiSpectralPowerDistribution.x: (@kelsolaar)

    • Remove
  • colour.MultiSpectralPowerDistribution.y: (@kelsolaar)

    • Remove
  • colour.MultiSpectralPowerDistribution.z: (@kelsolaar)

    • Remove
  • colour.MultiSpectralPowerDistribution.items: (@kelsolaar)

    • Remove
  • colour.MultiSpectralPowerDistribution.__iter__: (@kelsolaar)

    • Remove
  • colour.MultiSpectralPowerDistribution.get: (@kelsolaar)

    • Remove
  • colour.MultiSpectralPowerDistribution.extrapolate: (@kelsolaar)

    • Signature: extrapolate(self, shape, extrapolator=None, extrapolator_args=None)
  • colour.MultiSpectralPowerDistribution.interpolate: (@kelsolaar)

    • Signature: interpolate(self, shape, interpolator=None, interpolator_args=None)
  • colour.MultiSpectralPowerDistribution.align: (@kelsolaar)

    • Signature: align(self, shape, interpolator=None, interpolator_args=None, extrapolator=None, extrapolator_args=None)
  • colour.MultiSpectralPowerDistribution.trim_wavelengths: (@kelsolaar)

    • Name: MultiSpectralPowerDistribution.trim
  • colour.MultiSpectralPowerDistribution.zeros: (@kelsolaar)

    • Remove
  • colour.MultiSpectralPowerDistribution.clone: (@kelsolaar)

    • Name: MultiSpectralPowerDistribution.copy

colour.models

  • colour.models.log_encoding_SLog: (@Nick-Shaw, @kelsolaar)
    • Signature: log_encoding_SLog(x, bit_depth=10, out_legal=True, in_reflection=True)
    • Note: The return value is now in legal range (studio swing).
  • colour.models.log_decoding_SLog: (@Nick-Shaw, @kelsolaar)
    • Signature: log_decoding_SLog(y, bit_depth=10, in_legal=True, out_reflection=True)
    • Note: The input value is now in legal range (studio swing).
  • colour.models.log_encoding_SLog2: (@Nick-Shaw, @kelsolaar)
    • Signature: log_encoding_SLog2(x, bit_depth=10, out_legal=True, in_reflection=True)
    • Note: The return value is now in legal range (studio swing).
  • colour.models.log_decoding_SLog2: (@Nick-Shaw, @kelsolaar)
    • Signature: log_decoding_SLog2(y, bit_depth=10, in_legal=True, out_reflection=True)
    • Note: The input value is now in legal range (studio swing).
  • colour.models.log_encoding_SLog3: (@Nick-Shaw, @kelsolaar)
    • Signature: log_encoding_SLog3(x, bit_depth=10, out_legal=True, in_reflection=True)
    • Note: The return value is now in legal range (studio swing).
  • colour.models.log_decoding_SLog3: (@Nick-Shaw, @kelsolaar)
    • Signature: log_decoding_SLog3(y, bit_depth=10, in_legal=True, out_reflection=True)
    • Note: The input value is now in legal range (studio swing).
  • colour.models.log_encoding_VLog: (@Nick-Shaw, @kelsolaar)
    • Signature: log_encoding_VLog(L_in, bit_depth=10, out_legal=True, in_reflection=True)
  • colour.models.log_decoding_VLog: (@Nick-Shaw, @kelsolaar)
    • Signature: log_decoding_VLog(V_out, bit_depth=10, in_legal=True, out_reflection=True)
  • colour.models.log_encoding_CanonLog: (@Nick-Shaw, @kelsolaar)
    • Signature: log_encoding_CanonLog(x, bit_depth=10, out_legal=True, in_reflection=True)
    • Note: The input value is now reflection according to ACES IDT.
  • colour.models.log_decoding_CanonLog: (@Nick-Shaw, @kelsolaar)
    • Signature: log_decoding_CanonLog(clog_ire, bit_depth=10, in_legal=True, out_reflection=True)
    • Note: The output value is now reflection according to ACES IDT.
  • colour.models.log_encoding_CanonLog2: (@Nick-Shaw, @kelsolaar)
    • Signature: log_encoding_CanonLog2(x, bit_depth=10, out_legal=True, in_reflection=True)
    • Note: The input value is now reflection according to ACES IDT.
  • colour.models.log_decoding_CanonLog2: (@Nick-Shaw, @kelsolaar)
    • Signature: log_decoding_CanonLog2(clog2_ire, bit_depth=10, in_legal=True, out_reflection=True)
    • Note: The output value is now reflection according to ACES IDT.
  • colour.models.log_encoding_CanonLog3: (@Nick-Shaw, @kelsolaar)
    • Signature: log_encoding_CanonLog3(x, bit_depth=10, out_legal=True, in_reflection=True)
    • Note: The input value is now reflection according to ACES IDT.
  • colour.models.log_decoding_CanonLog3: (@Nick-Shaw, @kelsolaar)
    • Signature: log_decoding_CanonLog3(clog3_ire, bit_depth=10, in_legal=True, out_reflection=True)
    • Note: The output value is now reflection according to ACES IDT.
  • colour.models.eotf_ARIBSTDB67: (@kelsolaar, @Nick-Shaw, @KevinJW)
    • Name: oetf_reverse_ARIBSTDB67
  • colour.models.eotf_BT709: (@kelsolaar, @Nick-Shaw, @KevinJW)
    • Name: oetf_reverse_BT709
  • colour.models.oetf_BT1886: (@kelsolaar, @Nick-Shaw, @KevinJW)
    • Name: eotf_reverse_BT1886
  • colour.models.eotf_sRGB : (@kelsolaar, @Nick-Shaw, @KevinJW)
    • Name: oetf_reverse_sRGB
  • colour.models.ALEXA_WIDE_GAMUT_RGB_COLOURSPACE: (@kelsolaar)
    • Name: ALEXA_WIDE_GAMUT_COLOURSPACE
  • colour.models.NTSC_RGB_COLOURSPACE: (@kelsolaar)
    • Name: NTSC_COLOURSPACE
  • colour.models.PAL_SECAM_RGB_COLOURSPACE: (@kelsolaar)
    • Name: PAL_SECAM_COLOURSPACE
  • colour.models.REC_709_COLOURSPACE: (@kelsolaar, @Nick-Shaw, @KevinJW, @meshula)
    • Name: BT709_COLOURSPACE
  • colour.models.REC_2020_COLOURSPACE: (@kelsolaar, @Nick-Shaw, @KevinJW, @meshula)
    • Name: BT2020_COLOURSPACE
  • colour.models.SMPTE_C_RGB_COLOURSPACE: (@kelsolaar)
    • Name: SMPTE_240M_COLOURSPACE

colour.plotting

  • colour.plotting.CIE_1931_chromaticity_diagram_plot: (@brandondube, @kelsolaar)
    • Name: chromaticity_diagram_plot_CIE1931
    • Signature: `chromaticity_diagram_plot_CIE1931(cmfs='CIE 1931 2 Degree Standard Observer', show_diagram_colours=True, use_cached_diagram_colours=True, **kwargs)
  • colour.plotting.CIE_1960_UCS_chromaticity_diagram_plot: (@brandondube, @kelsolaar)
    • Name: chromaticity_diagram_plot_CIE1960UCS
    • Signature: `chromaticity_diagram_plot_CIE1960UCS(cmfs='CIE 1931 2 Degree Standard Observer', show_diagram_colours=True, use_cached_diagram_colours=True, **kwargs)
  • colour.plotting.CIE_1976_UCS_chromaticity_diagram_plot: (@brandondube, @kelsolaar)
    • Name: chromaticity_diagram_plot_CIE1976UCS
    • Signature: `chromaticity_diagram_plot_CIE1976UCS(cmfs='CIE 1931 2 Degree Standard Observer', show_diagram_colours=True, use_cached_diagram_colours=True, **kwargs)
  • colour.plotting.spds_CIE_1931_chromaticity_diagram_plot: (@kelsolaar)
    • Name: spds_chromaticity_diagram_plot_CIE1931
    • Signature: spds_chromaticity_diagram_plot_CIE1931(spds, cmfs='CIE 1931 2 Degree Standard Observer', annotate=True, chromaticity_diagram_callable_CIE1931=(chromaticity_diagram_plot_CIE1931), **kwargs)
  • colour.plotting.spds_CIE_1960_UCS_chromaticity_diagram_plot: (@kelsolaar)
    • Name: spds_chromaticity_diagram_plot_CIE1960UCS
    • Signature: spds_chromaticity_diagram_plot_CIE1960UCS(spds, cmfs='CIE 1931 2 Degree Standard Observer', annotate=True, chromaticity_diagram_callable_CIE1960UCS=(chromaticity_diagram_plot_CIE1960UCS), **kwargs)
  • colour.plotting.spds_CIE_1976_UCS_chromaticity_diagram_plot: (@kelsolaar)
    • Name: spds_chromaticity_diagram_plot_CIE1976UCS
    • Signature: spds_chromaticity_diagram_plot_CIE1976UCS(spds, cmfs='CIE 1931 2 Degree Standard Observer', annotate=True, chromaticity_diagram_callable_CIE1976UCS=(chromaticity_diagram_plot_CIE1976UCS), **kwargs)
  • colour.plotting.RGB_colourspaces_CIE_1931_chromaticity_diagram_plot: (@kelsolaar)
    • Name: RGB_colourspaces_chromaticity_diagram_plot_CIE1931
    • Signature: RGB_colourspaces_chromaticity_diagram_plot_CIE1931(colourspaces=None, cmfs='CIE 1931 2 Degree Standard Observer', chromaticity_diagram_callable_CIE1931=(chromaticity_diagram_plot_CIE1931), **kwargs)
  • colour.plotting.RGB_colourspaces_CIE_1960_UCS_chromaticity_diagram_plot: (@kelsolaar)
    • Name: RGB_colourspaces_chromaticity_diagram_plot_CIE1960UCS
    • Signature: RGB_colourspaces_chromaticity_diagram_plot_CIE1960UCS(colourspaces=None, cmfs='CIE 1931 2 Degree Standard Observer', chromaticity_diagram_callable_CIE1960UCS=(chromaticity_diagram_plot_CIE1960UCS), **kwargs)
  • colour.plotting.RGB_colourspaces_CIE_1976_UCS_chromaticity_diagram_plot: (@kelsolaar)
    • Name: RGB_colourspaces_chromaticity_diagram_plot_CIE1976UCS
    • Signature: RGB_colourspaces_chromaticity_diagram_plot_CIE1976UCS(colourspaces=None, cmfs='CIE 1931 2 Degree Standard Observer', chromaticity_diagram_callable_CIE1976UCS=(chromaticity_diagram_plot_CIE1976UCS), **kwargs)
  • colour.plotting.RGB_chromaticity_coordinates_CIE_1931_chromaticity_diagram_plot: (@kelsolaar)
    • Name: RGB_chromaticity_coordinates_chromaticity_diagram_plot_CIE1931
    • Signature: RGB_chromaticity_coordinates_chromaticity_diagram_plot_CIE1931(RGB, colourspace='sRGB', chromaticity_diagram_callable_CIE1931=(RGB_colourspaces_CIE_1931_chromaticity_diagram_plot), **kwargs)
  • colour.plotting.RGB_chromaticity_coordinates_CIE_1960_UCS_chromaticity_diagram_plot: (@kelsolaar)
    • Name: RGB_chromaticity_coordinates_chromaticity_diagram_plot_CIE1960UCS
    • Signature: RGB_chromaticity_coordinates_chromaticity_diagram_plot_CIE1960UCS(RGB, colourspace='sRGB', chromaticity_diagram_callable_CIE1960UCS=(RGB_colourspaces_CIE_1960_UCS_chromaticity_diagram_plot), **kwargs)
  • colour.plotting.RGB_chromaticity_coordinates_CIE_1976_UCS_chromaticity_diagram_plot: (@kelsolaar)
    • Name: RGB_chromaticity_coordinates_chromaticity_diagram_plot_CIE1976UCS
    • Signature: RGB_chromaticity_coordinates_chromaticity_diagram_plot_CIE1976UCS(RGB, colourspace='sRGB', chromaticity_diagram_callable_CIE1976UCS=(RGB_colourspaces_CIE_1976_UCS_chromaticity_diagram_plot), **kwargs)
  • colour.plotting.planckian_locus_CIE_1931_chromaticity_diagram_plot: (@kelsolaar)
    • Name: planckian_locus_chromaticity_diagram_plot_CIE1931
    • Signature: planckian_locus_chromaticity_diagram_plot_CIE1931(illuminants=None, chromaticity_diagram_callable_CIE1931=(chromaticity_diagram_plot_CIE1931), **kwargs)
  • colour.plotting.planckian_locus_CIE_1960_UCS_chromaticity_diagram_plot: (@kelsolaar)
    • Name: planckian_locus_chromaticity_diagram_plot_CIE1960UCS
    • Signature: planckian_locus_chromaticity_diagram_plot_CIE1960UCS(illuminants=None, chromaticity_diagram_callable_CIE1960UCS=(chromaticity_diagram_plot_CIE1960UCS), **kwargs)

colour.utilities

  • colour.ArbitraryPrecisionMapping: (@kelsolaar)
    • Remove

v0.3.3

6 years ago

Colour 0.3.3 - Alpha Milestone

Features

colour.adaptation

  • Implement support for various new chromatic adaptation models: (@kelsolaar, @MichaelMauderer)
    • CMCCAT2000: colour.chromatic_adaptation_CMCCAT2000
    • CIE 1994: colour.chromatic_adaptation_CIE1994
    • Fairchild (1990): colour.chromatic_adaptation_Fairchild1990
  • Implement new convenient Von Kries chromatic adaptation model wrapper definition: colour.chromatic_adaptation_VonKries. It allows adaptation of a given CIE XYZ colourspace matrix from given source to target viewing conditions CIE XYZ colourspace whitepoint matrices. (@kelsolaar)
  • Implement new chromatic adaptation transforms: (@kelsolaar)
    • colour.SHARP_CAT
    • colour.CMCCAT2000_CAT
    • colour.CMCCAT97_CAT
    • colour.CAT02_BRILL_CAT
    • colour.BS_CAT
    • colour.BS_PC_CAT

colour.algebra

  • Implement convenient random triplet generator definition: colour.random_triplet_generator. (@kelsolaar, @MichaelMauderer)

colour.colorimetry

  • Implement new methods to exponentiate spectral power distributions and tri-spectral power distributions: colour.SpectralPowerDistribution.__pow__ and colour.TriSpectralPowerDistribution.__pow__. (@canavandl)
  • Implement new properties for Latex title in spectral power distributions and tri-spectral power distributions: colour.SpectralPowerDistribution.title and colour.TriSpectralPowerDistribution.title. (@kelsolaar)
  • Add new light sources: (@kelsolaar)
    • Natural
    • Philips TL-84
    • T8 Luxline Plus White
    • SA
    • SC
    • T8 Polylux 3000
    • T8 Polylux 4000
    • Thorn Kolor-rite
    • Cool White FL
    • Daylight FL
    • HPS
    • Incandescent
    • LPS
    • Mercury
    • Metal Halide
    • Neodimium Incandescent
    • Super HPS
    • Triphosphor FL
    • 3-LED-1 (457/540/605)
    • 3-LED-2 (473/545/616)
    • 3-LED-2 Yellow
    • 3-LED-3 (465/546/614)
    • 3-LED-4 (455/547/623)
    • 4-LED No Yellow
    • 4-LED Yellow
    • 4-LED-1 (461/526/576/624)
    • 4-LED-2 (447/512/573/627)
    • Luxeon WW 2880
    • PHOS-1
    • PHOS-2
    • PHOS-3
    • PHOS-4
    • Phosphor LED YAG
    • 60 A/W (Soft White)
    • C100S54 (HPS)
    • C100S54C (HPS)
    • F32T8/TL830 (Triphosphor)
    • F32T8/TL835 (Triphosphor)
    • F32T8/TL841 (Triphosphor)
    • F32T8/TL850 (Triphosphor)
    • F32T8/TL865 /PLUS (Triphosphor)
    • F34/CW/RS/EW (Cool White FL)
    • F34T12/LW/RS /EW
    • F34T12WW/RS /EW (Warm White FL)
    • F40/C50 (Broadband FL)
    • F40/C75 (Broadband FL)
    • F40/CWX (Broadband FL)
    • F40/DX (Broadband FL)
    • F40/DXTP (Delux FL)
    • F40/N (Natural FL)
    • H38HT-100 (Mercury)
    • H38JA-100/DX (Mercury DX)
    • MHC100/U/MP /3K
    • MHC100/U/MP /4K
    • SDW-T 100W/LV (Super HPS)
  • Implement whiteness computation support: (@kelsolaar)
    • colour.whiteness_Berger1959
    • colour.whiteness_Taube1960
    • colour.whiteness_Stensby1968
    • colour.whiteness_ASTM313
    • colour.whiteness_Ganz1979
    • colour.whiteness_CIE2004
  • Implement Luminous Flux computation support: colour.luminous_flux. (@canavandl, @MichaelMauderer, @kelsolaar)

colour.corresponding

  • Add Breneman (1987) corresponding chromaticities dataset. (@kelsolaar)
  • Implement new definitions to compute corresponding chromaticities prediction using Breneman (1987) dataset: (@kelsolaar)
    • colour.corresponding_chromaticities_prediction_VonKries
    • colour.corresponding_chromaticities_prediction_CIE1994
    • colour.corresponding_chromaticities_prediction_CMCCAT2000
    • colour.corresponding_chromaticities_prediction_Fairchild1990

colour.io

  • Implement support for IES TM-27-14 - IES Standard Format for the Electronic Transfer of Spectral Data paper: colour.IES_TM2714_Spd (@kelsolaar)
  • Implement support for X-Rite ProfileMaker 5 spectral data files reading: colour.read_spds_from_xrite_file (@kelsolaar)

colour.models

  • Add remaining relevant Pointer's Gamut data. (@kelsolaar)
  • Implement convenient colour.sRGB_to_XYZ definition. (@kelsolaar)
  • Implement support for IPT colourspace: colour.XYZ_to_IPT, colour.IPT_to_XYZ, colour.IPT_hue_angle. (@MichaelMauderer)

colour.plotting

  • Implement new definition to plot Colour Quality Scale: colour.plotting.colour_quality_scale_bars_plot. (@kelsolaar)
  • Implement new definition to plot corresponding chromaticities prediction: colour.plotting.corresponding_chromaticities_prediction_plot. (@kelsolaar)
  • Implement new definition to define figures size and aspect ratio: colour.plotting.canvas. (@kelsolaar)

colour.quality

  • Implement Colour Quality Scale computation. (@canavandl, @kelsolaar)

colour.recovery

  • Implement support for reflectance recovery using Smits (1999) method: colour.RGB_to_spectral_Smits1999. (@kelsolaar)

colour.utilities

  • Implement convenient colour.utilities.batch definition yielding batches from given iterable. (@kelsolaar)

Fixes

colour.appearance

  • Precision issue in colour.XYZ_to_LLAB definition because of rounded colour.appearance.llab.LLAB_RGB_TO_XYZ_MATRIX. (@MichaelMauderer)

colour.colorimetry

  • colour.SpectralShape.range method was returning an extra number when used with some non uniformly spaced variables. (@kelsolaar)

colour.models

  • colour.ALEXA_WIDE_GAMUT_RGB_TRANSFER_FUNCTION was incorrectly computed (@kelsolaar)
  • colour.PROPHOTO_RGB_INVERSE_TRANSFER_FUNCTION was incorrectly computed (@sagland, @kelsolaar)
  • colour.REC_709_INVERSE_TRANSFER_FUNCTION was incorrectly computed (@sagland, @kelsolaar)
  • colour.REC_2020_INVERSE_TRANSFER_FUNCTION was incorrectly computed (@sagland, @kelsolaar)
  • colour.sRGB_INVERSE_TRANSFER_FUNCTION was incorrectly computed (@sagland, @kelsolaar)

Changes

colour.algebra

  • colour.to_ndarray: (@kelsolaar)
    • Name: colour.as_array
    • Signature: as_array(x, shape=None, data_type=np.float_)

colour.adaptation

  • colour.chromatic_adaptation_matrix: (@kelsolaar)
    • Name: colour.chromatic_adaptation_matrix_VonKries
    • Signature: chromatic_adaptation_matrix_VonKries(XYZ_w, XYZ_wr, transform='CAT02')

colour.colorimetry

  • colour.bandpass_correction_stearns1988: (@kelsolaar)
    • Name: colour.bandpass_correction_Stearns1988
  • colour.lightness_glasser1958: (@kelsolaar)
    • Name: colour.lightness_Glasser1958
  • colour.lightness_wyszecki1964: (@kelsolaar)
    • Name: colour.lightness_Wyszecki1963
  • colour.lightness_1976: (@kelsolaar)
    • Signature: colour.lightness_1976(Y, Y_n=100)
  • colour.luminance_ASTM_D1535_08: (@kelsolaar)
    • Name: colour.luminance_ASTMD153508
  • colour.luminance_newhall1943: (@kelsolaar)
    • Name: colour.luminance_Newhall1943
  • colour.luminance_1976: (@kelsolaar)
    • Signature: colour.luminance_1976(Lstar, Y_n=100)
  • colour.SpectralPowerDistribution: (@kelsolaar)
    • Signature: colour.SpectralPowerDistribution(self, name, data, title=None)
  • colour.TriSpectralPowerDistribution: (@kelsolaar)
    • Signature: colour.TriSpectralPowerDistribution(self, name, data, mapping, title=None, labels=None)

colour.difference

  • colour.delta_E_CIE_1976: (@kelsolaar)
    • Name: colour.delta_E_CIE1976
  • colour.delta_E_CIE_1994: (@kelsolaar)
    • Name: colour.delta_E_CIE1994
  • colour.delta_E_CIE_2000: (@kelsolaar)
    • Name: colour.delta_E_CIE2000

colour.models

  • colour.RGB_Colourspace (@kelsolaar)
    • colour.RGB_Colourspace.to_RGB:
      • Name: colour.XYZ_to_RGB_matrix
    • colour.RGB_Colourspace.to_XYZ:
      • Name: colour.RGB_to_XYZ_matrix
  • colour.XYZ_to_RGB: (@kelsolaar)
    • Signature: XYZ_to_RGB(XYZ, illuminant_XYZ, illuminant_RGB, XYZ_to_RGB_matrix, chromatic_adaptation_transform, transfer_function)
  • colour.RGB_to_XYZ: (@kelsolaar)
    • Signature: RGB_to_XYZ(RGB, illuminant_RGB, illuminant_XYZ, RGB_to_XYZ_matrix, chromatic_adaptation_transform, inverse_transfer_function)
  • colour.RGB_to_RGB: (@kelsolaar)
    • Signature: RGB_to_RGB(RGB, input_colourspace, output_colourspace, chromatic_adaptation_transform)
  • colour.XYZ_to_sRGB: (@kelsolaar)
    • Signature: XYZ_to_sRGB(XYZ, illuminant, chromatic_adaptation_transform, transfer_function)
  • colour.models.deprecated.RGB_to_HEX: (@kelsolaar)
    • Location: colour.notation.triplet.RGB_to_HEX
  • colour.models.deprecated.HEX_to_RGB: (@kelsolaar)
    • Location: colour.notation.triplet.HEX_to_RGB
  • colour.POINTER_GAMUT_DATA: (@kelsolaar)
    • Name: colour.POINTER_GAMUT_BOUNDARIES

colour.notation

  • colour.munsell_value_ASTM_D1535_08: (@kelsolaar)
    • Name: colour.munsell_value_ASTMD153508
  • colour.munsell_value_ladd1955: (@kelsolaar)
    • Name: colour.munsell_value_Ladd1955
  • colour.munsell_value_mccamy1987: (@kelsolaar)
    • Name: colour.munsell_value_McCamy1987
  • colour.munsell_value_moon1943: (@kelsolaar)
    • Name: colour.munsell_value_Moon1943
  • colour.munsell_value_munsell1933: (@kelsolaar)
    • Name: colour.munsell_value_Munsell1933
  • colour.munsell_value_priest1920: (@kelsolaar)
    • Name: colour.munsell_value_Priest1920
  • colour.munsell_value_saunderson1944: (@kelsolaar)
    • Name: colour.munsell_value_Saunderson1944

colour.plotting

  • colour.plotting.figure_size: (@kelsolaar)
    • Remove
  • colour.plotting.aspect: (@kelsolaar)
    • Name: colour.plotting.decorate
  • colour.plotting.bounding_box: (@kelsolaar)
    • Name: colour.plotting.boundaries

colour.quality

  • colour.colour_rendering_index (@kelsolaar)
    • Signature: colour.colour_rendering_index(spd_test, additional_data=False)
    • Output: Specifying additional_data=True argument now outputs of a colour.CRI_Specification class instance.

colour.temperature

  • colour.CCT_to_uv_ohno2013: (@kelsolaar)
    • Name: CCT_to_uv_Ohno2013
    • Signature: CCT_to_uv_Ohno2013(CCT, D_uv=0, cmfs=STANDARD_OBSERVERS_CMFS.get('CIE 1931 2 Degree Standard Observer'))
  • colour.CCT_to_uv_robertson1968: (@kelsolaar)
    • Name: CCT_to_uv_Robertson1968
    • Signature: CCT_to_uv_Robertson1968(CCT, D_uv=0)
  • colour.CCT_to_xy_illuminant_D: (@kelsolaar)
    • Name: CCT_to_xy_CIE_D
  • colour.CCT_to_xy_kang2002: (@kelsolaar)
    • Name: CCT_to_xy_Kang2002
  • colour.uv_to_CCT_ohno2013: (@kelsolaar)
    • Name: uv_to_CCT_Ohno2013
  • colour.uv_to_CCT_robertson1968: (@kelsolaar)
    • Name: uv_to_CCT_Robertson1968
  • colour.xy_to_CCT_hernandez1999: (@kelsolaar)
    • Name: xy_to_CCT_Hernandez1999
  • colour.xy_to_CCT_mccamy1992: (@kelsolaar)
    • Name: xy_to_CCT_McCamy1992

Others

  • Update bibliography and citations to use APA formatting.
  • colour.plotting dependencies are now non-required and can be installed by issuing:
pip install -e .[plotting]

v0.3.7

6 years ago

Colour 0.3.7 - Alpha Milestone

Features

API Reference

Distribution

  • Python 2.7 and 3.5 wheels are now available on Pypi.

colour.models

  • Implement colour.chromatically_adapted_primaries definition performing chromatic adaptation of a given RGB colourspace primaries. (@kelsolaar)
  • colour.REC_709_COLOURSPACE.EOCF definition will issue a warning when used. (@KevinJW, @kelsolaar)

colour.plotting

  • colour.plotting.image_plot definition can now plot single channel images. (@kelsolaar)

colour.utilities

  • Implement colour.ArbitraryPrecisionMapping class based providing support for floating point keys by rounding them at a specific decimals count. (@kelsolaar)

Fixes

colour.colorimetry.dataset

  • Add missing F11 illuminant chromaticity coordinates for CIE 1931 2 Degree Standard Observer. (@henczati, @kelsolaar)

colour.models.dataset

  • ACEScg colourspace was using the incorrect transfer function. (@kelsolaar)
  • ACESproxy colourspace was using the incorrect primaries. (@Nick-Shaw, @kelsolaar)
  • RED colourspaces were using the incorrect whitepoint. (@Nick-Shaw, @kelsolaar)

Changes

colour.algebra

  • colour.Extrapolator1d: (@kelsolaar)
    • Name: colour.Extrapolator

colour.models

  • colour.RGB_Colourspace: (@kelsolaar)
    • Methods:
      • transfer_function:
        • Name: OECF (Opto-electronic conversion function)
      • inverse_transfer_function:
        • Name: EOCF (Electro-optical conversion function)
  • colour.XYZ_to_RGB: (@kelsolaar)
    • Signature: colour.XYZ_to_RGB(XYZ, illuminant_XYZ, illuminant_RGB, XYZ_to_RGB_matrix, chromatic_adaptation_transform='CAT02', OECF=None)
  • colour.RGB_to_XYZ: (@kelsolaar)
    • Signature: colour.RGB_to_XYZ(RGB, illuminant_RGB, illuminant_XYZ, RGB_to_XYZ_matrix, chromatic_adaptation_transform='CAT02', EOCF=None)
  • colour.XYZ_to_sRGB: (@kelsolaar)
    • Signature: colour.XYZ_to_sRGB(XYZ, illuminant=RGB_COLOURSPACES.get('sRGB').whitepoint, chromatic_adaptation_transform='CAT02', apply_OECF=True)
  • colour.sRGB_to_XYZ: (@kelsolaar)
    • Signature: colour.sRGB_to_XYZ(RGB, illuminant=RGB_COLOURSPACES.get('sRGB').whitepoint, chromatic_adaptation_method='CAT02', apply_EOCF=True)

colour.plotting

  • colour.plotting.single_transfer_function_plot: (@kelsolaar)
    • Name: colour.plotting.single_conversion_function_plot
    • Signature: colour.plotting.single_conversion_function_plot(colourspace='Rec. 709', EOCF=False, **kwargs)
  • colour.plotting.multi_transfer_function_plot: (@kelsolaar)
    • Name: colour.plotting.multi_conversion_function_plot
    • Signature: colour.plotting.multi_conversion_function_plot(colourspaces, EOCF=False, **kwargs)
  • colour.plotting.colour_parameter: (@kelsolaar)
    • Remove
    • Note: colour.plotting.ColourParameter class should be used instead.

v0.3.10

6 years ago

Colour 0.3.10 - Alpha Milestone

Colour is now formatted using Yapf, the current configuration is subject to change but this will help contributors not using PyCharm to use their favourite editor while having the capability to format the contributed code to our Colour standard.

Features

colour.biochemistry

  • Implement support for Michaelis–Menten kinetics, a model of enzyme kinetics with colour.reaction_rate_MichealisMenten and colour.substrate_concentration_MichealisMenten definitions. (@kelsolaar)

colour.colorimetry

  • Implement support for yellowness computation with colour.yellowness_ASTMD1925 and colour.yellowness_ASTME313 definitions. (@kelsolaar)
  • Implement support for Fairchild and Wyble (2010) lightness computation with colour.lightness_Fairchild2010 definition. (@kelsolaar)
  • Implement support for Fairchild and Wyble (2010) luminance computation with colour.luminance_Fairchild2010 definition. (@kelsolaar)

colour.models

  • Implement support for ARIB STD-B67 (Hybrid Log-Gamma) EOTF and OETF with colour.eotf_ARIBSTDB67 and colour.oetf_ARIBSTDB67 definitions. (@kelsolaar)
  • Implement support for DICOM - Grayscale Standard Display Function EOTF and OETF with colour.eotf_DICOMGSDF and colour.oetf_DICOMGSDF definitions. (@kelsolaar)
  • Implement support for Protune Native colourspace with colour.PROTUNE_NATIVE_COLOURSPACE colourspace class. (@kelsolaar)
  • Implement support for Protune log curves with colour.log_encoding_Protune and colour.log_decoding_Protune definitions. (@kelsolaar)
  • Implement support for Prismatic colourspace with colour.RGB_to_Prismatic and colour.Prismatic_to_RGB definitions. (@kelsolaar)
  • Implement support for hdr-CIELab and hdr-IPT colourspaces with colour.XYZ_to_hdr_CIELab, colour.hdr_CIELab_to_XYZ, colour.XYZ_to_hdr_IPT and colour.hdr_IPT_to_XYZ definitions. (@kelsolaar)

colour.recovery

  • Implement support for Meng et al. reflectance recovery method with colour.XYZ_to_spectral_Meng2015 definition. (@kelsolaar)

colour.utilities

  • Implement colour.as_namedtuple definition that attempts to convert given array_like, Mapping or Numpy structured array to namedtuple. (@kelsolaar)

Fixes

colour.appearance

  • colour.XYZ_to_CIECAM02 and colour.CIECAM02_to_XYZ definitions handles negative numbers gracefully as per CIECAM02 and Its Recent Developments (@crowsonkb)

colour.colorimetry.

  • colour.TriSpectralPowerDistribution.items method was broken. (@kelsolaar)

colour.models

  • colour.eotf_BT1886 and colour.oetf_BT1886 definitions default arguments L_B and L_W had their default values changed from respectively 64 and 940 to 0 and 1. (@kelsolaar, @Nick-Shaw)

Changes

colour.appearance

  • colour.CIECAM02_to_XYZ: (@kelsolaar, @crowsonkb)
    • Signature: CIECAM02_to_XYZ(CIECAM02_specification, XYZ_w, L_A, Y_b, surround=CIECAM02_VIEWING_CONDITIONS['Average'], discount_illuminant=False)

colour.colorimetry

  • colour.whiteness_ASTM313: (@kelsolaar)
    • Name: whiteness_ASTME313

colour.models

  • colour.eotf_BT1886: (@kelsolaar, @Nick-Shaw)
    • Signature: eotf_BT1886(V, L_B=0, L_W=1)
  • colour.oetf_BT1886: (@kelsolaar, @Nick-Shaw)
    • Signature: oetf_BT1886(L, L_B=0, L_W=1)
  • colour.gamma_function: (@kelsolaar)
    • Name: function_gamma
  • colour.linear_function: (@kelsolaar)
    • Name: function_linear

v0.3.9

7 years ago

Colour 0.3.9 - Alpha Milestone

Features

colour.characterisation

  • Add camera spectral sensitivities for Nikon 5100 and Sigma SDMerill measured by the National Physical Laboratory and available from colour.CAMERAS_RGB_SPECTRAL_SENSITIVITIES attribute. (@kelsolaar)

colour.colorimetry

  • colour.SpectralPowerDistribution and colour.TriSpectralPowerDistribution classes have been optimised and are now 6.5 times faster on usual computations. (@kelsolaar)

colour.difference

  • Implement support for Luo et al. (2006) CIECAM02 based uniform colourspaces colour difference with colour.delta_E_CAM02LCD, colour.delta_E_CAM02SCD, and colour.delta_E_CAM02UCS definitions. (@kelsolaar)

colour.plotting

  • Implement colour.plotting.colour_plotting_defaults definition that installs Colour default plotting parameters, this implies that Colour will now not override Matplotlib rc parameters on import. (@kelsolaar)

colour.quality

  • colour.colour_quality_scale definition has been optimised and is now 10.5 times faster, its return value is minorly altered. (@kelsolaar)
  • colour.colour_rendering_index definition has been optimised and is now 13.1 times faster, its return value is minorly altered. (@kelsolaar)

colour.models

  • Implement support for Luo et al. (2006) CIECAM02 based uniform colourspaces with colour.JMh_CIECAM02_to_CAM02LCD, colour.CAM02LCD_to_JMh_CIECAM02, colour.JMh_CIECAM02_to_CAM02SCD, colour.CAM02SCD_to_JMh_CIECAM02, colour.JMh_CIECAM02_to_CAM02UCS and colour.CAM02UCS_to_JMh_CIECAM02 definitions. (@kelsolaar)
  • Implement support for Dolby ICTCP colourspace with colour.RGB_to_ICTCP and colour.ICTCP_to_RGB definitions. (@kelsolaar)
  • Implement support for two sets of transformations matrices in colour.RGB_Colourspace class whose purpose is to support both literature defined dataset and accurate computations enabling transformations without loss of precision. colour.RGB_Colourspace.use_derived_RGB_to_XYZ_matrix and colour.RGB_Colourspace.use_derived_XYZ_to_RGB_matrix attributes and the colour.RGB_Colourspace.use_derived_transformation_matrices method have been introduced to alter the behaviour of the class on a per user need basis. (@kelsolaar, @KevinJW, @Nick-Shaw, @MichaelMauderer)
  • Implement support for Canon Log 2 and Canon Log 3 log curves with colour.log_encoding_CanonLog2, colour.log_decoding_CanonLog2, colour.log_encoding_CanonLog3 and colour.log_decoding_CanonLog3 definitions. (@kelsolaar)
  • Implement support for RedWideGamut RGB colourspace and Log3G10, Log3G12 log curves with respectively colour.RED_WIDE_GAMUT_RGB colourspace class and colour.log_encoding_Log3G10, colour.log_decoding_Log3G10, colour.log_encoding_Log3G12, colour.log_decoding_Log3G12 definitions. (@Nick-Shaw)
  • Implement support for ACEScct colourspace and ACEScct log curves with respectively colour.ACES_CCT_COLOURSPACE colourspace class and colour.log_encoding_ACEScct, colour.log_encoding_ACEScct definitions. (@scooperxyz)
  • Implement colour.RGB_to_RGB_matrix definition computing the matrix converting from given input RGB colourspace to output RGB colourspace. (@kelsolaar, @KevinJW)

colour.temperature

  • Implement support for Krystek (1985) correlated colour temperature to chromaticity coordinates uv computation with colour.CCT_to_uv_Krystek1985 definition. (@kelsolaar)
  • colour.uv_to_CCT_Ohno2013 definition has been optimised and is now 15.7 times faster. (@kelsolaar)
  • colour.CCT_to_uv_Ohno2013 definition has been optimised and is now ? times faster. (@kelsolaar)

colour.utilities

  • Implement colour.linear_conversion definition performing a simple linear conversion of given array between the old and new range. (@kelsolaar)

Changes

colour.algebra

  • colour.cartesian_to_cylindrical: (@kelsolaar)
    • Returns: Cylindrical coordinates array (radial distance ρ, azimuth φ, and height z)
  • colour.cylindrical_to_cartesian: (@kelsolaar)
    • Signature: cylindrical_to_cartesian(a), cylindrical coordinates array (radial distance ρ, azimuth φ, and height z)

colour.characterisation

  • colour.characterisation.dataset.colour_checkers.chromaticity_coordinates.ColourChecker_Specification: (@kelsolaar)
    • Signature: ColourChecker_Specification('index', 'name', 'xyY')

colour.colorimetry

  • colour.DEFAULT_SPECTRAL_SHAPE: (@kelsolaar)
    • Value: SpectralShape(360, 780, 1)

colour.models

  • colour.log_encoding_ACESproxy: (@kelsolaar)
    • Signature: log_encoding_ACESproxy(lin_AP1, bit_depth='10 Bit')
  • colour.log_encoding_ACEScc: (@kelsolaar)
    • Signature: log_encoding_ACEScc(lin_AP1)
  • colour.oetf_ROMMRGB: (@kelsolaar)
    • Signature: oetf_ROMMRGB(X, I_max=255)
  • colour.eotf_ROMMRGB: (@kelsolaar)
    • Signature: eotf_ROMMRGB(X_p, I_max=255)
  • The following RGB colourspaces XYZ to RGB matrix have been replaced by their specified one if existing: (@kelsolaar)
    • ACES Primaries 0
    • Adobe RGB (1998)
    • ALEXA Wide Gamut RGB
    • CIE RGB
    • ROMM RGB
    • sRGB
    • V-Gamut
  • colour.RGB_to_RGB: (@kelsolaar, @scooperxyz)
    • Signature: RGB_to_RGB(RGB, input_colourspace, output_colourspace, chromatic_adaptation_transform='CAT02', apply_decoding_cctf=False, apply_encoding_cctf=False)

colour.plotting

  • colour.plotting.multi_colour_plot: (@kelsolaar)
    • Signature: multi_colour_plot(colour_parameters, width=1, height=1, spacing=0, across=3, text_display=True, text_size='large', text_offset=0.075, background_colour=(1.0, 1.0, 1.0), **kwargs)

colour.temperature

  • colour.CCT_to_uv: (@kelsolaar)
    • Signature: CCT_to_uv(CCT, method='Ohno 2013', **kwargs)

v0.3.8

7 years ago

Colour 0.3.8 - Alpha Milestone

This release introduces important backward incompatible changes on various spectral computations, illuminants chromaticity coordinates and RGB colourspace model related objects, please carefully refer to the Changes section.

A Jupyter Notebook is available to illustrate the expected computational differences: they should remain orders of magnitude under visual discrimination threshold however they will likely create computational discrepancies.

With Colour 0.3.8, SciPy is now a requirement.

@MichaelMauderer and I would like to thanks all the contributors for that release whether they contribute to the code or participate in discussions.

Features

colour.algebra

  • Implement colour.lagrange_coefficients definition computing Lagrange Coefficients at given point for given degree. (@kelsolaar)
  • Implement colour.normalise_vector definition performing vector normalisation. (@kelsolaar)
  • Implement colour.euclidean_distance definition computing the euclidean distance between two vector arrays. (@kelsolaar)
  • Implement colour.intersect_line_segments definition performing line segment intersections computations. (@kelsolaar)

colour.characterisation

  • Implement colour.RGB_DisplayPrimaries class providing support for RGB displays primaries tri-spectral power distributions. (@kelsolaar)

colour.characterisation.dataset

  • Add Apple Studio Display RGB display primaries tri-spectral power distributions.(@kelsolaar)
  • Add Typical CRT Brainard 1997 RGB display primaries tri-spectral power distributions.(@kelsolaar)

colour.colorimetry

  • Implement colour.CIE_standard_illuminant_A_function definition computing CIE Standard Illuminant A value at given wavelength range. (@kelsolaar)
  • Implement colour.SpectralShape.boundaries method returning the boundaries start and end values of given shape. (@kelsolaar)
  • Implement colour.SpectralPowerDistribution.trim_wavelengths and colour.TriSpectralPowerDistribution.trim_wavelengths methods trimming their respective classes wavelength range to given shape. (@kelsolaar, @MichaelMauderer, @Ron024)
  • Implement colour.dominant_wavelength definition computing the dominant wavelength of a given colour stimulus xy chromaticity coordinates. (@kelsolaar)
  • Implement colour.complementary_wavelength definition computing the complementary wavelength of a given colour stimulus xy chromaticity coordinates. (@kelsolaar)
  • Implement colour.excitation_purity definition computing the excitation purity of a given colour stimulus xy chromaticity coordinates. (@kelsolaar)
  • Implement colour.colorimetric_purity definition computing the colorimetric purity of a given colour stimulus xy chromaticity coordinates. (@kelsolaar)
  • Implement colour.tristimulus_weighting_factors_ASTME202211 definition computing tristimulus weighting factors tables using practise ASTM E2022–11 method. (@kelsolaar, @MichaelMauderer )
  • Implement colour.spectral_to_XYZ_integration definition converting given spectral power distribution to CIE XYZ tristimulus values using given colour matching functions and illuminant accordingly to classical integration method. (@kelsolaar)
  • Implement colour.spectral_to_XYZ_tristimulus_weighting_factors_ASTME30815 definition converting given spectral power distribution to CIE XYZ tristimulus values using given colour matching functions and illuminant accordingly to practise ASTM E308–15 method. (@kelsolaar, @MichaelMauderer )
  • Implement colour.spectral_to_XYZ_ASTME30815 definition converting given spectral power distribution to CIE XYZ tristimulus values accordingly to practise ASTM E308–15 method. (@kelsolaar, @MichaelMauderer )
  • Implement colour.luminous_efficiency definition computing Luminous Efficiency of given spectral power distribution. (@kelsolaar, @canavandl)

colour.colorimetry.dataset

  • Add Smith & Pokorny 1975 Normal Trichromats colour matching functions. (@kelsolaar)
  • Add various HunterLab illuminants data. Please refer to the colour.colorimetry.dataset.illuminants.hunterlab documentation references for links to more information. (@kelsolaar, @Ron024)

colour.corresponding

  • Implement colour.corresponding_chromaticities_prediction generic corresponding chromaticities prediction definition. (@kelsolaar)

colour.models

  • Implement support for Hunter L,a,b and Hunter Rd,a,b colour scales with colour.XYZ_to_Hunter_Lab, colour.Hunter_Lab_to_XYZ and colour.XYZ_to_Hunter_Rdab definitions. (@kelsolaar, @Ron024)
  • Implement support for YCbCr and YcCbcCrc colour encodings with colour.RGB_to_YCbCr, colour.YCbCr_to_RGB, colour.RGB_to_YcCbcCrc and colour.YcCbcCrc_to_RGB definitions. (@Nick-Shaw, @KelSolaar, @KevinJW)
  • Implement support for BT 1886 EOTF and OETF with colour.eotf_BT1886 and colour.eotf_BT1886 definitions. (@kelsolaar)
  • Implement support for ST 2084 EOTF and OETF with colour.eotf_ST2084 and colour.oetf_ST2084 definitions. (@kelsolaar)
  • Implement explicit support for REDLog log encoding curve with colour.log_encoding_REDLog and colour.log_decoding_REDLog definitions. (@Nick-Shaw, @KelSolaar)
  • Implement support for ACESproxy log encoding curve with colour.log_encoding_ACESproxy and colour.log_decoding_ACESproxy definitions. (@KelSolaar)
  • Implement complete support for RIMM / ROMM / ERIMM encodings with colour.oetf_ROMMRGB, colour.eotf_ROMMRGB, colour.oetf_RIMMRGB, colour.eotf_RIMMRGB, colour.log_encoding_ERIMMRGB and colour.log_decoding_ERIMMRGB definitions and colour.ROMM_RGB_COLOURSPACE, colour.RIMM_RGB_COLOURSPACE, colour.ERIMM_RGB_COLOURSPACE and colour.PROPHOTO_RGB_COLOURSPACE classes. (@KelSolaar)
  • Implement support for generic gamma encoding / decoding function with colour.gamma_function definition. (@KelSolaar)
  • Implement support for generic linear encoding / decoding function with colour.linear_function definition. (@KelSolaar)
  • Implement colour.oetf and colour.eotf definitions and colour.OETFS and colour.EOTFS attributes providing single point access to supported OETFs and EOTFs. (@KelSolaar)

colour.utilities

  • Implement colour.centroid definition computing array centroid indexes.
  • Implement colour.orient definition performing array rotation, flip and flop.
  • Implement colour.filter_kwargs definition filtering incompatible keyword arguments with given function signature.
  • Implement colour.filter_warnings definition filtering API warnings.

Fixes

colour.colorimetry

  • colour.luminous_efficiency definition was incorrectly returning the luminous efficacy and has been renamed accordingly. The current colour.luminous_efficiency definition now properly returns luminous efficiency. (@kelsolaar, @canavandl)

colour.plotting

  • colour.plotting.nadir_grid had various issues and wasn't working properly since Colour 0.3.7. (@kelsolaar)

colour.io

  • colour.write_spds_to_csv_file definition now correctly writes CSV files without extra line breaks on Windows. (@Ron024)

colour.models

  • colour.linear_to_red_log_film and colour.red_log_film_to_linear definitions are now properly based on the Cineon curve. (@Nick-Shaw, @KelSolaar)

Changes

colour.adaptation

  • colour.CMCCAT2000_forward: (@kelsolaar)
    • Name: colour.chromatic_adaptation_forward_CMCCAT2000
  • colour.CMCCAT2000_reverse: (@kelsolaar)
    • Name: colour.chromatic_adaptation_reverse_CMCCAT2000

colour.algebra

  • colour.is_identity: (@kelsolaar)
    • Signature: colour.is_identity(a, n=3)
  • colour.cartesian_to_spherical: (@kelsolaar)
    • Signature: colour.cartesian_to_spherical(a)
  • colour.spherical_to_cartesian: (@kelsolaar)
    • Signature: colour.spherical_to_cartesian(a)
  • colour.cartesian_to_cylindrical: (@kelsolaar)
    • Signature: colour.cartesian_to_cylindrical(a)
  • colour.cylindrical_to_cartesian: (@kelsolaar)
    • Signature: colour.cylindrical_to_cartesian(a)

colour.characterisation

  • colour.first_order_colour_fit: (@kelsolaar)
    • Signature: colour.first_order_colour_fit(m_1, m_2)

colour.colorimetry

  • colour.ILLUMINANTS['CIE 1931 2 Degree Standard Observer']['D50']: (@kelsolaar)
    • Value: (0.34570, 0.35850)
  • colour.ILLUMINANTS['CIE 1931 2 Degree Standard Observer']['D65']: (@kelsolaar)
    • Value: (0.31270, 0.32900)
  • colour.SpectralShape.steps: (@kelsolaar)
    • Name: colour.SpectralShape.interval
  • colour.SpectralPowerDistribution and colour.TriSpectralPowerDistribution classes arithmetical operations such as addition, subtraction, multiplication, division and exponentiation are not happening in-place anymore. This behaviour is now supported through augmented assignment operators: spd /= np.max(spd.values) instead of spd / np.max(spd.values). (@kelsolaar)
  • colour.SpectralPowerDistribution.align: (@kelsolaar)
    • Signature: colour.SpectralPowerDistribution.align(self, shape, interpolation_method=None, extrapolation_method='Constant', extrapolation_left=None, extrapolation_right=None)
  • colour.TriSpectralPowerDistribution.align: (@kelsolaar)
    • Signature: colour.TriSpectralPowerDistribution.align(self, shape, interpolation_method=None, extrapolation_method='Constant', extrapolation_left=None, extrapolation_right=None)
  • colour.spectral_to_XYZ: (@kelsolaar)
    • Behaviour: colour.spectral_to_XYZ definition will now use practise ASTM E308–15 method instead of classical integration.
    • Signature: colour.spectral_to_XYZ(spd, cmfs=STANDARD_OBSERVERS_CMFS.get('CIE 1931 2 Degree Standard Observer'), illuminant=ones_spd(STANDARD_OBSERVERS_CMFS.get('CIE 1931 2 Degree Standard Observer').shape), method='ASTM E308–15', **kwargs)
  • colour.lightness_1976: (@kelsolaar)
    • Name: colour.lightness_CIE1976
  • colour.luminance_1976: (@kelsolaar)
    • Name: colour.luminance_CIE1976
  • colour.luminous_efficiency: (@kelsolaar, @canavandl)
    • Name: colour.luminous_efficacy

colour.difference

  • colour.delta_E_CIE1976: (@kelsolaar)
    • Signature: colour.delta_E_CIE1976(Lab_1, Lab_2, **kwargs)
  • colour.delta_E_CIE1994: (@kelsolaar)
    • Signature: colour.delta_E_CIE1994(Lab_1, Lab_2, textiles=False, **kwargs)
  • colour.delta_E_CIE2000: (@kelsolaar)
    • Signature: colour.delta_E_CIE2000(Lab_1, Lab_2, textiles=False, **kwargs)
  • colour.delta_E_CMC: (@kelsolaar)
    • Signature: colour.delta_E_CMC(Lab_1, Lab_2, l=2, c=1)

colour.models

  • RGB colourspace model related objects have been moved to a dedicated sub-package: colour.models.rgb. (@kelsolaar)
  • RGB colourspace model OETF / EOTF, log encoding curves have been moved have been moved to a dedicated sub-package: colour.models.rgb.transfer_functions. (@kelsolaar)
  • colour.RGB_Colourspace.OECF: (@kelsolaar)
    • Name: colour.RGB_Colourspace.encoding_cctf
  • colour.RGB_Colourspace.EOCF: (@kelsolaar)
    • Name: colour.RGB_Colourspace.decoding_cctf
  • colour.XYZ_to_sRGB: (@kelsolaar)
    • Signature: colour.XYZ_to_sRGB(XYZ, illuminant=RGB_COLOURSPACES.get('sRGB').whitepoint, chromatic_adaptation_transform='CAT02', apply_encoding_cctf=True)
  • colour.sRGB_to_XYZ: (@kelsolaar)
    • Signature: colour.sRGB_to_XYZ(RGB, illuminant=RGB_COLOURSPACES.get('sRGB').whitepoint, chromatic_adaptation_method='CAT02', apply_decoding_cctf=True)
  • colour.linear_to_cineon: (@kelsolaar)
    • Name: colour.log_encoding_Cineon
  • colour.cineon_to_linear: (@kelsolaar)
    • Name: colour.log_decoding_Cineon
  • colour.linear_to_panalog: (@kelsolaar)
    • Name: colour.log_encoding_Panalog
  • colour.panalog_to_linear: (@kelsolaar)
    • Name: colour.log_decoding_Panalog
  • colour.linear_to_viper_log: (@kelsolaar)
    • Name: colour.log_encoding_ViperLog
  • colour.viper_log_to_linear: (@kelsolaar)
    • Name: colour.log_decoding_ViperLog
  • colour.linear_to_pivoted_log: (@kelsolaar)
    • Name: colour.log_encoding_PivotedLog
  • colour.pivoted_log_to_linear: (@kelsolaar)
    • Name: colour.log_decoding_PivotedLog
  • colour.linear_to_c_log: (@kelsolaar)
    • Name: colour.log_encoding_CLog
  • colour.c_log_to_linear: (@kelsolaar)
    • Name: colour.log_decoding_CLog
  • colour.linear_to_aces_cc: (@kelsolaar)
    • Name: colour.log_encoding_ACEScc
  • colour.aces_cc_to_linear: (@kelsolaar)
    • Name: colour.log_decoding_ACEScc
  • colour.linear_to_alexa_log_c: (@kelsolaar)
    • Name: colour.log_encoding_ALEXALogC
  • colour.alexa_log_c_to_linear: (@kelsolaar)
    • Name: colour.log_decoding_ALEXALogC
  • colour.linear_to_red_log_film: (@kelsolaar)
    • Name: colour.log_encoding_REDLogFilm
  • colour.red_log_film_to_linear: (@kelsolaar)
    • Name: colour.log_encoding_SLog
  • colour.linear_to_s_log: (@kelsolaar)
    • Name: colour.log_encoding_SLog
  • colour.s_log_to_linear: (@kelsolaar)
    • Name: colour.log_decoding_SLog
  • colour.linear_to_s_log2: (@kelsolaar)
    • Name: colour.log_encoding_SLog2
  • colour.s_log2_to_linear: (@kelsolaar)
    • Name: colour.log_decoding_SLog2
  • colour.linear_to_s_log3: (@kelsolaar)
    • Name: colour.log_encoding_SLog3
  • colour.s_log3_to_linear: (@kelsolaar)
    • Name: colour.log_decoding_SLog3
  • colour.linear_to_v_log: (@kelsolaar)
    • Name: colour.log_encoding_VLog
  • colour.v_log_to_linear: (@kelsolaar)
    • Name: colour.log_decoding_VLog
  • colour.LINEAR_TO_LOG_METHODS: (@kelsolaar)
    • Name: colour.LOG_ENCODING_METHODS
  • colour.linear_to_log: (@kelsolaar)
    • Name: colour.log_encoding_curve
  • colour.LOG_TO_LINEAR_METHODS: (@kelsolaar)
    • Name: colour.LOG_DECODING_METHODS
  • colour.log_to_linear: (@kelsolaar)
    • Name: colour.log_decoding_curve
  • colour.RGB_COLOURSPACES['Adobe RGB 1998']: (@kelsolaar)
    • Name: colour.RGB_COLOURSPACES['Adobe RGB (1998)']
  • colour.ACES_2065_1_OECF: (@kelsolaar)
    • Remove
  • colour.ACES_2065_1_EOCF: (@kelsolaar)
    • Remove
  • colour.ACES_CG_OECF: (@kelsolaar)
    • Remove
  • colour.ACES_CG_EOCF: (@kelsolaar)
    • Remove
  • colour.ACES_CC_OECF: (@kelsolaar)
    • Remove
  • colour.ACES_CC_EOCF: (@kelsolaar)
    • Remove
  • colour.ACES_PROXY_OECF: (@kelsolaar)
    • Remove
  • colour.ACES_PROXY_EOCF: (@kelsolaar)
    • Remove
  • colour.ADOBE_RGB_1998_OECF: (@kelsolaar)
    • Remove
  • colour.ADOBE_RGB_1998_EOCF: (@kelsolaar)
    • Remove
  • colour.ADOBE_WIDE_GAMUT_RGB_OECF: (@kelsolaar)
    • Remove
  • colour.ADOBE_WIDE_GAMUT_RGB_EOCF: (@kelsolaar)
    • Remove
  • colour.ALEXA_LOG_C_OECF: (@kelsolaar)
    • Remove
  • colour.ALEXA_LOG_C_EOCF: (@kelsolaar)
    • Remove
  • colour.APPLE_RGB_OECF: (@kelsolaar)
    • Remove
  • colour.APPLE_RGB_EOCF: (@kelsolaar)
    • Remove
  • colour.BEST_RGB_OECF: (@kelsolaar)
    • Remove
  • colour.BEST_RGB_EOCF: (@kelsolaar)
    • Remove
  • colour.BETA_RGB_OECF: (@kelsolaar)
    • Remove
  • colour.BETA_RGB_EOCF: (@kelsolaar)
    • Remove
  • colour.CIE_RGB_OECF: (@kelsolaar)
    • Remove
  • colour.CIE_RGB_EOCF: (@kelsolaar)
    • Remove
  • colour.CINEMA_GAMUT_OECF: (@kelsolaar)
    • Remove
  • colour.CINEMA_GAMUT_EOCF: (@kelsolaar)
    • Remove
  • colour.COLOR_MATCH_RGB_OECF: (@kelsolaar)
    • Remove
  • colour.COLOR_MATCH_RGB_EOCF: (@kelsolaar)
    • Remove
  • colour.DCI_P3_OECF: (@kelsolaar)
    • Remove
  • colour.DCI_P3_EOCF: (@kelsolaar)
    • Remove
  • colour.DCI_P3_OECF: (@kelsolaar)
    • Remove
  • colour.DCI_P3_EOCF: (@kelsolaar)
    • Remove
  • colour.DON_RGB_4_OECF: (@kelsolaar)
    • Remove
  • colour.DON_RGB_4_EOCF: (@kelsolaar)
    • Remove
  • colour.ECI_RGB_V2_OECF: (@kelsolaar)
    • Remove
  • colour.ECI_RGB_V2_EOCF: (@kelsolaar)
    • Remove
  • colour.EKTA_SPACE_PS_5_OECF: (@kelsolaar)
    • Remove
  • colour.EKTA_SPACE_PS_5_EOCF: (@kelsolaar)
    • Remove
  • colour.MAX_RGB_OECF: (@kelsolaar)
    • Remove
  • colour.MAX_RGB_EOCF: (@kelsolaar)
    • Remove
  • colour.NTSC_RGB_OECF: (@kelsolaar)
    • Remove
  • colour.NTSC_RGB_EOCF: (@kelsolaar)
    • Remove
  • colour.PAL_SECAM_RGB_OECF: (@kelsolaar)
    • Remove
  • colour.PAL_SECAM_RGB_EOCF: (@kelsolaar)
    • Remove
  • colour.PROPHOTO_RGB_OECF: (@kelsolaar)
    • Remove
  • colour.PROPHOTO_RGB_EOCF: (@kelsolaar)
    • Remove
  • colour.REC_2020_OECF: (@kelsolaar)
    • Remove
  • colour.REC_2020_EOCF: (@kelsolaar)
    • Remove
  • colour.REC_709_OECF: (@kelsolaar)
    • Remove
  • colour.REC_709_EOCF: (@kelsolaar)
    • Remove
  • colour.RED_LOG_OECF: (@kelsolaar)
    • Remove
  • colour.RED_LOG_EOCF: (@kelsolaar)
    • Remove
  • colour.RED_LOG_OECF: (@kelsolaar)
    • Remove
  • colour.RED_LOG_EOCF: (@kelsolaar)
    • Remove
  • colour.RED_LOG_OECF: (@kelsolaar)
    • Remove
  • colour.RED_LOG_EOCF: (@kelsolaar)
    • Remove
  • colour.RED_LOG_OECF: (@kelsolaar)
    • Remove
  • colour.RED_LOG_EOCF: (@kelsolaar)
    • Remove
  • colour.RED_LOG_OECF: (@kelsolaar)
    • Remove
  • colour.RED_LOG_EOCF: (@kelsolaar)
    • Remove
  • colour.RED_LOG_OECF: (@kelsolaar)
    • Remove
  • colour.RED_LOG_EOCF: (@kelsolaar)
    • Remove
  • colour.RUSSELL_RGB_OECF: (@kelsolaar)
    • Remove
  • colour.RUSSELL_RGB_EOCF: (@kelsolaar)
    • Remove
  • colour.SMPTE_C_RGB_OECF: (@kelsolaar)
    • Remove
  • colour.SMPTE_C_RGB_EOCF: (@kelsolaar)
    • Remove
  • colour.S_LOG2_OECF: (@kelsolaar)
    • Remove
  • colour.S_LOG2_EOCF: (@kelsolaar)
    • Remove
  • colour.S_LOG3_OECF: (@kelsolaar)
    • Remove
  • colour.S_LOG3_EOCF: (@kelsolaar)
    • Remove
  • colour.S_LOG3_OECF: (@kelsolaar)
    • Remove
  • colour.S_LOG3_EOCF: (@kelsolaar)
    • Remove
  • colour.sRGB_OECF: (@kelsolaar)
    • Remove
  • colour.sRGB_EOCF: (@kelsolaar)
    • Remove
  • colour.V_LOG_OECF: (@kelsolaar)
    • Remove
  • colour.V_LOG_EOCF: (@kelsolaar)
    • Remove
  • colour.XTREME_RGB_OECF: (@kelsolaar)
    • Remove
  • colour.XTREME_RGB_EOCF: (@kelsolaar)
    • Remove

colour.plotting

  • colour.plotting.decorate: (@kelsolaar)
    • Keyword Argument: no_axes3d renamed to no_axes.
  • colour.plotting.camera: (@kelsolaar)
    • Returns: Axes, Current axes.
  • colour.plotting.decorate: (@kelsolaar)
    • Returns: Axes, Current axes.
  • colour.plotting.boundaries: (@kelsolaar)
    • Returns: Axes, Current axes.
  • colour.plotting.display: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.CIE_1931_chromaticity_diagram_colours_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.CIE_1931_chromaticity_diagram_plot: (@kelsolaar, @MichaelMauderer, @scooperly)
    • Signature: CIE_1931_chromaticity_diagram_plot(cmfs='CIE 1931 2 Degree Standard Observer', show_diagram_colours=True, **kwargs)
    • Returns: Figure, Current figure or None
  • colour.plotting.CIE_1960_UCS_chromaticity_diagram_colours_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.CIE_1960_UCS_chromaticity_diagram_plot: (@kelsolaar, @MichaelMauderer, @scooperly)
    • Signature: CIE_1960_UCS_chromaticity_diagram_plot(cmfs='CIE 1931 2 Degree Standard Observer', show_diagram_colours=True, **kwargs)
    • Returns: Figure, Current figure or None
  • colour.plotting.CIE_1976_UCS_chromaticity_diagram_colours_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.CIE_1976_UCS_chromaticity_diagram_plot: (@kelsolaar, @MichaelMauderer, @scooperly)
    • Signature: CIE_1976_UCS_chromaticity_diagram_plot(cmfs='CIE 1931 2 Degree Standard Observer', show_diagram_colours=True, **kwargs)
    • Returns: Figure, Current figure or None
  • colour.plotting.RGB_chromaticity_coordinates_CIE_1931_chromaticity_diagram_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.RGB_chromaticity_coordinates_CIE_1960_UCS_chromaticity_diagram_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.RGB_chromaticity_coordinates_CIE_1976_UCS_chromaticity_diagram_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.RGB_colourspaces_CIE_1931_chromaticity_diagram_plot: (@kelsolaar)
    • Signature: RGB_chromaticity_coordinates_CIE_1931_chromaticity_diagram_plot(RGB, colourspace, **kwargs)
    • Returns: Figure, Current figure or None
  • colour.plotting.RGB_colourspaces_CIE_1960_UCS_chromaticity_diagram_plot: (@kelsolaar)
    • Signature: RGB_colourspaces_CIE_1960_UCS_chromaticity_diagram_plot(RGB, colourspace, **kwargs)
    • Returns: Figure, Current figure or None
  • colour.plotting.RGB_colourspaces_CIE_1976_UCS_chromaticity_diagram_plot: (@kelsolaar)
    • Signature: RGB_colourspaces_CIE_1976_UCS_chromaticity_diagram_plot(RGB, colourspace, **kwargs)
    • Returns: Figure, Current figure or None
  • colour.plotting.RGB_colourspaces_gamuts_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.RGB_scatter_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.blackbody_colours_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.blackbody_spectral_radiance_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.colour_parameters_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.colour_quality_bars_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.corresponding_chromaticities_prediction_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.image_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.multi_cmfs_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.multi_colour_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.multi_conversion_function_plot: (@kelsolaar)
    • Name: colour.plotting.multi_cctf_plot
    • Signature: colour.plotting.multi_cctf_plot(colourspaces=None, decoding_cctf=False, **kwargs)
    • Returns: Figure, Current figure or None
  • colour.plotting.multi_illuminants_relative_spd_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.multi_lightness_function_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.multi_munsell_value_function_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.multi_spd_colour_quality_scale_bars_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.multi_spd_colour_rendering_index_bars_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.multi_spd_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.planckian_locus_CIE_1931_chromaticity_diagram_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.planckian_locus_CIE_1960_UCS_chromaticity_diagram_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.single_cmfs_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.single_colour_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.single_conversion_function_plot: (@kelsolaar)
    • Name: colour.plotting.single_cctf_plot
    • Signature: colour.plotting.single_cctf_plot(colourspace=None, decoding_cctf=False, **kwargs)
    • Returns: Figure, Current figure or None
  • colour.plotting.single_illuminant_relative_spd_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.single_lightness_function_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.single_munsell_value_function_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.single_rayleigh_scattering_spd_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.single_spd_colour_quality_scale_bars_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.single_spd_colour_rendering_index_bars_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.single_spd_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.spds_CIE_1931_chromaticity_diagram_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.spds_CIE_1960_UCS_chromaticity_diagram_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.spds_CIE_1976_UCS_chromaticity_diagram_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.the_blue_sky_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None
  • colour.plotting.visible_spectrum_plot: (@kelsolaar)
    • Returns: Figure, Current figure or None

colour.utilities

  • colour.as_numeric: (@kelsolaar)
    • Signature: colour.as_numeric(a, type_=np.float_)
  • colour.closest: (@kelsolaar)
    • Signature: colour.closest(a, b)
  • colour.normalise: (@kelsolaar)
    • Name: colour.normalise_maximum
    • Signature: colour.normalise_maximum(a, axis=None, factor=1, clip=True)
  • colour.steps: (@kelsolaar)
    • Name: colour.interval
  • colour.is_iterable: (@kelsolaar)
    • Signature: colour.is_iterable(a)
  • colour.is_string: (@kelsolaar)
    • Signature: colour.is_string(a)
  • colour.is_numeric: (@kelsolaar)
    • Signature: colour.is_numeric(a)
  • colour.is_integer: (@kelsolaar)
    • Signature: colour.is_integer(a)
  • colour.is_scipy_installed: (@kelsolaar)
    • Remove

v0.3.6

8 years ago

Colour 0.3.6 - Alpha Milestone

Colour 0.3.6 is the last API version to support Python 2.6.

Features

colour.colorimetry

  • Implement colour.SpectralPowerDistribution.interpolate and colour.TriSpectralPowerDistribution.interpolate methods now also support Piecewise Cubic Hermite Interpolation. (@kelsolaar)
  • Implement colour.wavelength_to_XYZ definition supports all the API interpolation methods: (@kelsolaar)
    • Cubic Spline
    • Linear
    • Pchip
    • Sprague (1880)

colour.colorimetry.dataset

  • Add Kinoton 75P spectral power distribution and associated chromaticity coordinates. (@kelsolaar)

colour.models

  • Implement colour.xy_to_xyY and colour.xyY_to_xy definitions to provide support for illuminant arguments with Luminance value in various colour.models objects. (@kelsolaar)

colour.plotting

  • Implement colour.plotting.RGB_colourspaces_gamuts_plot definition to visualise RGB colourspaces gamuts. (@kelsolaar)
  • Implement colour.plotting.RGB_scatter_plot definition to visualise RGB values within RGB colourspaces gamuts. (@kelsolaar)
  • Implement colour.plotting.quad geometry plotting helper definition. (@kelsolaar)
  • Implement colour.plotting.grid geometry plotting helper definition. (@kelsolaar)
  • Implement colour.plotting.cube geometry plotting helper definition. (@kelsolaar)
  • Implement colour.plotting.multi_spd_colour_rendering_index_bars_plot definition to visualise colour rendering index of multiple illuminants or light sources spectral power distributions. (@henczati, @kelsolaar)
  • Implement colour.plotting.multi_spd_colour_quality_scale_bars_plot definition to visualise colour quality scale of multiple illuminants or light sources spectral power distributions. (@henczati, @kelsolaar)

colour.utilities

  • Implement colour.ArbitraryPrecisionMapping class based providing support for floating point keys by rounding them at a specific decimals count. (@kelsolaar)

colour.volume

  • Implement colour.is_within_mesh_volume definition returning if given points are within given mesh volume using Delaunay triangulation. (@kelsolaar)
  • Implement colour.is_within_pointer_gamut definition returning if given tristimulus values are within Pointer's Gamut. (@kelsolaar)
  • Implement colour.is_within_visible_spectrum definition returning if given tristimulus values are within Visible Spectrum. (@kelsolaar)
  • Implement colour.RGB_colourspace_pointer_gamut_coverage_MonteCarlo definition returning given RGB colourspace percentage coverage of Pointer's Gamut using Monte Carlo method. (@kelsolaar)
  • Implement colour.RGB_colourspace_visible_spectrum_coverage_MonteCarlo definition returning given RGB colourspace percentage coverage of Visible Spectrum using Monte Carlo method. (@kelsolaar)

Fixes

colour.colorimetry

  • Ensure colour.SpectralPowerDistribution.zeros method raises an exception if unsuccessful.
  • Implement colour.SpectralMapping class based on colour.ArbitraryPrecisionMapping class providing better support for floating point wavelengths keys by rounding them at a specific decimals count. (@kelsolaar)

Changes

colour.algebra

  • colour.LinearInterpolator1d: (@kelsolaar)
    • Name: colour.LinearInterpolator
  • colour.SplineInterpolator: (@kelsolaar)
    • Name: colour.CubicSplineInterpolator

colour.colorimetry.dataset

  • colour.wavelength_to_XYZ: (@kelsolaar)
    • Signature: colour.wavelength_to_XYZ(wavelength, cmfs=STANDARD_OBSERVERS_CMFS.get('CIE 1931 2 Degree Standard Observer'), method=None)
  • Rename D63 illuminant to DCI-P3. (@kelsolaar)
  • Remove D63 spectral power distribution and associated chromaticity coordinates. (@kelsolaar)

colour.models

  • colour.XYZ_to_Lab: (@kelsolaar)
    • Arguments:
      • illuminant: Reference illuminant xy chromaticity coordinates or CIE xyY colourspace array.
  • colour.Lab_to_XYZ: (@kelsolaar)
    • Arguments:
      • illuminant: Reference illuminant xy chromaticity coordinates or CIE xyY colourspace array.
  • colour.XYZ_to_Luv: (@kelsolaar)
    • Arguments:
      • illuminant: Reference illuminant xy chromaticity coordinates or CIE xyY colourspace array.
  • colour.Luv_to_XYZ: (@kelsolaar)
    • Arguments:
      • illuminant: Reference illuminant xy chromaticity coordinates or CIE xyY colourspace array.
  • colour.Luv_to_uv: (@kelsolaar)
    • Arguments:
      • illuminant: Reference illuminant xy chromaticity coordinates or CIE xyY colourspace array.
  • colour.XYZ_to_UVW: (@kelsolaar)
    • Arguments:
      • illuminant: Reference illuminant xy chromaticity coordinates or CIE xyY colourspace array.
  • colour.XYZ_to_RGB: (@kelsolaar)
    • Arguments:
      • illuminant_XYZ: CIE XYZ tristimulus values illuminant xy chromaticity coordinates or CIE xyY colourspace array.
      • illuminant_RGB: RGB colourspace illuminant xy chromaticity coordinates or CIE xyY colourspace array.
  • colour.RGB_to_XYZ: (@kelsolaar)
    • Arguments:
      • illuminant_RGB: RGB colourspace illuminant xy chromaticity coordinates or CIE xyY colourspace array.
      • illuminant_XYZ: CIE XYZ tristimulus values illuminant xy chromaticity coordinates or CIE xyY colourspace array.

colour.plotting

  • colour.plotting.single_spd_plot: (@henczati, @fangjy88, @kelsolaar)
    • Arguments:
      • out_of_gamut_clipping: Out of gamut colours will be clipped if True otherwise, the colours will be offset by the absolute minimal colour leading to a rendering on gray background, less saturated and smoother.
  • colour.plotting.visible_spectrum_plot: (@henczati, @fangjy88, @kelsolaar)
    • Arguments:
      • out_of_gamut_clipping: Out of gamut colours will be clipped if True otherwise, the colours will be offset by the absolute minimal colour leading to a rendering on gray background, less saturated and smoother.
  • colour.plotting.colour_rendering_index_bars_plot: (@henczati, @kelsolaar)
    • Name: colour.plotting.single_spd_colour_rendering_index_bars_plot
  • colour.plotting.colour_quality_scale_bars_plot: (@henczati, @kelsolaar)
    • Name: colour.plotting.single_spd_colour_quality_scale_bars_plot

colour.volume

  • colour.volume.rgb.sample_RGB_colourspace_volume_MonteCarlo: (@kelsolaar)
    • Code vectorisation.

v0.3.5

8 years ago

Colour 0.3.5 - Alpha Milestone

The focus on this major milestone has been vectorisation of most of the API code, more details are available in this Google Docs Spreadsheet and the derivation of RED colourspaces.

Features

colour.adaptation.cie1994

  • colour.chromatic_adaptation_CIE1994 definition has been vectorised, handles n-dimensional arrays and is now 250.7 times faster. (@kelsolaar)

colour.adaptation.cmccat2000

  • colour.colour.CMCCAT2000_forward definition has been vectorised, handles n-dimensional arrays and is now 372.9 times faster. (@kelsolaar)
  • colour.colour.CMCCAT2000_reverse definition has been vectorised, handles n-dimensional arrays and is now 360.1 times faster. (@kelsolaar)

colour.adaptation.fairchild1990

  • colour.chromatic_adaptation_Fairchild1990 definition has been vectorised, handles n-dimensional arrays and is now 92.7 times faster. (@kelsolaar)

colour.adaptation.vonkries

  • colour.chromatic_adaptation_matrix_VonKries definition has been vectorised, handles n-dimensional arrays and is now 77.8 times faster. (@kelsolaar)
  • colour.chromatic_adaptation_VonKries definition has been vectorised, handles n-dimensional arrays and is now 60.0 times faster. (@kelsolaar)

colour.algebra

  • colour.cartesian_to_spherical definition has been vectorised, handles n-dimensional arrays and is now 165.0 times faster. (@kelsolaar)
  • colour.spherical_to_cartesian definition has been vectorised, handles n-dimensional arrays and is now 97.2 times faster. (@kelsolaar)
  • colour.cartesian_to_cylindrical definition has been vectorised, handles n-dimensional arrays and is now 151.8 times faster. (@kelsolaar)
  • colour.cylindrical_to_cartesian definition has been vectorised, handles n-dimensional arrays and is now 123.1 times faster. (@kelsolaar)

colour.appearance

  • colour.XYZ_to_ATD95 definition has been vectorised, handles n-dimensional arrays and is now 17.5 times faster. (@kelsolaar, @MichaelMauderer)
  • colour.XYZ_to_CIECAM02 definition has been vectorised, handles n-dimensional arrays and is now 77.4 times faster. (@kelsolaar, @MichaelMauderer)
  • colour.CIECAM02_to_XYZ definition has been vectorised, handles n-dimensional arrays and is now 16.3 times faster. (@kelsolaar, @MichaelMauderer)
  • colour.XYZ_to_Hunt definition has been vectorised, handles n-dimensional arrays and is now 130.2 times faster. (@kelsolaar, @MichaelMauderer)
  • colour.XYZ_to_LLAB definition has been vectorised, handles n-dimensional arrays and is now 34 times faster. (@kelsolaar)
  • colour.XYZ_to_Nayatani95 definition has been vectorised, handles n-dimensional arrays and is now 111.7 times faster. (@kelsolaar, @MichaelMauderer)
  • colour.XYZ_to_RLAB definition has been vectorised, handles n-dimensional arrays and is now 53.6 times faster. (@kelsolaar, @MichaelMauderer)

colour.colorimetry.blackbody

  • colour.planck_law definition has been vectorised, handles n-dimensional arrays and is now 162.1 times faster. (@kelsolaar)

colour.colorimetry.lefs

  • colour.mesopic_weighting_function definition has been vectorised and now handles n-dimensional arrays. (@kelsolaar)

colour.colorimetry.lightness

  • colour.lightness_Glasser1958 definition has been vectorised, handles n-dimensional arrays and is now 16.0 times faster. (@kelsolaar)
  • colour.lightness_Wyszecki1963 definition has been vectorised, handles n-dimensional arrays and is now 48.3 times faster. (@kelsolaar)
  • colour.lightness_1976 definition has been vectorised, handles n-dimensional arrays and is now 33.3 times faster. (@kelsolaar)

colour.colorimetry.luminance

  • colour.luminance_Newhall1943 definition has been vectorised, handles n-dimensional arrays and is now 24.1 times faster. (@kelsolaar)
  • colour.luminance_ASTMD153508 definition has been vectorised, handles n-dimensional arrays and is now 26.3 times faster. (@kelsolaar)
  • colour.luminance_1976 definition has been vectorised, handles n-dimensional arrays and is now 35.7 times faster. (@kelsolaar)

colour.colorimetry.spectrum

  • colour.SpectralShape.__contains__ now accepts array_like input. (@kelsolaar)
  • colour.SpectralPowerDistribution.__getitem__ now accepts array_like and slice inputs. (@kelsolaar)
  • colour.SpectralPowerDistribution.__setitem__ now accepts array_like and slice inputs. (@kelsolaar)
  • colour.SpectralPowerDistribution.__contains__ now accepts array_like inputs. (@kelsolaar)
  • colour.SpectralPowerDistribution.get now accepts array_like inputs. (@kelsolaar)
  • colour.TriSpectralPowerDistribution.__getitem__ now accepts array_like and slice inputs. (@kelsolaar)
  • colour.TriSpectralPowerDistribution.__setitem__ now accepts array_like and slice inputs. (@kelsolaar)
  • colour.TriSpectralPowerDistribution.__contains__ now accepts array_like inputs. (@kelsolaar)
  • colour.TriSpectralPowerDistribution.get now accepts array_like inputs (@kelsolaar)

colour.colorimetry.transformations

  • colour.RGB_2_degree_cmfs_to_XYZ_2_degree_cmfs definition has been vectorised and now handles n-dimensional arrays. (@kelsolaar)
  • colour.RGB_10_degree_cmfs_to_XYZ_10_degree_cmfs definition has been vectorised and now handles n-dimensional arrays. (@kelsolaar)
  • colour.RGB_10_degree_cmfs_to_LMS_10_degree_cmfs definition has been vectorised and now handles n-dimensional arrays. (@kelsolaar)
  • colour.LMS_2_degree_cmfs_to_XYZ_2_degree_cmfs definition has been vectorised and now handles n-dimensional arrays. (@kelsolaar)
  • colour.LMS_10_degree_cmfs_to_XYZ_10_degree_cmfs definition has been vectorised and now handles n-dimensional arrays. (@kelsolaar)

colour.colorimetry.tristimulus

  • colour.wavelength_to_XYZ definition has been vectorised, handles n-dimensional arrays and is now 131.0 times faster. (@kelsolaar)

colour.colorimetry.whiteness

  • colour.whiteness_Berger1959 definition has been vectorised, handles n-dimensional arrays and is now 277.6 times faster. (@kelsolaar)
  • colour.whiteness_Taube1960 definition has been vectorised, handles n-dimensional arrays and is now 440.6 times faster. (@kelsolaar)
  • colour.whiteness_Stensby1968 definition has been vectorised, handles n-dimensional arrays and is now 358.3 times faster. (@kelsolaar)
  • colour.whiteness_ASTM313 definition has been vectorised, handles n-dimensional arrays and is now 305.5 times faster. (@kelsolaar)
  • colour.whiteness_Ganz1979 definition has been vectorised, handles n-dimensional arrays and is now 194.1 times faster. (@kelsolaar)
  • colour.whiteness_CIE2004 definition has been vectorised, handles n-dimensional arrays and is now 388.9 times faster. (@kelsolaar)

colour.difference

  • colour.delta_E_CIE1976 definition has been vectorised, handles n-dimensional arrays and is now 283.2 times faster. (@kelsolaar)
  • colour.delta_E_CIE1994 definition has been vectorised, handles n-dimensional arrays and is now 256 times faster. (@kelsolaar)
  • colour.delta_E_CIE2000 definition has been vectorised, handles n-dimensional arrays and is now 140.3 times faster. (@kelsolaar)
  • colour.delta_E_CMC definition has been vectorised, handles n-dimensional arrays and is now 115.4 times faster. (@kelsolaar)

colour.io

  • Implement colour.read_image definition providing image read support using OpenImageIO. (@kelsolaar)
  • Implement colour.write_image definition providing image write support using OpenImageIO. (@kelsolaar)

colour.models.cie_xyy

  • colour.XYZ_to_xyY definition has been vectorised, handles n-dimensional arrays and is now 15.5 times faster. (@kelsolaar)
  • colour.xyY_to_XYZ definition has been vectorised, handles n-dimensional arrays and is now 70.8 times faster. (@kelsolaar)
  • colour.xy_to_XYZ definition has been vectorised, handles n-dimensional arrays and is now 74.5 times faster. (@kelsolaar)
  • colour.XYZ_to_xy definition has been vectorised, handles n-dimensional arrays and is now 17.7 times faster. (@kelsolaar)

colour.models.cie_lab

  • colour.XYZ_to_Lab definition has been vectorised, handles n-dimensional arrays and is now 49.2 times faster. (@kelsolaar)
  • colour.Lab_to_XYZ definition has been vectorised, handles n-dimensional arrays and is now 52.3 times faster. (@kelsolaar)
  • colour.Lab_to_LCHab definition has been vectorised, handles n-dimensional arrays and is now 171.2 times faster. (@kelsolaar)
  • colour.LCHab_to_Lab definition has been vectorised, handles n-dimensional arrays and is now 173.5 times faster. (@kelsolaar)

colour.models.cie_luv

  • colour.XYZ_to_Luv definition has been vectorised, handles n-dimensional arrays and is now 205.8 times faster. (@kelsolaar)
  • colour.Luv_to_XYZ definition has been vectorised, handles n-dimensional arrays and is now 175.2 times faster. (@kelsolaar)
  • colour.Luv_to_uv definition has been vectorised, handles n-dimensional arrays and is now 183 times faster. (@kelsolaar)
  • colour.Luv_uv_to_xy definition has been vectorised, handles n-dimensional arrays and is now 218.7 times faster. (@kelsolaar)
  • colour.Luv_to_LCHuv definition has been vectorised, handles n-dimensional arrays and is now 144.1 times faster. (@kelsolaar)
  • colour.LCHuv_to_Luv definition has been vectorised, handles n-dimensional arrays and is now 168.7 times faster. (@kelsolaar)

colour.models.cie_ucs

  • colour.XYZ_to_UCS definition has been vectorised, handles n-dimensional arrays and is now 158.3 times faster. (@kelsolaar)
  • colour.UCS_to_XYZ definition has been vectorised, handles n-dimensional arrays and is now 216.4 times faster. (@kelsolaar)
  • colour.UCS_to_uv definition has been vectorised, handles n-dimensional arrays and is now 119 times faster. (@kelsolaar)
  • colour.UCS_uv_to_xy definition has been vectorised, handles n-dimensional arrays and is now 222.2 times faster. (@kelsolaar)

colour.models.cie_uvw

  • colour.XYZ_to_UVW definition has been vectorised, handles n-dimensional arrays and is now 70.1 times faster. (@kelsolaar)

colour.models.dataset

  • All the RGB colourspace model OECF have been vectorised and handle n-dimensional arrays.
  • Implement support for the following RED colourspaces: (@kelsolaar)
    • REDcolor
    • REDcolor2
    • REDcolor3
    • REDcolor4
    • DRAGONcolor
    • DRAGONcolor2
  • Implement support for Panasonic V-Gamut RGB colourspace. (@kelsolaar)

colour.models.deprecated

  • colour.RGB_to_HSV definition has been vectorised, handles n-dimensional arrays and is now 71 times faster. (@kelsolaar)
  • colour.HSV_to_RGB definition has been vectorised, handles n-dimensional arrays and is now 66.8 times faster. (@kelsolaar)
  • colour.RGB_to_HSL definition has been vectorised, handles n-dimensional arrays and is now 66 times faster. (@kelsolaar)
  • colour.HSL_to_RGB definition has been vectorised, handles n-dimensional arrays and is now 57.7 times faster. (@kelsolaar)
  • colour.RGB_to_CMY definition has been vectorised, handles n-dimensional arrays and is now 696 times faster. (@kelsolaar)
  • colour.CMY_to_RGB definition has been vectorised, handles n-dimensional arrays and is now 732.5 times faster. (@kelsolaar)
  • colour.CMY_to_CMYK definition has been vectorised, handles n-dimensional arrays and is now 84.6 times faster. (@kelsolaar)
  • colour.CMYK_to_CMY definition has been vectorised, handles n-dimensional arrays and is now 139.1 times faster. (@kelsolaar)

colour.models.derivation

  • Implement colour.primaries_whitepoint definition computing primaries and whitepoint from given normalised primary matrix. (@tashdor, @kelsolaar)
  • colour.RGB_luminance definition has been vectorised, handles n-dimensional arrays and is now 5354.1 times faster. (@kelsolaar)

colour.models.ipt

  • colour.XYZ_to_IPT definition has been vectorised, handles n-dimensional arrays and is now 24.3 times faster. (@kelsolaar)
  • colour.IPT_to_XYZ definition has been vectorised, handles n-dimensional arrays and is now 23.9 times faster. (@kelsolaar)
  • colour.IPT_hue_angle definition has been vectorised, handles n-dimensional arrays and is now 44.8 times faster. (@kelsolaar)

colour.models.log

  • colour.linear_to_cineon definition has been vectorised, handles n-dimensional arrays and is now 82.2 times faster. (@kelsolaar)
  • colour.cineon_to_linear definition has been vectorised, handles n-dimensional arrays and is now 54.7 times faster. (@kelsolaar)
  • colour.linear_to_panalog definition has been vectorised, handles n-dimensional arrays and is now 77.6 times faster. (@kelsolaar)
  • colour.panalog_to_linear definition has been vectorised, handles n-dimensional arrays and is now 55.5 times faster. (@kelsolaar)
  • colour.linear_to_red_log_film definition has been vectorised, handles n-dimensional arrays and is now 76 times faster. (@kelsolaar)
  • colour.red_log_film_to_linear definition has been vectorised, handles n-dimensional arrays and is now 59.2 times faster. (@kelsolaar)
  • colour.linear_to_viper_log definition has been vectorised, handles n-dimensional arrays and is now 69 times faster. (@kelsolaar)
  • colour.viper_log_to_linear definition has been vectorised, handles n-dimensional arrays and is now 49 times faster. (@kelsolaar)
  • colour.linear_to_pivoted_log definition has been vectorised, handles n-dimensional arrays and is now 59.6 times faster. (@kelsolaar)
  • colour.pivoted_log_to_linear definition has been vectorised, handles n-dimensional arrays and is now 46.3 times faster. (@kelsolaar)
  • colour.linear_to_c_log definition has been vectorised, handles n-dimensional arrays and is now 55.4 times faster. (@kelsolaar)
  • colour.c_log_to_linear definition has been vectorised, handles n-dimensional arrays and is now 48.2 times faster. (@kelsolaar)
  • Implement colour.linear_to_v_log and colour.v_log_to_linear definitions providing support for Panasonic V-Log. (@kelsolaar)

colour.models.rgb

  • colour.XYZ_to_RGB definition has been vectorised, handles n-dimensional arrays and is now 1739.5 times faster. (@kelsolaar)
  • colour.RGB_to_XYZ definition has been vectorised, handles n-dimensional arrays and is now 1813.5 times faster. (@kelsolaar)
  • colour.RGB_to_RGB definition has been vectorised, handles n-dimensional arrays and is now 1691.2 times faster. (@kelsolaar)

colour.notation.munsell

  • colour.munsell_value_Priest1920 definition has been vectorised, handles n-dimensional arrays and is now 332 times faster. (@kelsolaar)
  • colour.munsell_value_Munsell1933 definition has been vectorised, handles n-dimensional arrays and is now 196.8 times faster. (@kelsolaar)
  • colour.munsell_value_Moon1943 definition has been vectorised, handles n-dimensional arrays and is now 17.2 times faster. (@kelsolaar)
  • colour.munsell_value_Saunderson1944 definition has been vectorised, handles n-dimensional arrays and is now 19.5 times faster. (@kelsolaar)
  • colour.munsell_value_Ladd1955 definition has been vectorised, handles n-dimensional arrays and is now 18.1 times faster. (@kelsolaar)
  • colour.munsell_value_McCamy1987 definition has been vectorised, handles n-dimensional arrays and is now 30.6 times faster. (@kelsolaar)
  • colour.munsell_value_ASTMD153508 definition has been vectorised, handles n-dimensional arrays and is now 2201.5 times faster. (@kelsolaar)

colour.notation.triplet

  • colour.RGB_to_HEX definition has been vectorised, handles n-dimensional arrays and is now 3.3 times faster. (@kelsolaar)
  • colour.HEX_to_RGB definition has been vectorised, handles n-dimensional arrays and is now 1.8 times faster. (@kelsolaar)

colour.phenomenons

  • colour.scattering_cross_section definition has been vectorised, handles n-dimensional arrays and is now 58.1 times faster. (@kelsolaar)
  • colour.rayleigh_optical_depth definition has been vectorised, handles n-dimensional arrays and is now 89.8 times faster. (@kelsolaar)

colour.plotting

  • Implement colour.plotting.RGB_colourspaces_CIE_1960_UCS_chromaticity_diagram_plot and colour.plotting.RGB_colourspaces_CIE_1976_UCS_chromaticity_diagram_plot definitions to visualise RGB colourspaces in the CIE 1960 UCS and CIE 1976 UCS chromaticity diagrams. (@kelsolaar)
  • Implement colour.plotting.RGB_chromaticity_coordinates_CIE_1931_chromaticity_diagram_plot, colour.plotting.RGB_chromaticity_coordinates_CIE_1960_UCS_chromaticity_diagram_plot and colour.plotting.RGB_chromaticity_coordinates_CIE_1976_UCS_chromaticity_diagram_plot definitions to visualise RGB chromaticities in the CIE 1931, CIE 1960 UCS and CIE 1976 UCS chromaticity diagrams. (@kelsolaar)
  • Implement colour.plotting.image_plot definition to visualise images. (@kelsolaar)

colour.temperature

  • colour.xy_to_CCT_McCamy1992 definition has been vectorised, handles n-dimensional arrays and is now 53.1 times faster. (@kelsolaar)
  • colour.xy_to_CCT_Hernandez1999 definition has been vectorised, handles n-dimensional arrays and is now 48.7 times faster. (@kelsolaar)
  • colour.CCT_to_xy_Kang2002 definition has been vectorised, handles n-dimensional arrays and is now 29.5 times faster. (@kelsolaar)
  • colour.CCT_to_xy_CIE_D definition has been vectorised, handles n-dimensional arrays and is now 43.6 times faster. (@kelsolaar)

colour.utilities.array

  • Implement colour.as_numeric utility definition attempting to convert ndarray or other variable types to numeric. (@kelsolaar)
  • Implement colour.in_array utility definition testing if each element of an array is also present in a second array within given tolerance. (@kelsolaar)
  • Implement colour.tstack utility definition stacking arrays in sequence along the last axis. (@kelsolaar)
  • Implement colour.tsplit utility definition splitting arrays in sequence along the last axis. (@kelsolaar)
  • Implement colour.row_as_diagonal definition returning the per row diagonal matrices of the given array. (@kelsolaar)
  • Implement colour.dot_vector convenient definition performing the dot product of two arrays where m array is expected to be an array of 3x3 matrices and v an array of vectors. (@kelsolaar)
  • Implement colour.dot_matrix convenient definition performing the dot product of two arrays where a array is expected to be an array of 3x3 matrices and b array another array of of 3x3 matrices. (@kelsolaar)

colour.utilities.common

  • Implement decorators to handle Numpy computation errors and Python warnings: (@kelsolaar)
    • colour.handle_numpy_errors
    • colour.ignore_numpy_errors
    • colour.raise_numpy_errors
    • colour.print_numpy_errors
    • colour.warn_numpy_errors
    • colour.ignore_python_warnings
  • Implement support for arbitrary axis usage in "colour.normalise" definition. (@kelsolaar)

colour.volume

  • colour.is_within_macadam_limits definition has been vectorised, handles n-dimensional arrays and is now 121.6 times faster. (@kelsolaar)

Fixes

Changes

colour.algebra

  • `colour.algebra.common.FLOATING_POINT_NUMBER_PATTERN: (@kelsolaar)
    • Location: colour.constants.common.FLOATING_POINT_NUMBER_PATTERN
  • `colour.algebra.common.INTEGER_THRESHOLD: (@kelsolaar)
    • Location: colour.constants.common.INTEGER_THRESHOLD
  • `colour.algebra.common.steps: (@kelsolaar)
    • Location: colour.utilities.array.steps
  • `colour.algebra.common.closest: (@kelsolaar)
    • Location: colour.utilities.array.closest
  • `colour.algebra.common.as_array: (@kelsolaar)
    • Location: colour.utilities.array.as_array
  • `colour.algebra.common.is_uniform: (@kelsolaar)
    • Location: colour.utilities.array.is_uniform
  • `colour.algebra.common.is_iterable: (@kelsolaar)
    • Location: colour.utilities.common.is_iterable
  • `colour.algebra.common.is_numeric: (@kelsolaar)
    • Location: colour.utilities.common.is_numeric
  • `colour.algebra.common.is_integer: (@kelsolaar)
    • Location: colour.utilities.common.is_integer
  • `colour.algebra.common.normalise: (@kelsolaar)
    • Location: colour.utilities.array.normalise
    • Signature: normalise(x, axis=None, factor=1, clip=True)
  • colour.algebra.regression.linear_regression definition: (@kelsolaar)
    • Remove

colour.characterisation

  • colour.first_order_colour_fit: (@kelsolaar)
    • Behaviour: Performs a first order colour fit from given m1 colour matrix to m2 colour matrix instead of m2 to m1.

colour.colorimetry

  • colour.SpectralPowerDistribution.get defaults to np.nan instead of None. (@kelsolaar)
  • colour.TriSpectralPowerDistribution.get defaults to np.nan instead of None. (@kelsolaar)

colour.models

  • colour.linear_to_red_log (@kelsolaar)
    • Name: colour.linear_to_red_log_film
  • colour.red_log_to_linear (@kelsolaar)
    • Name: colour.red_log_film_to_linear

colour.plotting

  • colour.plotting.colourspaces_CIE_1931_chromaticity_diagram_plot (@kelsolaar)
    • Name: colour.plotting.RGB_colourspaces_CIE_1931_chromaticity_diagram_plot
  • colour.plotting.colour_cycle
    • Signature: colour.plotting.colour_cycle(**kwargs)

v0.3.4

9 years ago

Colour 0.3.4 - Alpha Milestone

Features

colour.colorimetry

  • Add new CIE D Series Illuminant D63 to accomodate DCI-P3 whitepoint. (@kelsolaar)
  • Implement Luminous Efficacy computation colour.luminous_efficacy definition. (@canavandl)

colour.models

  • Implement support for S-Gamut3 and S-Gamut3.Cine RGB colourspaces. (@kelsolaar)
  • Implement support for DCI-P3+ and Cinema Gamut RGB colourspaces. (@kelsolaar)
  • Implement support for various linear to log and log to linear definitions: (@kelsolaar)
    • Cineon: colour.linear_to_cineon, colour.cineon_to_linear
    • Panalog: colour.linear_to_panalog, colour.panalog_to_linear
    • REDLog: colour.linear_to_red_log, colour.red_log_to_linear
    • ViperLog: colour.linear_to_viper_log, colour.viper_log_to_linear
    • PLog: colour.linear_to_pivoted_log, colour.pivoted_log_to_linear
    • C-Log: colour.linear_to_c_log, colour.c_log_to_linear
    • ACEScc: colour.linear_to_aces_cc, colour.aces_cc_to_linear
    • ALEXA Log C: colour.linear_to_alexa_log_c, colour.alexa_log_c_to_linear
    • DCI-P3: colour.linear_to_dci_p3_log, colour.dci_p3_log_to_linear
    • S-Log: colour.linear_to_s_log, colour.s_log_to_linear
    • S-Log2: colour.linear_to_s_log2, colour.s_log2_to_linear
    • S-Log3: colour.linear_to_s_log3, colour.s_log3_to_linear

colour.plotting

  • Implement several objects to plot spectral power distribution chromaticity coordinates on chromaticity diagrams: (@kelsolaar)
    • colour.plotting.spds_CIE_1931_chromaticity_diagram_plot
    • colour.plotting.spds_CIE_1960_UCS_chromaticity_diagram_plot
    • colour.plotting.spds_CIE_1976_UCS_chromaticity_diagram_plot

colour.volume

  • Implement multi-process Monte Carlo brute force RGB colourspace volume computation: colour. RGB_colourspace_volume_MonteCarlo. (@kelsolaar, @MichaelMauderer)

Fixes

colour.plotting

  • colour.plotting.single_spd_plot definition was using incorrect abscissa ticker values. (@naavis, @kelsolaar)

Changes

colour.models

  • colour.models.dataset.aces_rgb module objects have been conformed to latest ACES 1.0 specification and naming convention, thus it is highly recommended to study the module and the references: (@kelsolaar)
    • Name: colour.models.dataset.aces
  • colour.models.dataset.dci_p3.DCI_P3_COLOURSPACE now uses CIE D Series Illuminant D63 whitepoint.
  • colour.models.dataset.s-log.S_LOG_COLOURSPACE: (@kelsolaar)
    • Name: colour.models.dataset.s-gamut.S_GAMUT_COLOURSPACE
  • colour.models.dataset.c-log: (@kelsolaar)
    • Remove

colour.optimal

  • colour.optimal: (@kelsolaar)
    • Name: colour.volume

v0.3.1

9 years ago

Colour 0.3.1 - Alpha Milestone

Features

  • Add utilities/references_scraping.py utility module. (@kelsolaar)

Fixes

colour.models

  • Update "Rec. 2020" reference link. (@kelsolaar)

Changes

  • Update various references with DOI. (@kelsolaar)