Skip to content

@KelSolaar KelSolaar released this Jan 25, 2020 · 145 commits to develop since this release

Colour 0.3.15 - Alpha Milestone

Features

colour.colorimetry

  • The typical CIE LED illuminants spectral power distributions and chromaticity coordinates have been added to the datasets: (@KelSolaar)

    • LED-B1
    • LED-B2
    • LED-B3
    • LED-B4
    • LED-B5
    • LED-BH1
    • LED-RGB1
    • LED-V1
    • LED-V2
      image
  • The recommended indoor illuminants ID65 and ID50 spectral power distributions and chromaticity coordinates have been added to the datasets. (@KelSolaar)
    image

  • Add colour.colorimetry.sds_and_multi_sds_to_multi_sds definition that converts given spectral and multi-spectral distributions to multi-spectral distributions. (@KelSolaar)

colour.models

colour.plotting

  • Importing colour is enough to be able to plot in-place of importing colour.plotting: (@KelSolaar)
>>> import colour
>>> colour.plotting.plot_image
<function plot_image at 0x11e6e47a0>

colour.quality

Fixes

colour

Various fixes have been implemented to ensure compatibility with Python 3.8 and Numpy 1.18. (@KelSolaar, @MaxSchambach, @mzszym)

Class methods were missing documentation as a consequence of adopting the new documentation build process, this has been addressed accordingly.

colour.io

colour.notation

  • Fix incorrect Domain-Range scale in Munsell Renotation System implementation. (@KelSolaar)

colour.temperature

  • colour.temperature.CCT_to_uv_Krystek1985 definition was incorrectly implemented. Incorrect reading of the reference publications ended up with exponentiations being different, e.g. 10**4 was replaced with 10e4. (@OlliNiemitalo)

Changes

colour.algebra

  • colour.algebra.cartesian_to_spherical and colour.algebra.spherical_to_cartesian use ISO conversion convention. ρ is in range [0, +inf], θ is in range [0, pi] radians, i.e. [0, 180] degrees, and φ is in range [-pi, pi] radians, i.e. [-180, 180] degrees.

colour.volume

  • colour.is_within_visible_spectrum: (@KelSolaar)
    • Signature: XYZ_outer_surface(XYZ, cmfs=STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'].clone().align(DEFAULT_SPECTRAL_SHAPE_XYZ_OUTER_SURFACE), illuminant=sd_ones(DEFAULT_SPECTRAL_SHAPE_XYZ_OUTER_SURFACE), tolerance=None, **kwargs)
  • colour.volume.XYZ_outer_surface: (@KelSolaar)
    • Signature: XYZ_outer_surface(cmfs=STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'].clone().align(DEFAULT_SPECTRAL_SHAPE_XYZ_OUTER_SURFACE), illuminant=sd_ones(DEFAULT_SPECTRAL_SHAPE_XYZ_OUTER_SURFACE), **kwargs)
    • Implementation: The generated CIE XYZ tristimulus values are not normalised anymore, this will only affect computation if a different illuminant than CIE Illuminant E is chosen.

colour.plotting

  • colour.plotting.common.wrap_title: (@KelSolaar)
    • Remove
Assets 2

@KelSolaar KelSolaar released this Oct 26, 2019 · 235 commits to develop since this release

Colour 0.3.14 - Alpha Milestone

We would like to thanks all the contributors as usual!

With this release we are getting close to have a beta candidate in the coming months. It will likely be the last version to support Python 2.x.

NumFOCUS

Colour is now a NumFOCUS affiliated project:

image

Hacktoberfest - 2019

We had a few new contributors for the 2019 edition of the Hacktoberfest. Thanks to @Chinmayrane16, @evalevanto, @feralpoosum, @BPearlstine and, @pavithraes for their contributions!

Automatic Colour Conversion Graph

Colour now implements an automatic colour conversion graph based on NetworkX and enabling easier colour conversions:

>>> sd = colour.COLOURCHECKERS_SDS['ColorChecker N Ohta']['dark skin']
>>> convert(sd, 'Spectral Distribution', 'sRGB', verbose={'mode': 'Short'})

Image Input and Output

Imageio is now a requirement for reading and writing images, it will be used if OpenImageIO is not available. If you wish to read OpenEXR files or develop Colour, you will need to install the FreeImage plugin as follows:

$ python -c "import imageio;imageio.plugins.freeimage.download()"

Support for OpenImageIO 2.x has also been implemented.

Name and Signature Changes

Various colour component transfer functions objects have been either renamed or their signature changed, most notably the sRGB transfer functions and the colour.oetf definition.

All the reverse words have been replaced with inverse in object names, file names and, docstrings.

Coverage

Coverage was raised to 100%. It does not mean that all the possible code paths are covered but it certainly strengthen the API.

Dependency Management

We have adopted Poetry to manage the development dependencies, the setup.py file has been replaced with a standardized pyproject.toml file.

Continuous Integration

Travis-ci and Azure Pipelines have been replaced with Github Actions.

Documentation

The README and the Manual have been slightly reorganised to create a better separation between the tutorials, API reference and, the new How-To Guide.

Features

colour.colorimetry

  • Add colour.sds_and_multi_sds_to_sds definition that converts given spectral and multi-spectral distributions to a flat list of spectral distributions. (@KelSolaar)
  • Implement support for ICC D50 illuminant computed from the following CIE XYZ tristimulus values [96.42, 100.00, 82.49]. (@KelSolaar)
  • Add colour.colorimetry.multi_sds_to_XYZ_ASTME308 definition that converts given multi-spectral distributions to CIE XYZ tristimulus values according to to practise ASTM E308-15 method. (@KelSolaar)
  • Implement support for ICC D50 illuminant computed from the following CIE XYZ tristimulus values [96.42, 100.00, 82.49]. (@KelSolaar)

colour.corresponding

  • colour.corresponding_chromaticities_prediction definition can now use a colour.CorrespondingColourDataset class instance as argument. (@KelSolaar)

colour.io

  • The colour.read_image and colour.write_image definitions support Imageio and will fallback to it if OpenImageIO is not available.
  • OpenImageIO 2.x is now supported.

colour.graph

  • The new colour.convert definition leverages an automatic colour conversion graph enabling easier colour conversions:
>>> sd = colour.COLOURCHECKERS_SDS['ColorChecker N Ohta']['dark skin']
>>> convert(sd, 'Spectral Distribution', 'sRGB', verbose={'mode': 'Short'})
===============================================================================
*                                                                             *
*   [ Conversion Path ]                                                       *
*                                                                             *
*   "sd_to_XYZ" --> "XYZ_to_sRGB"                                             *
*                                                                             *
===============================================================================
array([ 0.45675795,  0.30986982,  0.24861924])
>>> illuminant = colour.ILLUMINANTS_SDS['FL2']
>>> convert(sd, 'Spectral Distribution', 'sRGB', sd_to_XYZ={'illuminant': illuminant})
array([ 0.47924575,  0.31676968,  0.17362725])

image

colour.models

  • Implement support for Recommendation ITU-R BT.2100-2 with the modified black lift handling of HLG EOTF. (@KelSolaar, @nick-shaw)
  • Implement support for Fujifilm F-Gamut RGB colourspace with colour.models.F_GAMUT_COLOURSPACE class and Fujifilm F-Log with colour.models.log_encoding_FLog and colour.models.log_decoding_FLog transfer functions. (@sobotka, @KelSolaar, @nick-shaw)
  • Re-implement support for SMPTE C RGB colourspace with colour.models.SMPTE_C_COLOURSPACE class and related NTSC (1987) RGB colourspace with colour.models.NTSC_1987_COLOURSPACE class. (@KelSolaar)

colour.plotting

  • Add colour.plotting.plot_constant_hue_loci definition plotting Constant Hue Loci as given by Hung and Berns (1995) or Ebner and Fairchild (1998). It is intended to be used with Colour - Datasets as follows:
from colour_datasets import load
from colour.plotting import plot_constant_hue_loci

plot_constant_hue_loci(load('3362536'), 'IPT')

image

colour.temperature

  • Add various optimization based correlated colour temperature computation definitions: (@KelSolaar)
    • colour.temperature.xy_to_CCT_CIE_D
    • colour.temperature.CCT_to_xy_Hernandez1999, this definition is not a bijective function and might produce unexpected results. It is given for consistency with other correlated colour temperature computation methods but should be avoided for practical applications.
    • colour.temperature.xy_to_CCT_Kang2002
    • colour.temperature.uv_to_CCT_Krystek1985
    • colour.temperature.CCT_to_xy_McCamy1992, this definition is not a bijective function and might produce unexpected results. It is given for consistency with other correlated colour temperature computation methods but should be avoided for practical applications.

Fixes

colour.quality

  • The individual colour scales returned by colour.colour_quality_scale definition when using the additional_data argument were incorrectly scaled and have been fixed. (@KelSolaar)

Changes

colour.adaptation

  • colour.adaptation.chromatic_adaptation_reverse_CMCCAT2000: (@KelSolaar)
    • Name: chromatic_adaptation_inverse_CMCCAT2000

colour.appearance

  • yield based tests dependent on nosetests have been replaced. (@MichaelMauderer)

colour.characterisation

  • The following colour checkers now use ICC D50 illuminant instead of D50: (@KelSolaar)
    • ColorChecker 2005
    • BabelColor Average
    • ColorChecker24 - Before November 2014
    • ColorChecker24 - After November 2014

colour.colorimetry

  • colour.ASTME30815_PRACTISE_SHAPE: (@KelSolaar)
    • Name: ASTME308_PRACTISE_SHAPE
  • colour.MultiSpectralDistribution: (@KelSolaar)
    • Name: MultiSpectralDistributions
  • colour.multi_sds_to_XYZ: (@KelSolaar)
    • Signature: multi_sds_to_XYZ(msds, cmfs=STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'].copy().trim(DEFAULT_SPECTRAL_SHAPE), illuminant=sd_ones(), k=None, method='ASTM E308-15', **kwargs)
  • colour.colorimetry.multi_sds_to_XYZ_integration: (@KelSolaar)
    • Signature: multi_sds_to_XYZ_integration(msds, cmfs=STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer']. copy().trim(DEFAULT_SPECTRAL_SHAPE), illuminant=sd_ones(), k=None, shape=DEFAULT_SPECTRAL_SHAPE)
  • colour.colorimetry.adjust_tristimulus_weighting_factors_ASTME30815: (@KelSolaar)
    • Name: adjust_tristimulus_weighting_factors_ASTME308
  • colour.colorimetry.lagrange_coefficients_ASTME202211: (@KelSolaar)
    • Name: lagrange_coefficients_ASTME2022
  • colour.colorimetry.luminance_ASTMD153508: (@KelSolaar)
    • Name: luminance_ASTMD1535
  • colour.colorimetry.sd_to_XYZ_ASTME30815: (@KelSolaar)
    • Name: sd_to_XYZ_ASTME308
  • colour.colorimetry.sd_to_XYZ_tristimulus_weighting_factors_ASTME30815: (@KelSolaar)
    • Name: sd_to_XYZ_tristimulus_weighting_factors_ASTME308
  • colour.colorimetry.tristimulus_weighting_factors_ASTME202211: (@KelSolaar)
    • Name: tristimulus_weighting_factors_ASTME2022

colour.continuous

  • colour.continuous.MultiSignal: (@KelSolaar)
    • Name: MultiSignals

colour.io

  • colour.read_image: (@KelSolaar)
    • Signature: read_image(path, method='OpenImageIO', **kwargs)
  • colour.write_image: (@KelSolaar)
    • Signature: write_image(image, path, method='OpenImageIO', **kwargs)

colour.models

  • Various CCTF related objects, signatures and properties have been renamed for consistency purposes:
  • colour.ENCODING_CCTFS: (@KelSolaar)
    • Name: CCTF_ENCODINGS
  • colour.encoding_cctf: (@KelSolaar)
    • Name: cctf_encoding
  • colour.DECODING_CCTFS: (@KelSolaar)
    • Name: CCTF_DECODINGS
  • colour.decoding_cctf: (@KelSolaar)
    • Name: cctf_decoding
  • colour.RGB_Colourspace.encoding_cctf: (@KelSolaar)
    • Name: cctf_encoding
  • colour.RGB_Colourspace.decoding_cctf: (@KelSolaar)
    • Name: decoding_cctf
  • colour.XYZ_to_RGB: (@KelSolaar)
    • Signature: XYZ_to_RGB(XYZ, illuminant_XYZ, illuminant_RGB, XYZ_to_RGB_matrix, chromatic_adaptation_transform='CAT02', cctf_encoding=None, **kwargs)
  • colour.XYZ_to_RGB: (@KelSolaar)
    • Signature: RGB_to_XYZ(RGB, illuminant_RGB, illuminant_XYZ, RGB_to_XYZ_matrix, chromatic_adaptation_transform='CAT02', cctf_decoding=None, **kwargs)
  • colour.XYZ_to_sRGB: (@KelSolaar)
    • Signature: XYZ_to_sRGB(XYZ, illuminant=ILLUMINANTS['CIE 1931 2 Degree Standard Observer']['D65'], chromatic_adaptation_transform='CAT02', apply_cctf_encoding=True, **kwargs)
  • colour.XYZ_to_sRGB: (@KelSolaar)
    • Signature: sRGB_to_XYZ(RGB, illuminant=ILLUMINANTS['CIE 1931 2 Degree Standard Observer']['D65'], chromatic_adaptation_method='CAT02', apply_cctf_decoding=True, **kwargs)

The colour.RGB_to_RGB definition now accepts keyword arguments, they are filtered and passed accordingly to the decoding and encoding colour component transfer functions:

  • colour.RGB_to_RGB: (@KelSolaar)

    • Signature: RGB_to_RGB(RGB, input_colourspace, output_colourspace, chromatic_adaptation_transform='CAT02', apply_decoding_cctf=False, apply_encoding_cctf=False, **kwargs)
  • Various log related objects and signatures have been renamed for consistency purposes:

  • colour.log_decoding_curve: (@KelSolaar)

    • Name: colour.log_decoding
    • Signature: log_decoding(value, function='Cineon', **kwargs)
  • colour.LOG_DECODING_CURVES: (@KelSolaar)

    • Name: colour.LOG_DECODINGS
  • colour.log_encoding_curve: (@KelSolaar)

    • Name: colour.log_encoding
    • Signature: log_encoding(value, function='Cineon', **kwargs)
  • colour.LOG_ENCODING_CURVES: (@KelSolaar)

    • Name: colour.LOG_ENCODINGS

The IEC 61966-2-1:1999 standard does not actually define an OETF but and EOTF so the sRGB related definitions have been renamed accordingly:

  • colour.models.oetf_sRGB: (@KelSolaar)
    • Name: eotf_inverse_sRGB
  • colour.models.oetf_reverse_sRGB: (@KelSolaar)
    • Name: eotf_sRGB

Various other colour component transfer functions objects have been either renamed or their signature changed:

  • colour.eotf: (@KelSolaar)

    • Signature: eotf(value, function='ITU-R BT.1886', **kwargs)
  • colour.EOTFS_REVERSE: (@KelSolaar)

    • Name: EOTF_INVERSES
  • colour.eotf_reverse: (@KelSolaar)

    • Signature: eotf_inverse(value, function='ITU-R BT.1886', **kwargs)
  • colour.oetf: (@KelSolaar)

    • Signature: oetf(value, function='ITU-R BT.709', **kwargs)
  • colour.OETFS_REVERSE: (@KelSolaar)

    • Name: OETF_INVERSES
  • colour.oetf_reverse: (@KelSolaar)

    • Signature: oetf_inverse(value, function='ITU-R BT.709', **kwargs)
  • colour.OOTFS_REVERSE: (@KelSolaar)

    • Name: OOTF_INVERSES
  • colour.models.oetf_DICOMGSDF: (@KelSolaar)

    • Name: eotf_inverse_DICOMGSDF
  • colour.models.eotf_reverse_BT1886: (@KelSolaar)

    • Name: eotf_inverse_BT1886
  • colour.models.eotf_reverse_DCDM: (@KelSolaar)

    • Name: eotf_inverse_DCDM
  • colour.models.oetf_ST2084: (@KelSolaar)

    • Name: eotf_inverse_ST2084
  • colour.models.oetf_reverse_ARIBSTDB67: (@KelSolaar)

    • Name: oetf_inverse_ARIBSTDB67
  • colour.models.oetf_reverse_BT601: (@KelSolaar)

    • Name: oetf_inverse_BT601
  • colour.models.oetf_reverse_BT709: (@KelSolaar)

    • Name: oetf_inverse_BT709
  • colour.models.oetf_BT2100_HLG: (@KelSolaar, @nick-shaw)

    • Name: oetf_HLG_BT2100
    • Signature: oetf_HLG_BT2100(E, constants=BT2100_HLG_CONSTANTS)
  • colour.models.oetf_reverse_BT2100_HLG: (@KelSolaar, @nick-shaw)

    • Name: oetf_inverse_HLG_BT2100
    • Signature: oetf_inverse_HLG_BT2100(E_p, constants=BT2100_HLG_CONSTANTS)
  • colour.models.eotf_BT2100_HLG: (@KelSolaar, @nick-shaw)

    • Name: eotf_HLG_BT2100
    • Signature: eotf_HLG_BT2100(E_p, L_B=0, L_W=1000, gamma=None, constants=BT2100_HLG_CONSTANTS, method='ITU-R BT.2100-2')
  • colour.models.eotf_reverse_BT2100_HLG: (@KelSolaar, @nick-shaw)

    • Name: eotf_inverse_HLG_BT2100
    • Signature: eotf_inverse_HLG_BT2100(F_D, L_B=0, L_W=1000, gamma=None, constants=BT2100_HLG_CONSTANTS, method='ITU-R BT.2100-2')
  • colour.models.ootf_BT2100_HLG: (@KelSolaar, @nick-shaw)

    • Name: ootf_HLG_BT2100
    • Signature: ootf_HLG_BT2100(E, L_B=0, L_W=1000, gamma=None, method='ITU-R BT.2100-2')
  • colour.models.ootf_reverse_BT2100_HLG: (@KelSolaar, @nick-shaw)

    • Name: ootf_inverse_HLG_BT2100
    • Signature: ootf_inverse_HLG_BT2100(F_D, L_B=0, gamma=None, method='ITU-R BT.2100-2')
  • colour.models.oetf_BT2100_PQ: (@KelSolaar, @nick-shaw)

    • Name: oetf_PQ_BT2100
  • colour.models.oetf_reverse_BT2100_PQ: (@KelSolaar, @nick-shaw)

    • Name: oetf_inverse_PQ_BT2100
  • colour.models.eotf_BT2100_PQ: (@KelSolaar, @nick-shaw)

    • Name: eotf_PQ_BT2100
  • colour.models.eotf_reverse_BT2100_PQ: (@KelSolaar, @nick-shaw)

    • Name: eotf_inverse_PQ_BT2100
  • colour.models.ootf_BT2100_PQ: (@KelSolaar, @nick-shaw)

    • Name: ootf_PQ_BT2100
  • colour.models.ootf_reverse_BT2100_PQ: (@KelSolaar, @nick-shaw)

    • Name: ootf_inverse_PQ_BT2100
  • colour.models.log_encoding_Log3G10: (@KelSolaar)

    • Signature: log_encoding_Log3G10(x, method='v2', **kwargs)
  • colour.models.log_decoding_Log3G10: (@KelSolaar)

    • Signature: log_decoding_Log3G10(y, method='v2', **kwargs)
  • colour.models.log_encoding_CanonLog: (@KelSolaar, @nick-shaw, @KevinJW)

    • Signature: log_encoding_CanonLog(x, bit_depth=10, out_normalised_code_value=True, in_reflection=True, **kwargs)
  • colour.models.log_decoding_CanonLog: (@KelSolaar, @nick-shaw, @KevinJW)

    • Signature: log_decoding_CanonLog(clog, bit_depth=10, in_normalised_code_value=True, out_reflection=True, **kwargs)
  • colour.models.log_encoding_CanonLog2: (@KelSolaar, @nick-shaw, @KevinJW)

    • Signature: log_encoding_CanonLog2(x, bit_depth=10, out_normalised_code_value=True, in_reflection=True, **kwargs)
  • colour.models.log_decoding_CanonLog2: (@KelSolaar, @nick-shaw, @KevinJW)

    • Signature: log_decoding_CanonLog2(clog2, bit_depth=10, in_normalised_code_value=True, out_reflection=True, **kwargs)
  • colour.models.log_encoding_CanonLog3: (@KelSolaar, @nick-shaw, @KevinJW)

    • Signature: log_encoding_CanonLog3(x, bit_depth=10, out_normalised_code_value=True, in_reflection=True, **kwargs)
  • colour.models.log_decoding_CanonLog3: (@KelSolaar, @nick-shaw, @KevinJW)

    • Signature: log_decoding_CanonLog3(clog3, bit_depth=10, in_normalised_code_value=True, out_reflection=True, **kwargs)
  • colour.models.log_encoding_VLog: (@KelSolaar, @nick-shaw, @KevinJW)

    • Signature: log_encoding_VLog(L_in, bit_depth=10, out_normalised_code_value=True, in_reflection=True, constants=VLOG_CONSTANTS, **kwargs)
  • colour.models.log_decoding_VLog: (@KelSolaar, @nick-shaw, @KevinJW)

    • Signature: log_decoding_VLog(V_out, bit_depth=10, in_normalised_code_value=True, out_reflection=True, constants=VLOG_CONSTANTS, **kwargs)
  • colour.models.log_encoding_SLog: (@KelSolaar, @nick-shaw, @KevinJW)

    • Signature: log_encoding_SLog(x, bit_depth=10, out_normalised_code_value=True, in_reflection=True, **kwargs)
  • colour.models.log_decoding_SLog: (@KelSolaar, @nick-shaw, @KevinJW)

    • Signature: log_decoding_SLog(y, bit_depth=10, in_normalised_code_value=True, out_reflection=True, **kwargs)
  • colour.models.log_encoding_SLog2: (@KelSolaar, @nick-shaw, @KevinJW)

    • Signature: log_encoding_SLog2(x, bit_depth=10, out_normalised_code_value=True, in_reflection=True, **kwargs)
  • colour.models.log_decoding_SLog2: (@KelSolaar, @nick-shaw, @KevinJW)

    • Signature: log_decoding_SLog2(y, bit_depth=10, in_normalised_code_value=True, out_reflection=True, **kwargs)
  • colour.models.log_encoding_SLog3: (@KelSolaar, @nick-shaw, @KevinJW)

    • Signature: log_encoding_SLog3(x, bit_depth=10, out_normalised_code_value=True, in_reflection=True, **kwargs)
  • colour.models.log_decoding_SLog3: (@KelSolaar, @nick-shaw, @KevinJW)

    • Signature: log_decoding_SLog3(y, bit_depth=10, in_normalised_code_value=True, out_reflection=True, **kwargs)
  • colour.models.oetf_ROMMRGB: (@KelSolaar)

    • Name: cctf_encoding_ROMMRGB
  • colour.models.eotf_ROMMRGB: (@KelSolaar)

    • Name: cctf_decoding_ROMMRGB
  • colour.models.oetf_ProPhotoRGB: (@KelSolaar)

    • Name: cctf_encoding_ProPhotoRGB
  • colour.models.eotf_ProPhotoRGB: (@KelSolaar)

    • Name: cctf_decoding_ProPhotoRGB
  • colour.models.oetf_RIMMRGB: (@KelSolaar)

    • Name: cctf_encoding_RIMMRGB
  • colour.models.eotf_RIMMRGB: (@KelSolaar)

    • Name: cctf_decoding_RIMMRGB
  • colour.models.XYZ_to_colourspace_model: (@feralpoosum)

    • Deprecated
  • colour.models.NTSC_COLOURSPACE: (@KelSolaar)

    • Name: NTSC_1953_COLOURSPACE

colour.notation

  • colour.notation.munsell_value_ASTMD153508: (@KelSolaar)
    • Name: munsell_value_ASTMD1535

colour.plotting

  • colour.plotting.ASTM_G_173_DIRECT_CIRCUMSOLAR: (@KelSolaar)
    • Name: ASTMG173_DIRECT_CIRCUMSOLAR
  • colour.plotting.ASTM_G_173_ETR: (@KelSolaar)
    • Name: ASTMG173_ETR
  • colour.plotting.ASTM_G_173_GLOBAL_TILT: (@KelSolaar)
    • Name: ASTMG173_GLOBAL_TILT
  • colour.plotting.plot_single_sd_colour_quality_scale_bars: (@KelSolaar)
    • Signature: plot_single_sd_colour_quality_scale_bars(sd, method='NIST CQS 9.0', **kwargs)
  • colour.plotting.plot_multi_sds_colour_quality_scales_bars: (@KelSolaar)
    • Signature: plot_multi_sds_colour_quality_scales_bars(sds, method='NIST CQS 9.0', **kwargs)
  • colour.plotting.plot_planckian_locus_in_chromaticity_diagram_CIE1931: (@KelSolaar)
    • Signature: plot_planckian_locus_in_chromaticity_diagram_CIE1931(illuminants=None, annotate_parameters=None, chromaticity_diagram_callable_CIE1931=plot_chromaticity_diagram_CIE1931, planckian_locus_callable_CIE1931=plot_planckian_locus_CIE1931, **kwargs)
  • colour.plotting.plot_planckian_locus_in_chromaticity_diagram_CIE1960UCS: (@KelSolaar)
    • Signature: plot_planckian_locus_in_chromaticity_diagram_CIE1960UCS(illuminants=None, annotate_parameters=None, chromaticity_diagram_callable_CIE1960UCS=plot_chromaticity_diagram_CIE1960UCS, planckian_locus_callable_CIE1960UCS=plot_planckian_locus_CIE1960UCS, **kwargs)

colour.recovery

  • colour.recovery.XYZ_to_sd_Meng2015: (@KelSolaar)
    • Signature: XYZ_to_sd_Meng2015(XYZ, cmfs=STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'].copy().align(DEFAULT_SPECTRAL_SHAPE_MENG_2015), illuminant=sd_ones(DEFAULT_SPECTRAL_SHAPE_MENG_2015), optimisation_parameters=None)

colour.temperature

  • colour.xy_to_CCT: (@KelSolaar)
    • Signature: xy_to_CCT(xy, method='CIE Illuminant D Series')
  • colour.CCT_to_xy: (@KelSolaar)
    • Signature: CCT_to_xy(CCT, method='CIE Illuminant D Series')
Assets 2

@KelSolaar KelSolaar released this Oct 13, 2019 · 545 commits to develop since this release

Colour 0.3.13 - Alpha Milestone

This is mainly a maintenance release addressing regressions introduced in CIECAM02 and CAM16 implementations by Colour 0.3.12.

Features

colour.quality

  • Add colour.uv_to_Luv and colour.uv_to_UCS conversion definitions. (@KelSolaar)

colour.quality

  • Implement support for colour quality scale computation using NIST CQS 9.0 method based on the latest available spreadsheet from Yoshi Ohno. The results are typically very close to NIST CQS 7.4 method. The colour.COLOUR_QUALITY_SCALE_METHODS attribute was added to enumerate the available methods. (@KelSolaar)

colour.utilities

  • Implement colour.utilities.multiprocessing_pool context manager to support domain-range scale propagation when multiprocessing code on Windows. (@KelSolaar)

Fixes

colour.appearance

Changes

colour.colorimetry

  • colour.whiteness: (@KelSolaar)
    • Signature: whiteness(XYZ, XYZ_0, method='CIE 2004', **kwargs)

colour.notation

  • The colour.notation.munsell_specification_to_xyY, colour.notation.xyY_to_munsell_specification, colour.munsell_colour_to_xyY and colour.xyY_to_munsell_colour definitions have been updated to support n-dimensional arrays. (@KelSolaar)

colour.plotting

  • colour.plotting.plot_single_sd: (@KelSolaar)
    • Signature: plot_single_sd(sd, cmfs='CIE 1931 2 Degree Standard Observer', out_of_gamut_clipping=True, modulate_colours_with_sd_amplitude=False, equalize_sd_amplitude=False, **kwargs)
  • colour.plotting.plot_single_sd_colour_quality_scale_bars: (@KelSolaar)
    • Signature: plot_single_sd_colour_quality_scale_bars(sd, method='NIST CQS 7.4', **kwargs)
  • colour.plotting.plot_multi_sds_colour_quality_scales_bars: (@KelSolaar)
    • Signature: plot_multi_sds_colour_quality_scales_bars(sds, method='NIST CQS 7.4', **kwargs)

colour.quality

  • colour.colour_quality_scale: (@KelSolaar)
    • Signature: colour_quality_scale(sd_test, additional_data=False, method='NIST CQS 9.0')

colour.temperature

  • The colour.cct.uv_to_CCT_Ohno2013, colour.cct.CCT_to_uv_Ohno2013, colour.cct.uv_to_CCT_Robertson1968, colour.cct.CCT_to_uv_Robertson1968, colour.CCT_to_uv and colour.uv_to_CCT definitions have been updated to support n-dimensional arrays. The D_uv argument is now required to be passed horizontally stacked with the CCT argument. (@KelSolaar)

Colour 0.3.12

>>> CCT, D_uv = 6503.49254150, 0.00320598
>>> colour.CCT_to_uv(CCT, D_uv=D_uv)
>>> colour.temperature.CCT_to_uv_Ohno2013(CCT, D_uv)

Colour 0.3.13

>>> CCT_D_uv = [6503.49254150, 0.00320598]
>>> colour.CCT_to_uv(CCT_D_uv, cmfs=cmfs)
>>> colour.temperature.CCT_to_uv_Ohno2013(CCT_D_uv)
  • colour.temperature.CCT_to_uv_Ohno2013: (@KelSolaar)
    • Signature: `CCT_to_uv_Ohno2013(CCT_D_uv, cmfs=STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'])
  • colour.temperature.CCT_to_uv_Robertson1968: (@KelSolaar)
    • Signature: `CCT_to_uv_Robertson1968(CCT_D_uv)

colour.volume

  • colour.RGB_colourspace_volume_MonteCarlo: (@KelSolaar)
    • Signature: RGB_colourspace_volume_MonteCarlo(colourspace, samples=10e6, limits=np.array([[0, 100], [-150, 150], [-150, 150]], dtype=np.float), illuminant_Lab=ILLUMINANTS['CIE 1931 2 Degree Standard Observer']['D65'], chromatic_adaptation_method='CAT02', random_generator=random_triplet_generator, random_state=None)
Assets 2

@KelSolaar KelSolaar released this Mar 24, 2019 · 605 commits to develop since this release

Colour 0.3.12 - Alpha Milestone

Another important 700+ commits step on The Road to Stable!

This release was severely delayed because of the involvement of some of us in the authoring of the upcoming Cinematic Color update. Colouris used to produce an important amount of figures in this work and it was important to improve the plotting capabilities.

Plotting Package Overhaul

The colour.plotting sub-package was extensively overhauled. It is less opinionated and more flexible. The plotting definitions have been renamed and start with plot_, they return the figure and axes instances. The Cinematic Color 2 - Figures Google Colab document is a good example highlighting the greatest and latest changes and capabilities.

Default to CIE Standard Illuminant D Series D65

The CIE Standard Illuminant D Series D65 was made the default illuminant in places where CIE Illuminant D Series D50 was used as the default argument.

A few reasons for this choice, first D65 is a Standard CIE illuminant along with A, second Colour is used mainly in computer graphics thus it makes sense to adopt D65 where it is ubiquitous, and, finally, it brings consistency across the API while preventing some errors from users with less expertise in the field.

Domain-Range Scales

The colour science field adopts many input domains and output ranges. Those are challenging when designing an API. Picking a unique domain-range scale over an other has caused surprise and grief to practitioners of different industries in other software.

Colour has always used the domain-range scales of the publications it implements while recognizing the need for a unique domain-range scale. The API can be switched to use a soft normalised scale to domain-range [0, 1] using the colour.set_domain_range_scale definition and the colour.domain_range_scale context manager. More information about Domain-Range Scales is available in the documentation.

Look-Up-Tables IO

With this release, Colour is now able to read and write Look-Up-Tables (LUTs) of various dimensions, i.e. LUT1D, LUT3x1D, LUT3D and LUT Sequences.

Polynomial Colour Correction

Polynomial colour correction was added, it is a useful tool to correct for non-linearity of data, for example, film stocks colours. With great powers come great responsibilities and polynomials will eventually alter significantly
colour data that is not present in the original fitting set.

Windows and macOs CI

Support for Azure Pipelines was added by @MichaelMauderer giving for the first time continuous integration on macOS and Windows, a few Windows related issues were addressed.

Contrast Sensitivity Function

The Barten (1999) contrast sensitivity function was implemented and can be used to estimate ideal code values as a function of viewing conditions.

Miscellaneous

The power word and abbreviation has been removed from all the spectral distribution related objects. Likewise, the word spectral has been removed from all the related objects and replaced with sd.

The built documentation has been removed from the PyPi package to reduce the size of the downloads.

Features

colour.algebra

  • Implement support for safe and symmetrical power with colour.algebra.spow definition and the related colour.algebra.is_spow_enabled, colour.algebra.set_spow_enable and colour.algebra.spow_enable definitions. (@KelSolaar)

  • Implement colour.NearestNeighbourInterpolator interpolator class. (@KelSolaar)

  • Implement support for various ellipse related geometrical definitions: (@KelSolaar)

    • colour.algebra.ellipse_coefficients_general_form
    • colour.algebra.ellipse_coefficients_canonical_form
    • colour.algebra.point_at_angle_on_ellipse
    • colour.algebra.ellipse_fitting_Halir1998
    • colour.algebra.ELLIPSE_FITTING_METHODS
    • colour.algebra.ellipse_fitting

colour.characterisation

  • Implement support for Cheung et al. (2004), Finlayson et al. (2015) and Vandermonde polynomial colour correction with colour.polynomial_expansion, colour.colour_correction_matrix, and colour.colour_correction definitions wrapping the following objects: (@KelSolaar)
    • Cheung et al. (2004) : colour.characterisation.augmented_matrix_Cheung2004,
      colour.characterisation.colour_correction_matrix_Cheung2004 and
      colour.characterisation.colour_correction_Cheung2004 definitions.
    • Finlayson et al. (2015) : colour.characterisation.augmented_matrix_Finlayson2015,
      colour.characterisation.colour_correction_matrix_Finlayson2015 and
      colour.characterisation.colour_correction_Finlayson2015 definitions.
    • Vandermonde : colour.characterisation.augmented_matrix_Vandermonde,
      colour.characterisation.colour_correction_matrix_Vandermonde and
      colour.characterisation.colour_correction_Vandermonde definitions.
  • Add X-Rite new ColourChecker data from prior and after November 2014 in colour.COLOURCHECKERS attribute and available with the following keys:
    • ColorChecker24 - Before November 2014
    • ColorChecker24 - After November 2014

colour.blindness

  • Implement support for Machado et al. (2009) colour vision deficiency model with colour.anomalous_trichromacy_cmfs_Machado2009, colour.anomalous_trichromacy_matrix_Machado2009 and colour.cvd_matrix_Machado2009 definitions. (@KelSolaar, @MichaelMauderer)

colour.colorimetry

  • Implement support for multi-spectral distribution array conversion to CIE XYZ tristimulus values with colour.multi_sds_to_XYZ definition. (@KelSolaar)
    It ultimately allows conversion of multi-spectral images to RGB, as an example here is the RIT MetaCow converted to sRGB:

image

  • Add colour.MultiSpectralDistribution.signal_type property and colour.MultiSpectralDistribution.to_sds method. (@KelSolaar)
  • Implement support for gaussian spectral distributions generation and single and multi LED spectral distributions generation according to Ohno (2005) method with the following objects: (@KelSolaar)
    • colour.SD_GAUSSIAN_METHODS
    • colour.sd_gaussian
    • colour.colorimetry.sd_single_led_Ohno2005
    • colour.SD_SINGLE_LED_METHODS
    • colour.sd_single_led
    • colour.colorimetry.sd_multi_leds_Ohno2005
    • colour.SD_MULTI_LEDS_METHODS
    • colour.sd_multi_leds
  • Add colour.colorimetry.daylight_locus_function definition computing the the Daylight Locus chromaticity coordinate y_D for given chromaticity coordinate x_D. (@KelSolaar)

colour.contrast

  • Implement support for Barten (1999) contrast sensitivity function (CSF) with colour.contrast.contrast_sensitivity_function_Barten1999 definition and the colour.contrast_sensitivity_function high-level definition wrapper. (@KelSolaar)

image
Computing the minimum detectable contrast with the assumed conditions for UHDTV applications as given in ITU-R BT.2246-4 Figure 31 and using Barten (1999) method.

colour.difference

  • Implement support for DIN99 colour difference formula with colour.difference.delta_E_DIN99 definition.
    (@KelSolaar, @MichaelMauderer)

colour.io

  • Implement support for reading and writing 1D, 3x1D and 3D LUTs with the colour.read_LUT and colour.write_LUT definitions. (@nick-shaw, @KelSolaar)

The following LUT formats are currently available:

- *Cinespace*: `colour.io.read_LUT_Cinespace` and `colour.io.write_LUT_Cinespace` definitions.
- *Iridas*: `colour.io.read_LUT_IridasCube` and `colour.io.write_LUT_IridasCube` definitions.
- *Resolve*: `colour.io.read_LUT_ResolveCube` and `colour.io.write_LUT_ResolveCube` definitions.
- *Sony SPI 1D*: `colour.io.read_LUT_SonySPI1D` and `colour.io.write_LUT_SonySPI1D` definitions.
- *Sony SPI 3D*: `colour.io.read_LUT_SonySPI3D` and `colour.io.write_LUT_SonySPI3D` definitions.
  • Implement support for writing image attributes using the colour.io.ImageAttribute_Specification class:
    (@KelSolaar)
import numpy as np

import colour

compression = colour.io.ImageAttribute_Specification('Compression', 'none')

colour.write_image(np.ones((32, 32, 3)), 'compression_rle.tif')
colour.write_image(np.ones((32, 32, 3)), 'compression_none.tif',
                   attributes=[compression])

colour.models

  • Implement support for Safdar et al. (2017) JzAzBz colourspace with colour.XYZ_to_JzAzBz and colour.JzAzBz_to_XYZ definitions. (@KelSolaar)
  • Implement support for YCoCg colour encoding with colour.RGB_to_YCoCg and colour.YCoCg_to_RGB definitions. (@KelSolaar)
  • Implement colour.ENCODING_CCTFS and colour.DECODING_CCTFS attributes and colour.encoding_cctf and colour.decoding_cctf definitions: they are convenient collections around the following transfer function objects: (@KelSolaar)
    • colour.ENCODING_CCTFS and colour.encoding_cctf:
      • colour.LOG_ENCODING_CURVES
      • colour.OETFS
      • colour.EOTFS_REVERSE
    • colour.DECODING_CCTFS and colour.decoding_cctf:
      • colour.LOG_DECODING_CURVES
      • colour.EOTFS
      • colour.OETFS_REVERSE
  • Implement colour.Hunter_Rdab_to_XYZ definition. (@KelSolaar)
  • Implement colour.UVW_to_XYZ definition. (@KelSolaar)
  • Implement colour.xy_to_Luv_uv and colour.xy_to_UCS_uv definitions. (@KelSolaar)
  • Implement colour.models.DCDM_XYZ_COLOURSPACE. (@KelSolaar, @codycuellar)
  • Implement colour.RGB_Colourspace.copy and colour.RGB_Colourspace.chromatically_adapt methods respectively returning a copy and chromatically adapting the current instance of the RGB_Colourspace to given whitepoint. (@KelSolaar)
  • Implement support for P3-D65 colourspace with colour.models.P3_D65_COLOURSPACE attribute. (@jdvandenberg)
  • Implement support for Filmic Pro log encoding curve with colour.models.log_encoding_FilmicPro6 and colour.models.log.decoding_FilmicPro6 definitions. (@KelSolaar, @nick-shaw)
  • Implement support for FilmLight E-Gamut colourspace and its log encoding curve with the colour.models.FILMLIGHT_E_GAMUT_COLOURSPACEattribute andcolour.models.log_encoding_FilmLightTLogandcolour.models.log. log_decoding_FilmLightTLog` definitions. (@nick-shaw)

The following definitions have now support for CA bypass by using the None builtin as chromatic_adaptation_transform argument: (@KelSolaar, @scoopxyz)

  • colour.XYZ_to_RGB

  • colour.RGB_to_XYZ

  • colour.RGB_to_RGB_matrix

  • colour.RGB_to_RGB

  • Implement support for Sharp RGB colourspace from Ward and Eydelberg-Vileshin (2002) with colour.models.SHARP_RGB_COLOURSPACE attribute.

colour.plotting

  • Implement colour.plotting.plot_ellipses_MacAdam1942_in_chromaticity_diagram_CIE1931, colour.plotting.plot_ellipses_MacAdam1942_in_chromaticity_diagram_CIE1960UCS and colour.plotting.plot_ellipses_MacAdam1942_in_chromaticity_diagram_CIE1976UCS definitions plotting MacAdam (1942) Ellipses (Observer PGN) in the Chromaticity Diagram. (@KelSolaar)

image

  • Implement colour.plotting.plot_pointer_gamut definition plotting Pointer's Gamut . (@KelSolaar)
  • Implement support for colour rendition charts comparison with colour.plotting.plot_multi_colour_checkers definition. (@KelSolaar)

image

  • Implement colour.plotting.plot_single_function and colour.plotting.plot_multi_functions definitions. (@KelSolaar)
  • Implement colour.plotting.plot_single_luminance_function and colour.plotting.plot_multi_luminance_functions definitions. (@KelSolaar)
  • Implement colour.plotting.filter_passthrough utility definition. (@KelSolaar)

colour.utilities

  • Implement support for multiple different domain-range scales with the following objects: (@KelSolaar)
    • colour.get_domain_range_scale definition which returns the current domain-range scale.
    • colour.set_domain_range_scale definition which sets the current domain-range scale.
    • colour.domain_range_scale decorator/context manager which sets the current domain-range scale for the scope of the decorated objects or context.
  • Implement colour.utilities.metric_mse and colour.utilities.metric_psnr definitions computing respectively mean squared error (MSE) and peak signal-to-noise ratio (PSNR). (@KelSolaar)
  • Implement colour.utilities.describe_environment definition that outputs the important information about the current environment: (@KelSolaar)
>>> environment = colour.utilities.describe_environment()
===============================================================================
*                                                                             *
*   Interpreter :                                                             *
*       python : 2.7.14 | packaged by conda-forge | (default, Dec 25 2017,    *
*   01:18:54)                                                                 *
*                [GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)]     *
*                                                                             *
*   colour-science.org :                                                      *
*       colour : v0.3.11-323-g380c1838                                        *
*                                                                             *
*   Runtime :                                                                 *
*       numpy : 1.14.3                                                        *
*       scipy : 1.0.0                                                         *
*       pandas : 0.22.0                                                       *
*       matplotlib : 2.2.2                                                    *
*       notebook : 5.4.0                                                      *
*       ipywidgets : 7.2.1                                                    *
*                                                                             *
===============================================================================
  • Implement colour.utilities.filter_mapping utility definition. (@KelSolaar)
  • Implement colour.utilities.as_array, colour.utilities.as_int_array, colour.utilities.as_float_array, colour.utilities.as_int, and colour.utilities.as_float utility definitions (@KelSolaar, @MichaelMauderer)

colour.volume

  • Implement colour.volume.XYZ_outer_surface definition generating CIE XYZ colourspace outer surface. (@KelSolaar)
  • Implement colour.volume.generate_pulse_waves definition generating pulse waves for CIE XYZ colourspace outer surface computation. (@KelSolaar)

Fixes

colour.appearance

  • CAM16 computations were incorrect because of a faulty D intermediate variable calculation, colour.XYZ_to_CAM16 and colour.CAM16_to_XYZ definitions are affected. (@KelSolaar, @crowsonkb)
  • CIECAM02 Dim induction factor N_c has been changed from 0.95 to 0.9 to match the CIE recommendation. (@KelSolaar, Mark D. Fairchild)
  • Handles NaNs gracefully incolour.XYZ_to_ATD95 definition. (@KelSolaar)

colour.colorimetry

  • CIE Illuminant D Series D60 illuminant chromaticity coordinates and spectral distribution were incorrect because of the mistaken assumption that ACES whitepoint is CIE Illuminant D Series D60:
Whitepoint Chromaticity Coordinates
ACES [0.32168, 0.33767]
D60 [0.32163, 0.33774]

As a consequence, colour.ILLUMINANTS['CIE 1931 2 Degree Standard Observer']['D60'], colour.ILLUMINANTS['CIE 1964 10 Degree Standard Observer']['D60'] and colour.ILLUMINANTS_SDS['D60'] values have changed and a new colour.ILLUMINANTS['CIE 1931 2 Degree Standard Observer']['ACES'] illuminant has been introduced.

  • colour.sd_CIE_illuminant_D_series definition has been updated to conform to CIE 015:2004 recommendation and its output now better matches tabulated data. (@KelSolaar)
  • colour.lightness and colour.luminance definitions now use consistent domain/range for Fairchild (2010) and Fairchild (2011) methods.

colour.models

  • Fixes incorrect computation of epsilon value for hdr-CIELAB and hdr-IPT 2011 colourspaces: colour.XYZ_to_hdr_CIELab, colour.hdr_CIELab_to_XYZ, colour.XYZ_to_hdr_IPT and colour.hdr_IPT_to_XYZ definitions output is affected for the Fairchild 2011 method. (@KelSolaar, @sobotka)

colour.volume

  • colour.is_within_visible_spectrum definition has been overhauled and now relies on a proper computation of CIE XYZ colourspace outer surface. As a consequence, colour.RGB_colourspace_visible_spectrum_coverage_MonteCarlo definition output is largely affected and RGB colourspaces have increased coverage, e.g. for sRGB: 36% to 49%.

Changes

colour.algebra

  • colour.algebra.random_triplet_generator definition now returns a ndarray instead of an iterator, memory consumption is higher but speed is increased.

colour.characterisation

  • colour.first_order_colour_fit: (@KelSolaar)
    • Name: colour_correction_matrix
  • colour.COLOURCHECKERS_SPDS: (@KelSolaar)
    • Name: COLOURCHECKERS_SDS
  • colour.COLOURCHECKERS_SDS spectral distributions are now ordered according to the colour rendition chart samples order thus colour.characterisation.COLOURCHECKER_INDEXES_TO_NAMES_MAPPING is not needed anymore. (@KelSolaar)
  • colour.characterisation.COLOURCHECKER_INDEXES_TO_NAMES_MAPPING: (@KelSolaar)
    • Remove
  • colour.COLOURCHECKERS are now using an ordered dict instead of instances of colour.characterisation.dataset.colour_checkers.chromaticity_coordinates.ColourChecker_Specification class. (@KelSolaar)
  • colour.characterisation.dataset.colour_checkers.chromaticity_coordinates.ColourChecker_Specification: (@KelSolaar)
    • Remove

colour.colorimetry

  • All the Illuminants and light sources now use a linear interpolator by default for consistency with CIE Standard Illuminant D Series which should be linearly interpolated as per CIE 15:2004 recommendations. (@KelSolaar)
  • CIE Standard Illuminant A uses chromaticity coordinates as given in CIE 015:2004 Colorimetry, 3rd Edition.
  • CIE Illuminant D Series D55 uses chromaticity coordinates as given in CIE 015:2004 Colorimetry, 3rd Edition.
  • CIE Illuminant D Series D75 uses chromaticity coordinates as given in CIE 015:2004 Colorimetry, 3rd Edition.
  • Illuminants F Series use chromaticity coordinates as given in CIE 015:2004 Colorimetry, 3rd Edition.
  • Illuminants F Series that were using HunterLab naming convention have been renamed to CIE naming convention, e.g. F1 has been renamed to FL1, F2 to FL2 and so forth.
  • colour.blackbody_spd: (@KelSolaar)
    • Name: sd_blackbody
  • colour.CIE_standard_illuminant_A_function: (@KelSolaar)
    • Name: sd_CIE_standard_illuminant_A
    • Return: colour.SpectralDistribution
  • colour.constant_spd: (@KelSolaar)
    • Name: sd_constant
  • colour.D_illuminant_relative_spd: (@KelSolaar)
    • Name: sd_CIE_illuminant_D_series
    • Signature: sd_CIE_illuminant_D_series(xy, M1_M2_rounding=True)
  • colour.ILLUMINANTS_RELATIVE_SPDS: (@KelSolaar)
    • Name: ILLUMINANTS_SDS
  • colour.LIGHT_SOURCES_RELATIVE_SPDS: (@KelSolaar)
    • Name: LIGHT_SOURCES_SDS
  • colour.colorimetry.lightness_Fairchild2011: (@KelSolaar)
    • Signature: lightness_Fairchild2011(Y, epsilon=0.474, method='hdr-CIELAB')
  • colour.colorimetry.luminance_Fairchild2011: (@KelSolaar)
    • Signature: luminance_Fairchild2011(L_hdr, epsilon=0.474, method='hdr-CIELAB')
  • colour.mesopic_luminous_efficiency_function: (@KelSolaar)
    • Name: sd_mesopic_luminous_efficiency_function
  • colour.MultiSpectralPowerDistribution: (@KelSolaar)
    • Name: MultiSpectralDistribution
  • colour.ones_spd: (@KelSolaar)
    • Name: sd_ones
  • colour.SpectralPowerDistribution: (@KelSolaar)
    • Name: SpectralDistribution
  • colour.SPECTRAL_TO_XYZ_METHODS: (@KelSolaar)
    • Name: SD_TO_XYZ_METHODS
  • colour.spectral_to_XYZ: (@KelSolaar)
    • Name: sd_to_XYZ
    • Signature: sd_to_XYZ(sd, cmfs=STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'], illuminant=sd_ones(ASTME30815_PRACTISE_SHAPE), k=None, method='ASTM E308-15', **kwargs)
  • colour.zeros_spd: (@KelSolaar)
    • Name: sd_zeros
  • colour.colorimetry.spectral_to_XYZ_ASTME30815: (@KelSolaar)
    • Name: sd_to_XYZ_ASTME30815
    • Signature: sd_to_XYZ_ASTME30815(sd, cmfs=STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'], illuminant=sd_ones(ASTME30815_PRACTISE_SHAPE), use_practice_range=True, mi_5nm_omission_method=True, mi_20nm_interpolation_method=True, k=None)
  • colour.colorimetry.spectral_to_XYZ_integration: (@KelSolaar)
    • Name: sd_to_XYZ_integration
    • Signature: sd_to_XYZ_integration(sd, cmfs=STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'], illuminant=sd_ones(STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'].shape), k=None)
  • colour.colorimetry.spectral_to_XYZ_tristimulus_weighting_factors_ASTME30815: (@KelSolaar)
    • Name: sd_to_XYZ_tristimulus_weighting_factors_ASTME30815
    • Signature: sd_to_XYZ_tristimulus_weighting_factors_ASTME30815(sd, cmfs=STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'], illuminant=sd_ones(ASTME30815_PRACTISE_SHAPE), k=None)
  • colour.colorimetry.tristimulus_weighting_factors_ASTME202211: (@KelSolaar)
    • Signature: tristimulus_weighting_factors_ASTME202211cmfs, illuminant, shape, k=None)

colour.constants

  • colour.constants.CIE_E: (@KelSolaar)
    • Remove: The CIE 1976, e.g. Lightness (CIE 1976), Luminance (CIE 1976), CIE L*a*b*, CIE L*u*v** related code uses the algorithm recommended in CIE 015:2004 Colorimetry, 3rd Edition.
  • colour.constants.CIE_K: (@KelSolaar)
    • Remove: The CIE 1976, e.g. Lightness (CIE 1976), Luminance (CIE 1976), CIE L*a*b*, CIE L*u*v** related code uses the algorithm recommended in CIE 015:2004 Colorimetry, 3rd Edition.

colour.io

  • colour.IES_TM2714_Spd: (@KelSolaar)
    • Name: SpectralDistribution_IESTM2714
  • colour.read_image: (@KelSolaar, @nick-shaw)
    • Signature: read_image(path, bit_depth='float32', attributes=False)
  • colour.read_spds_from_csv_file: (@KelSolaar)
    • Name: read_sds_from_csv_file
  • colour.read_spds_from_xrite_file: (@KelSolaar)
    • Name: read_sds_from_xrite_file
  • colour.write_spds_to_csv_file: (@KelSolaar)
    • Name: write_sds_to_csv_file

colour.models

  • colour.RGB_Colourspace.illuminant: (@KelSolaar)
    • Name: whitepoint_name
  • colour.spectral_to_aces_relative_exposure_values: (@KelSolaar)
    • Name: sd_to_aces_relative_exposure_values
  • colour.models.DCI_P3_COLOURSPACE and colour.models.DCI_P3_P_COLOURSPACE colourspaces CCTFs have been changed for Gamma 2.6. (@KelSolaar, @codycuellar)

The following transfer functions now take and output floating point values by default:

  • colour.models.oetf_DCIP3: (@KelSolaar, @codycuellar)

    • Name: eotf_reverse_DCDM
    • Signature: eotf_reverse_DCDM(XYZ, out_int=False)
  • colour.models.eotf_DCIP3: (@KelSolaar, @codycuellar)

    • Name: eotf_DCDM
    • Signature: oetf_DCDM(XYZ, in_int=False)
  • colour.models.oetf_DICOMGSDF: (@KelSolaar)

    • Signature: oetf_DICOMGSDF(L, out_int=False)
  • colour.models.eotf_DICOMGSDF: (@KelSolaar)

    • Signature: eotf_DICOMGSDF(J, in_int=False)
  • colour.models.oetf_ROMMRGB: (@KelSolaar)

    • Signature: oetf_ROMMRGB(X, bit_depth=8, out_int=False)
  • colour.models.eotf_ROMMRGB: (@KelSolaar)

    • Signature: eotf_ROMMRGB(X_p, bit_depth=8, in_int=False)
  • colour.models.oetf_ProPhotoRGB: (@KelSolaar)

    • Signature: oetf_ProPhotoRGB(X, bit_depth=8, out_int=False)
  • colour.models.eotf_ProPhotoRGB: (@KelSolaar)

    • Signature: eotf_ProPhotoRGB(X_p, bit_depth=8, in_int=False)
  • colour.models.oetf_RIMMRGB: (@KelSolaar)

    • Signature: oetf_RIMMRGB(X, bit_depth=8, out_int=False, E_clip=2.0)
  • colour.models.eotf_RIMMRGB: (@KelSolaar)

    • Signature: eotf_RIMMRGB(X_p, bit_depth=8, in_int=False, E_clip=2.0)
  • colour.models.log_encoding_ERIMMRGB: (@KelSolaar)

    • Signature: log_encoding_ERIMMRGB(X, bit_depth=8, out_int=False, E_min=0.001, E_clip=316.2)
  • colour.models.log_decoding_ERIMMRGB: (@KelSolaar)

    • Signature: log_decoding_ERIMMRGB(X_p, bit_depth=8, in_int=False, E_min=0.001, E_clip=316.2)
  • RED colourspaces primaries have been chromatically adapted to D65 illuminant as Graeme Natress confirmed RED is using D65. (@nick-shaw)
    The following colourspaces are affected:

    • colour.models.RED_COLOR_COLOURSPACE
    • colour.models.RED_COLOR_2_COLOURSPACE
    • colour.models.RED_COLOR_3_COLOURSPACE
    • colour.models.RED_COLOR_4_COLOURSPACE
    • colour.models.DRAGON_COLOR_COLOURSPACE
    • colour.models.DRAGON_COLOR_2_COLOURSPACE
  • colour.function_gamma: (@KelSolaar)

    • Name: gamma_function
  • colour.function_linear: (@KelSolaar)

    • Name: linear_function

colour.phenomena

  • colour.rayleigh_scattering_spd: (@KelSolaar)
    • Name: sd_rayleigh_scattering

colour.plotting

  • colour.plotting.boundaries: (@KelSolaar)
    • Remove: Functionality has been moved to colour.plotting.render definition.
  • colour.plotting.decorate: (@KelSolaar)
    • Remove: Functionality has been moved to colour.plotting.render definition.
  • colour.plotting.display: (@KelSolaar)
    • Remove: Functionality has been moved to colour.plotting.render definition.
  • colour.plotting.colour_plotting_defaults: (@KelSolaar)
    • Name: colour_plotting_style
  • colour.plotting.get_RGB_colourspace: (@KelSolaar)
    • Name: filter_RGB_colourspaces
    • Signature: filter_RGB_colourspaces(filterer, flags=re.IGNORECASE):
  • colour.plotting.get_cmfs: (@KelSolaar)
    • Name: filter_cmfs
    • Signature: filter_cmfs(filterer, flags=re.IGNORECASE):
  • colour.plotting.get_illuminant: (@KelSolaar)
    • Name: filter_illuminants
    • Signature: filter_illuminants(filterer, flags=re.IGNORECASE):
  • colour.plotting. label_rectangles : (@KelSolaar)
    • Signature: label_rectangles(labels, rectangles, rotation='vertical', text_size=10, offset=None)
  • colour.plotting.cvd_simulation_Machado2009_plot: (@KelSolaar)
    • Name: plot_cvd_simulation_Machado2009
  • colour.plotting.single_colour_checker_plot: (@KelSolaar)
    • Name: plot_single_colour_checker
  • colour.plotting.multi_colour_checker_plot: (@KelSolaar)
    • Name: plot_multi_colour_checkers
  • colour.plotting.single_spd_plot: (@KelSolaar)
    • Name: plot_single_sd
  • colour.plotting.multi_spd_plot: (@KelSolaar)
    • Name: plot_multi_sds
  • colour.plotting.single_cmfs_plot: (@KelSolaar)
    • Name: plot_single_cmfs
  • colour.plotting.multi_cmfs_plot: (@KelSolaar)
    • Name: plot_multi_cmfs
  • colour.plotting.single_illuminant_spd_plot: (@KelSolaar)
    • Name: plot_single_illuminant_sd
  • colour.plotting.multi_illuminant_spd_plot: (@KelSolaar)
    • Name: plot_multi_illuminant_sds
  • colour.plotting.visible_spectrum_plot: (@KelSolaar)
    • Name: plot_visible_spectrum
  • colour.plotting.single_lightness_function_plot: (@KelSolaar)
    • Name: plot_single_lightness_function
  • colour.plotting.multi_lightness_function_plot: (@KelSolaar)
    • Name: plot_multi_lightness_functions
  • colour.plotting.plot_single_lightness_function and colour.plotting.plot_multi_lightness_functions definitions now render normalised Lightness. (@KelSolaar)
  • colour.plotting.blackbody_spectral_radiance_plot: (@KelSolaar)
    • Name: plot_blackbody_spectral_radiance
  • colour.plotting.blackbody_colours_plot: (@KelSolaar)
    • Name: plot_blackbody_colours
  • colour.plotting.single_colour_swatch_plot: (@KelSolaar)
    • Name: plot_single_colour_swatch
  • colour.plotting.multi_colour_swatch_plot: (@KelSolaar)
    • Name: plot_multi_colour_swatches
    • Signature: plot_multi_colour_swatches(colour_swatches, width=1, height=1, spacing=0, columns=3, text_parameters=None, background_colour=(1.0, 1.0, 1.0), compare_swatches=None, **kwargs)
  • colour.plotting.image_plot: (@KelSolaar)
    • Name: plot_image
    • Signature: plot_image(image, text_parameters=None, interpolation='nearest', colour_map=matplotlib.cm.Greys_r, **kwargs)
  • colour.plotting.corresponding_chromaticities_prediction_plot: (@KelSolaar)
    • Name: plot_corresponding_chromaticities_prediction
  • colour.plotting.spectral_locus_plot: (@KelSolaar)
    • Name: plot_spectral_locus
  • colour.plotting.chromaticity_diagram_colours_plot: (@KelSolaar)
    • Name: plot_chromaticity_diagram_colours
  • colour.plotting.chromaticity_diagram_plot: (@KelSolaar)
    • Name: plot_chromaticity_diagram
  • colour.plotting.chromaticity_diagram_plot_CIE1931: (@KelSolaar)
    • Name: plot_chromaticity_diagram_CIE1931
    • Signature: plot_chromaticity_diagram_CIE1931(cmfs='CIE 1931 2 Degree Standard Observer', show_diagram_colours=True, show_spectral_locus=True, wavelength_labels=None, **kwargs)
  • colour.plotting.chromaticity_diagram_plot_CIE1960UCS: (@KelSolaar)
    • Name: plot_chromaticity_diagram_CIE1960UCS
    • Signature: plot_chromaticity_diagram_CIE1960UCS(cmfs='CIE 1931 2 Degree Standard Observer', show_diagram_colours=True, show_spectral_locus=True, wavelength_labels=None, **kwargs)
  • colour.plotting.chromaticity_diagram_plot_CIE1976UCS: (@KelSolaar)
    • Name: plot_chromaticity_diagram_CIE1976UCS
    • Signature: plot_chromaticity_diagram_CIE1976UCS(cmfs='CIE 1931 2 Degree Standard Observer', show_diagram_colours=True, show_spectral_locus=True, wavelength_labels=None, **kwargs)
  • colour.plotting.spds_chromaticity_diagram_plot: (@KelSolaar)
    • Name: plot_sds_in_chromaticity_diagram
  • colour.plotting.spds_chromaticity_diagram_plot_CIE1931: (@KelSolaar)
    • Name: plot_sds_in_chromaticity_diagram_CIE1931
    • Signature: plot_sds_in_chromaticity_diagram_CIE1931(sds, cmfs='CIE 1931 2 Degree Standard Observer', annotate_parameters=None, chromaticity_diagram_callable_CIE1931=chromaticity_diagram_plot_CIE1931, **kwargs)
  • colour.plotting.spds_chromaticity_diagram_plot_CIE1960UCS: (@KelSolaar)
    • Name: plot_sds_in_chromaticity_diagram_CIE1960UCS
    • Signature: plot_sds_in_chromaticity_diagram_CIE1960UCS(sds, cmfs='CIE 1931 2 Degree Standard Observer', annotate_parameters=None, chromaticity_diagram_callable_CIE1960UCS=chromaticity_diagram_plot_CIE1960UCS, **kwargs)
  • colour.plotting.spds_chromaticity_diagram_plot_CIE1976UCS: (@KelSolaar)
    • Name: plot_sds_in_chromaticity_diagram_CIE1976UCS
    • Signature: plot_sds_in_chromaticity_diagram_CIE1976UCS(sds, cmfs='CIE 1931 2 Degree Standard Observer', annotate_parameters=None, chromaticity_diagram_callable_CIE1976UCS=chromaticity_diagram_plot_CIE1976UCS, **kwargs)
  • colour.plotting.RGB_colourspaces_chromaticity_diagram_plot: (@KelSolaar)
    • Name: plot_RGB_colourspaces_in_chromaticity_diagram
  • colour.plotting.RGB_colourspaces_chromaticity_diagram_plot_CIE1931: (@KelSolaar)
    • Name: plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931
  • colour.plotting.RGB_colourspaces_chromaticity_diagram_plot_CIE1960UCS: (@KelSolaar)
    • Name: plot_RGB_colourspaces_in_chromaticity_diagram_CIE1960UCS
  • colour.plotting.RGB_colourspaces_chromaticity_diagram_plot_CIE1976UCS: (@KelSolaar)
    • Name: plot_RGB_colourspaces_in_chromaticity_diagram_CIE1976UCS
  • colour.plotting.RGB_chromaticity_coordinates_chromaticity_diagram_plot: (@KelSolaar)
    • Name: plot_RGB_chromaticities_in_chromaticity_diagram
  • colour.plotting.RGB_chromaticity_coordinates_chromaticity_diagram_plot_CIE1931: (@KelSolaar)
    • Name: plot_RGB_chromaticities_in_chromaticity_diagram_CIE1931
    • Signature: plot_RGB_chromaticities_in_chromaticity_diagram_CIE1931(RGB, colourspace='sRGB', chromaticity_diagram_callable_CIE1931=RGB_colourspaces_chromaticity_diagram_plot_CIE1931, scatter_parameters=None, **kwargs)
  • colour.plotting.RGB_chromaticity_coordinates_chromaticity_diagram_plot_CIE1960UCS: (@KelSolaar)
    • Name: plot_RGB_chromaticities_in_chromaticity_diagram_CIE1960UCS
    • Signature: plot_RGB_chromaticities_in_chromaticity_diagram_CIE1960UCS(RGB, colourspace='sRGB', chromaticity_diagram_callable_CIE1960UCS=RGB_colourspaces_chromaticity_diagram_plot_CIE1960UCS, scatter_parameters=None, **kwargs)
  • colour.plotting.RGB_chromaticity_coordinates_chromaticity_diagram_plot_CIE1976UCS: (@KelSolaar)
    • Name: plot_RGB_chromaticities_in_chromaticity_diagram_CIE1976UCS
    • Signature: plot_RGB_chromaticities_in_chromaticity_diagram_CIE1976UCS(RGB, colourspace='sRGB', chromaticity_diagram_callable_CIE1976UCS= RGB_colourspaces_chromaticity_diagram_plot_CIE1976UCS, scatter_parameters=None, **kwargs)
  • colour.plotting.single_cctf_plot: (@KelSolaar)
    • Name: plot_single_cctf
  • colour.plotting.multi_cctf_plot: (@KelSolaar)
    • Name: plot_multi_cctfs
  • colour.plotting.single_munsell_value_function_plot: (@KelSolaar)
    • Name: plot_single_munsell_value_function
  • colour.plotting.multi_munsell_value_function_plot: (@KelSolaar)
    • Name: plot_multi_munsell_value_functions
  • colour.plotting.single_rayleigh_scattering_spd_plot: (@KelSolaar)
    • Name: plot_single_sd_rayleigh_scattering
  • colour.plotting.the_blue_sky_plot: (@KelSolaar)
    • Name: plot_the_blue_sky
  • colour.plotting.colour_quality_bars_plot: (@KelSolaar)
    • Name: plot_colour_quality_bars
  • colour.plotting.single_spd_colour_rendering_index_bars_plot: (@KelSolaar)
    • Name: plot_single_sd_colour_rendering_index_bars
  • colour.plotting.multi_spd_colour_rendering_index_bars_plot: (@KelSolaar)
    • Name: plot_multi_sds_colour_rendering_indexes_bars
  • colour.plotting.single_spd_colour_quality_scale_bars_plot: (@KelSolaar)
    • Name: plot_single_sd_colour_quality_scale_bars
  • colour.plotting.multi_spd_colour_quality_scale_bars_plot: (@KelSolaar)
    • Name: plot_multi_sds_colour_quality_scales_bars
  • colour.plotting.planckian_locus_plot: (@KelSolaar)
    • Name: plot_planckian_locus
  • colour.plotting.planckian_locus_chromaticity_diagram_plot: (@KelSolaar)
    • Name: plot_planckian_locus_in_chromaticity_diagram
  • colour.plotting.planckian_locus_chromaticity_diagram_plot_CIE1931: (@KelSolaar)
    • Name: plot_planckian_locus_in_chromaticity_diagram_CIE1931
  • colour.plotting.planckian_locus_chromaticity_diagram_plot_CIE1960UCS: (@KelSolaar)
    • Name: plot_planckian_locus_in_chromaticity_diagram_CIE1960UCS
  • colour.plotting.RGB_colourspaces_gamuts_plot: (@KelSolaar)
    • Name: plot_RGB_colourspaces_gamuts
    • Signature: `plot_RGB_colourspaces_gamuts(colourspaces=None, reference_colourspace='CIE xyY', segments=8, show_grid=True, grid_segments=10, show_spectral_locus=False, spectral_locus_colour=None, cmfs='CIE 1931 2 Degree Standard Observer', **kwargs)
  • colour.plotting.RGB_scatter_plot: (@KelSolaar)
    • Name: plot_RGB_scatter
    • Signature: `plot_RGB_scatter(RGB, colourspace, reference_colourspace='CIE xyY', colourspaces=None, segments=8, show_grid=True, grid_segments=10, show_spectral_locus=False, spectral_locus_colour=None, points_size=12, cmfs='CIE 1931 2 Degree Standard Observer', **kwargs)

colour.recovery

  • colour.REFLECTANCE_RECOVERY_METHODS: (@KelSolaar)
    • Name: XYZ_TO_SD_METHODS
  • colour.XYZ_to_spectral: (@KelSolaar)
    • Name: XYZ_to_sd
  • colour.recovery.RGB_to_spectral_Smits1999: (@KelSolaar)
    • Name: RGB_to_sd_Smits1999
  • colour.recovery.RGB_to_sd_Smits1999 output spectral distribution defaults to colour.LinearInterpolator interpolator. (@KelSolaar)
  • colour.recovery.XYZ_to_spectral_Meng2015: (@KelSolaar)
    • Name: XYZ_to_sd_Meng2015
    • Signature: XYZ_to_sd_Meng2015(XYZ, cmfs=STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'], interval=5, optimisation_parameters=None)

colour.utilities

  • colour.utilities.filter_warnings: (@KelSolaar)
    • Signature: filter_warnings(state=True, colour_warnings=True, colour_runtime_warnings=False, colour_usage_warnings=False, python_warnings=False)
  • colour.utilities.message_box: (@KelSolaar)
    • Signature: message_box(message, width=79, padding=3, print_callable=print)
  • colour.utilities.as_numeric: (@KelSolaar)
    • Signature: as_numeric(a, dtype=DEFAULT_FLOAT_DTYPE)

colour.volume

  • colour.is_within_visible_spectrum: (@KelSolaar)
    • Signature: is_within_visible_spectrum(XYZ, interval=10, cmfs=STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'], illuminant=sd_ones(STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'].shape), tolerance=None)
Assets 2

@KelSolaar KelSolaar released this Feb 19, 2018 · 1334 commits to develop since this release

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
Assets 2

@KelSolaar KelSolaar released this Dec 2, 2017 · 1543 commits to develop since this release

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

Assets 2

@KelSolaar KelSolaar released this Mar 12, 2017 · 1652 commits to develop since this release

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)
Assets 2

@KelSolaar KelSolaar released this Jul 31, 2016 · 1799 commits to develop since this release

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
Assets 2

@KelSolaar KelSolaar released this Dec 27, 2017 · 2029 commits to develop since this release

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

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.
Assets 2

@KelSolaar KelSolaar released this Aug 9, 2015 · 2118 commits to develop since this release

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.
Assets 2
You can’t perform that action at this time.