Colour 0.3.16 - Alpha Milestone
π This release integrates all the GSoC work from Pawel (@enneract), most of the code from Nishant (@njwardhan) and, the optimizations from Omar (@OmarWagih1). We would like to thank them again for their great contributions!
π With this release, we stop testing for Python 3.5 and, Scipy>=1.1.0 becomes the minimum version. This is the last feature release to support Python 2.7! We will also trim the deprecation code in the next version thus, please make sure to update your code accordingly.
The colour.SpectralDistribution.interpolate and colour.MultiSpectralDistributions.interpolate methods now honour class instantiation time interpolation parameters instead of blindly applying CIE 167:2005 recommendation, this introduces minor numerical changes.
Many definitions, methods and, module attributes have been renamed to improve consistency and we are reaching a satisfactory point in that regard, hopefully, the names will be much more stable from now on.
colour.algebracolour.algebra.smoothstep definition. (@KelSolaar)colour.characterisationUsage is simple and as follows:
\>\>\> sensitivities = colour.CAMERA\_RGB\_SPECTRAL\_SENSITIVITIES['Nikon 5100 (NPL)']\>\>\> illuminant = colour.ILLUMINANT\_SDS['D55']\>\>\> colour.matrix\_idt(sensitivities, illuminant)array([[0.46579991, 0.13409239, 0.01935141], [0.01786094, 0.77557292, -0.16775555], [0.03458652, -0.16152926, 0.74270359]])
The following ISO 7589 and 6728 spectral data has been added: (@KelSolaar)
ISO 6728 Standard Lens
ISO 7589 Diffuser
New attributes colour.SDS_LENSES containing the ISO 6728 Standard Lens and colour.SDS_FILTERScontaining the ISO 7589 Diffuser have been added.
The ISO 17321-1 24 patches reflectance data has been added as an alias to Ohta (1997) measurements. (@KelSolaar)
colour.colorimetryThe following ISO 7589 illuminants have been added: (@KelSolaar)
ISO 7589 Photographic Daylight
ISO 7589 Sensitometric Daylight
ISO 7589 Studio Tungsten
ISO 7589 Sensitometric Studio Tungsten
ISO 7589 Photoflood
ISO 7589 Sensitometric Photoflood
π¨ ISO 7589 Sensitometric Printer
Add colour.msds_constant, colour.msds_zeros and colour.msds_ones definitions. (@KelSolaar)
colour.differencecolour.difference.JND_CIE1976 attribute representing the Just Noticeable Difference (JND) according to CIE 1976 colour difference formula.colour.geometryπ¦ The geometry primitives generation code has been consolidated into a new colour.geometry sub-package. The following objects are available: (@KelSolaar)
Primitives
colour.geometry.primitive_gridcolour.geometry.primitive_cubecolour.PRIMITIVE_METHODScolour.primitivePrimitives Vertices
colour.geometry.primitive_vertices_quad_mpl (for Matplotlib usage only)colour.geometry.primitive_vertices_grid_mpl (for Matplotlib usage only)colour.geometry.primitive_vertices_cube_mpl (for Matplotlib usage only)colour.geometry.primitive_vertices_spherecolour.PRIMITIVE_VERTICES_METHODScolour.primitive_verticescolour.modelsAdd colour.models.log_encoding_Log2 and colour.models.log_decoding_Log2 log encoding and decoding definitions. (@njwardhan, @KelSolaar)
Add colour.models.exponent_function_basic and colour.models.exponent_function_monitor_curve definitions. (@njwardhan)
Add colour.models.logarithmic_function_basic, colour.models.logarithmic_function_quasilog and colour.models.logarithmic_function_camera definitions. (@njwardhan, @nick-shaw, @KelSolaar)
Implement support for IGPGTG colourspace by Hellwig and Fairchild (2020) with the colour.XYZ_to_IGPGTG and colour.IGPGTG_to_XYZ definitions. (@KelSolaar)
Implement support for DaVinci Wide Gamut colourspace. (@KelSolaar)
colour.plottingcolour.qualitycolour.quality.colour_fidelity_index_CIE2017 definition. (@enneract)colour.quality.colour_fidelity_index_ANSIIESTM3018 definition. (@enneract)colour.recoverycolour.recovery.XYZ_to_sd_Jakob2019 definition. (@enneract, @KelSolaar)colour.recovery.RGB_to_sd_Mallett2019 definition. (@enneract)colour.recovery.XYZ_to_sd_Otsu2018 definition. (@enneract, @KelSolaar)colour.utilitiescolour.utilities.set_float_precision definition and the COLOUR_SCIENCE__FLOAT_PRECISION environment variable. It will affect almost the entire API and lead to increase performance at the price of broken capabilities. (@KelSolaar)axis argument to the colour.utilities.metric_mse and colour.utilities.metric_psnr definitions. (@KelSolaar)colour.utilities.LazyCaseInsensitiveMapping class for lazily loading slow and heavy datasets. (@KelSolaar)colour.characterisationcolour.colorimetrycolour.SpectralDistribution.align, colour.MultiSpectralDistributions.align, colour.SpectralDistribution.interpolate and colour.MultiSpectralDistributions.interpolate methods did not honour the instantiation time interpolation class and were forcibly using either the colour.SpragueInterpolator or colour.CubicSplineInterpolator classes unless an interpolator argument was passed. This behaviour was not desirable and was changed so that if the instantiation time interpolation class is not one of colour.SpragueInterpolator or colour.CubicSplineInterpolator, then, it will be used instead and thus it will take precedence over the CIE 167:2005 recommendation. (@KelSolaar)The immediate consequence is small numerical changes to various spectral computations, for example:
\>\>\> illuminant = ILLUMINANTS\_SDS['D65'] \>\>\> sd\_to\_XYZ\_tristimulus\_weighting\_factors\_ASTME308( ... sd, cmfs, illuminant) # doctest: +ELLIPSIS- array([10.8402899..., 9.6843539..., 6.2160858...])+ array([10.8405832..., 9.6844909..., 6.2155622...]) \>\>\> from colour import COLOURCHECKERS\_SDS \>\>\> sd = COLOURCHECKERS\_SDS['ColorChecker N Ohta']['dark skin'] \>\>\> sd\_to\_aces\_relative\_exposure\_values(sd) # doctest: +ELLIPSIS- array([0.1171785..., 0.0866347..., 0.0589707...])+ array([0.1171814..., 0.0866360..., 0.0589726...])Colour quality metrics are affected a bit more severely: ```diff \>\>\> from colour import ILLUMINANTS\_SDS \>\>\> sd = ILLUMINANTS\_SDS['FL2'] \>\>\> colour\_rendering\_index(sd) # doctest: +ELLIPSIS- 64.1515202...+ 64.2337241... \>\>\> from colour import ILLUMINANTS\_SDS \>\>\> sd = ILLUMINANTS\_SDS['FL2'] \>\>\> colour\_quality\_scale(sd) # doctest: +ELLIPSIS- 64.0172835...+ 64.1117031...
CIE Illuminant D Series D60 chromaticity have also been modified:
- 'D60': np.array([0.321626242047397, 0.337736995955436]),+ 'D60': np.array([0.321616709705268, 0.337619916550817]),
π See #566 for more details.
colour.modelscolour.OETF_INVERSES attribute ITU-R BT.2100 HLG key was incorrectly named ITU-R BT.2100 HLD. (@jchwei)colour.HSL_to_RGB definition output was incorrect when saturation was equal to 1. (@KelSolaar, @nadersadoughi)colour.plottingcolour.plotting.diagrams.plot_chromaticity_diagram definition was not passing anymore the CMFS to the underlying colour.plotting.diagrams.plot_spectral_locus and colour.plotting.diagrams.plot_chromaticity_diagram_colours definitions. (@KelSolaar, @sobotka)colour.utilitiescolour.utilities.filter_warnings definition was not behaving properly and has been fixed. (@KelSolaar)colour.plotting.plot_RGB_colourspaces_gamuts definition was using an incorrect style argument. (@sianyi)colour.adaptation| Object | Name | Author |
|---|---|---|
colour.CMCCAT2000_VIEWING_CONDITIONS |
VIEWING_CONDITIONS_CMCCAT2000 |
@KelSolaar |
colour.adaptation.BRADFORD_CAT |
CAT_BRADFORD |
... |
colour.adaptation.BS_CAT |
CAT_BIANCO2010 |
... |
colour.adaptation.BS_PC_CAT |
CAT_PC_BIANCO2010 |
... |
colour.adaptation.CAT02_BRILL_CAT |
CAT_CAT02_BRILL2008 |
... |
colour.adaptation.CAT02_CAT |
CAT_CAT02 |
... |
colour.adaptation.CMCCAT2000_CAT |
CAT_CMCCAT2000 |
... |
colour.adaptation.CMCCAT2000_InductionFactors |
InductionFactors_CMCCAT2000 |
... |
colour.adaptation.CMCCAT97_CAT |
CAT_CMCCAT97 |
... |
colour.adaptation.FAIRCHILD_CAT |
CAT_FAIRCHILD |
... |
colour.adaptation.SHARP_CAT |
CAT_SHARP |
... |
colour.adaptation.VON_KRIES_CAT |
CAT_VON_KRIES |
... |
colour.adaptation.XYZ_SCALING_CAT |
CAT_XYZ_SCALING |
... |
colour.algebracolour.algebra.cartesian_to_spherical and colour.algebra.spherical_to_cartesian definitions now use the ISO 31-11 parameterisation for consistency.| Object | Signature | Author |
|---|---|---|
colour.KernelInterpolator. __init__ |
KernelInterpolator(self, x, y, window=3, kernel=kernel_lanczos, kernel_kwargs=None, padding_kwargs=None, dtype=DEFAULT_FLOAT_DTYPE) |
@KelSolaar |
| Object | Name | Author |
|---|---|---|
colour.KernelInterpolator.kernel_args |
kernel_kwargs |
@KelSolaar |
colour.KernelInterpolator.padding_args |
padding_kwargs |
... |
colour.appearance| Object | Name | Author |
|---|---|---|
colour.ATD95_Specification |
CAM_Specification_ATD95 |
@KelSolaar |
colour.CAM16_Specification |
CAM_Specification_CAM16 |
... |
colour.CAM16_VIEWING_CONDITIONS |
VIEWING_CONDITIONS_CAM16 |
... |
colour.CIECAM02_Specification |
CAM_Specification_CIECAM02 |
... |
colour.CIECAM02_VIEWING_CONDITIONS |
VIEWING_CONDITIONS_CIECAM02 |
... |
colour.HUNT_VIEWING_CONDITIONS |
VIEWING_CONDITIONS_HUNT |
... |
colour.Hunt_Specification |
CAM_Specification_Hunt |
... |
colour.LLAB_Specification |
CAM_Specification_LLAB |
... |
colour.LLAB_VIEWING_CONDITIONS |
VIEWING_CONDITIONS_LLAB |
... |
colour.Nayatani95_Specification |
CAM_Specification_Nayatani95 |
... |
colour.RLAB_Specification |
CAM_Specification_RLAB |
... |
colour.RLAB_VIEWING_CONDITIONS |
VIEWING_CONDITIONS_RLAB |
... |
colour.appearance.CAM16_InductionFactors |
InductionFactors_CAM16 |
... |
colour.appearance.CIECAM02_InductionFactors |
InductionFactors_CIECAM02 |
... |
colour.appearance.Hunt_InductionFactors |
InductionFactors_Hunt |
... |
colour.appearance.LLAB_InductionFactors |
InductionFactors_LLAB |
... |
colour.appearance.RLAB_D_FACTOR |
D_FACTOR_RLAB |
... |
colour.appearance.chromatic_adaptation_matrix_VonKries |
matrix_chromatic_adaptation_VonKries |
... |
colour.blindness| Object | Name | Author |
|---|---|---|
colour.blindness.anomalous_trichromacy_cmfs_Machado2009 |
msds_cmfs_anomalous_trichromacy_Machado2009 |
@KelSolaar |
colour.blindness.anomalous_trichromacy_matrix_Machado2009 |
matrix_anomalous_trichromacy_Machado2009 |
... |
colour.blindness.cvd_matrix_Machado2009 |
matrix_cvd_Machado2009 |
... |
colour.characterisation| Object | Name | Author |
|---|---|---|
colour.CAMERA_RGB_SPECTRAL_SENSITIVITIES |
MSDS_CAMERA_SENSITIVITIES |
@KelSolaar |
colour.COLOURCHECKERS |
CCS_COLOURCHECKERS |
... |
colour.COLOURCHECKER_SDS |
SDS_COLOURCHECKERS |
... |
colour.COLOUR_CORRECTION_MATRIX_METHODS |
MATRIX_COLOUR_CORRECTION_METHODS |
... |
colour.DISPLAY_RGB_PRIMARIES |
MSDS_DISPLAY_PRIMARIES |
... |
colour.characterisation.augmented_matrix_Cheung2004 |
matrix_augmented_Cheung2004 |
... |
colour.characterisation.colour_correction_matrix_Cheung2004 |
matrix_colour_correction_Cheung2004 |
... |
colour.characterisation.colour_correction_matrix_Finlayson2015 |
matrix_colour_correction_Finlayson2015 |
... |
colour.characterisation.colour_correction_matrix_Vandermonde |
matrix_colour_correction_Vandermonde |
... |
colour.colour_correction_matrix |
matrix_colour_correction |
... |
colour.colorimetrycolour.sd_blackbody definition now returns values in W/sr/m2/nm instead of W/sr/m2/m. See #559 for more background information. (@KelSolaar, @Wagyx, @MichaelMauderer)colour.colorimetrycolour.colorimetry.sd_CIE_illuminant_D_series definition return a spectral distribution whose name includes the used chromaticity coordinates and whose interpolator is instantiated from colour.algebra.LinearInterpolator. (@KelSolaar)| Object | Signature | Author |
|---|---|---|
colour.MultiSpectralDistributions.align |
align(self, shape, interpolator=None, interpolator_kwargs=None, extrapolator=None, extrapolator_kwargs=None, **kwargs) |
@KelSolaar |
colour.MultiSpectralDistributions.extrapolate |
extrapolate(self, shape, extrapolator=None, extrapolator_kwargs=None, **kwargs) |
... |
colour.MultiSpectralDistributions.interpolate |
interpolate(self, shape, interpolator=None, interpolator_kwargs=None, **kwargs) |
... |
colour.SpectralDistribution.align |
align(self, shape, interpolator=None, interpolator_kwargs=None, extrapolator=None, extrapolator_kwargs=None, **kwargs) |
... |
colour.SpectralDistribution.extrapolate |
extrapolate(self, shape, extrapolator=None, extrapolator_kwargs=None, **kwargs) |
... |
colour.SpectralDistribution.interpolate |
interpolate(self, shape, interpolator=None, interpolator_kwargs=None, **kwargs) |
... |
| Object | Name | Author |
|---|---|---|
colour.ASTME308_PRACTISE_SHAPE |
SPECTRAL_SHAPE_ASTME308 |
@KelSolaar |
colour.CMFS |
MSDS_CMFS |
... |
colour.DEFAULT_SPECTRAL_SHAPE |
SPECTRAL_SHAPE_DEFAULT |
... |
colour.HUNTERLAB_ILLUMINANTS |
TVS_ILLUMINANTS_HUNTERLAB |
... |
colour.ILLUMINANTS_SDS |
SDS_ILLUMINANTS |
... |
colour.ILLUMINANTS |
CCS_ILLUMINANTS |
... |
colour.LEFS |
SDS_LEFS |
... |
colour.LIGHT_SOURCES_SDS |
SDS_LIGHT_SOURCES |
... |
colour.LIGHT_SOURCES |
CCS_LIGHT_SOURCES |
... |
colour.MULTI_SD_TO_XYZ_METHODS |
MSDS_TO_XYZ_METHODS |
... |
colour.colorimetry.D_ILLUMINANTS_S_SDS |
SDS_BASIS_FUNCTIONS_CIE_ILLUMINANT_D_SERIES |
... |
colour.colorimetry.LMS_CMFS |
MSDS_CMFS_LMS |
... |
colour.colorimetry.PHOTOPIC_LEFS |
SDS_LEFS_PHOTOPIC |
... |
colour.colorimetry.RGB_CMFS |
MSDS_CMFS_RGB |
... |
colour.colorimetry.SCOTOPIC_LEFS |
SDS_LEFS_SCOTOPIC |
... |
colour.colorimetry.STANDARD_OBSERVERS_CMFS |
MSDS_CMFS_STANDARD_OBSERVER |
... |
colour.colorimetry.multi_sds_to_XYZ_ASTME308 |
msds_to_XYZ_ASTME308 |
... |
colour.colorimetry.multi_sds_to_XYZ_integration |
msds_to_XYZ_integration |
... |
colour.colorimetry.sds_and_multi_sds_to_multi_sds |
sds_and_msds_to_msds |
... |
colour.colorimetry.sds_and_multi_sds_to_sds |
sds_and_msds_to_sds |
... |
colour.multi_sds_to_XYZ |
msds_to_XYZ |
... |
colour.constants| Object | Name | Author |
|---|---|---|
colour.constants.AVOGADRO_CONSTANT |
CONSTANT_AVOGADRO |
@KelSolaar |
colour.constants.BOLTZMANN_CONSTANT |
CONSTANT_BOLTZMANN |
... |
colour.constants.K_M |
CONSTANT_K_M |
... |
colour.constants.KP_M |
CONSTANT_KP_M |
... |
colour.constants.PLANCK_CONSTANT |
CONSTANT_PLANCK |
... |
colour.constants.LIGHT_SPEED |
CONSTANT_LIGHT_SPEED |
... |
colour.continuous| Object | Signature | Author |
|---|---|---|
colour.continuous.MultiSignals.extrapolator_args |
extrapolator_kwargs |
@KelSolaar |
colour.continuous.MultiSignals.interpolator_args |
interpolator_kwargs |
... |
colour.continuous.Signal.extrapolator_args |
extrapolator_kwargs |
... |
colour.continuous.Signal.interpolator_args |
interpolator_kwargs |
... |
colour.corresponding| Object | Name | Author |
|---|---|---|
colour.constants.BRENEMAN_EXPERIMENTS_PRIMARIES_CHROMATICITIES |
BRENEMAN_EXPERIMENT_PRIMARIES_CHROMATICITIES |
@KelSolaar |
colour.geometry| Object | Signature | Author |
|---|---|---|
colour.geometry.quad |
primitive_vertices_quad_mpl(width=1, height=1, depth=0, origin=np.array([0, 0]), axis='+z') |
@KelSolaar |
colour.geometry.grid |
primitive_vertices_grid_mpl(width=1, height=1, depth=0, width_segments=1, height_segments=1, origin=np.array([0, 0]), axis='+z') |
... |
colour.geometry.cube |
primitive_vertices_cube_mpl(width=1, height=1, depth=1, width_segments=1, height_segments=1, depth_segments=1, origin=np.array([0, 0, 0]), planes=None) |
... |
colour.io| Object | Signature | Author |
|---|---|---|
colour.LUT1D.apply |
apply(self, RGB, interpolator=LinearInterpolator, interpolator_kwargs=None, **kwargs) |
@KelSolaar |
colour.LUT3x1D.apply |
apply(self, RGB, interpolator=LinearInterpolator, interpolator_kwargs=None, **kwargs) |
... |
colour.LUT3D.apply |
apply(self, RGB, interpolator=table_interpolation_trilinear, interpolator_kwargs=None, **kwargs) |
... |
colour.LutSequence.apply |
apply(self, RGB, interpolator_1D=LinearInterpolator, interpolator_1D_kwargs=None, interpolator_3D=table_interpolation_trilinear, interpolator_3D_kwargs=None, **kwargs) |
... |
colour.models| Object | Signature | Author |
|---|---|---|
colour.OSA_UCS_to_XYZ |
OSA_UCS_to_XYZ(Ljg, optimisation_kwargs=None, **kwargs) |
@KelSolaar |
colour.RGB_Colourspace |
RGB_Colourspace(self, name, primaries, whitepoint, whitepoint_name=None, matrix_RGB_to_XYZ=None, matrix_XYZ_to_RGB=None, cctf_encoding=None, cctf_decoding=None, use_derived_matrix_RGB_to_XYZ=False, use_derived_matrix_XYZ_to_RGB=False) |
... |
colour.RGB_to_XYZ |
RGB_to_XYZ(RGB, illuminant_RGB, illuminant_XYZ, matrix_RGB_to_XYZ, chromatic_adaptation_transform='CAT02', cctf_decoding=None, **kwargs) |
... |
colour.XYZ_to_RGB |
XYZ_to_RGB(XYZ, illuminant_XYZ, illuminant_RGB, matrix_XYZ_to_RGB, chromatic_adaptation_transform='CAT02', cctf_encoding=None, **kwargs) |
... |
| Object | Access | Author |
|---|---|---|
colour.models.ACES_RICD |
colour.characterisation.MSDS_ACES_RICD |
@KelSolaar |
| Object | Name | Author |
|---|---|---|
colour.RGB_Colourspace.RGB_to_XYZ_matrix |
matrix_RGB_to_XYZ |
@KelSolaar |
colour.RGB_Colourspace.XYZ_to_RGB_matrix |
matrix_XYZ_to_RGB |
... |
colour.RGB_Colourspace.use_derived_RGB_to_XYZ_matrix |
use_derived_matrix_RGB_to_XYZ |
... |
colour.RGB_Colourspace.use_derived_XYZ_to_RGB_matrix |
use_derived_matrix_XYZ_to_RGB |
... |
colour.RGB_to_RGB_matrix |
matrix_RGB_to_RGB |
... |
colour.YCBCR_WEIGHTS |
WEIGHTS_YCBCR |
... |
colour.models.ACES_2065_1_COLOURSPACE |
RGB_COLOURSPACE_ACES2065_1 |
... |
colour.models.ACES_CCT_COLOURSPACE |
RGB_COLOURSPACE_ACESCCT |
... |
colour.models.ACES_CC_COLOURSPACE |
RGB_COLOURSPACE_ACESCC |
... |
colour.models.ACES_CG_COLOURSPACE |
RGB_COLOURSPACE_ACESCG |
... |
colour.models.ACES_PROXY_COLOURSPACE |
RGB_COLOURSPACE_ACESPROXY |
... |
colour.models.ADOBE_RGB_1998_COLOURSPACE |
RGB_COLOURSPACE_ADOBE_RGB1998 |
... |
colour.models.ADOBE_WIDE_GAMUT_RGB_COLOURSPACE |
RGB_COLOURSPACE_ADOBE_WIDE_GAMUT_RGB |
... |
colour.models.ALEXA_WIDE_GAMUT_COLOURSPACE |
RGB_COLOURSPACE_ALEXA_WIDE_GAMUT |
... |
colour.models.APPLE_RGB_COLOURSPACE |
RGB_COLOURSPACE_APPLE_RGB |
... |
colour.models.BEST_RGB_COLOURSPACE |
RGB_COLOURSPACE_BEST_RGB |
... |
colour.models.BETA_RGB_COLOURSPACE |
RGB_COLOURSPACE_BETA_RGB |
... |
colour.models.BT2020_COLOURSPACE |
RGB_COLOURSPACE_BT2020 |
... |
colour.models.BT470_525_COLOURSPACE |
RGB_COLOURSPACE_BT470_525 |
... |
colour.models.BT470_625_COLOURSPACE |
RGB_COLOURSPACE_BT470_625 |
... |
colour.models.BT709_COLOURSPACE |
RGB_COLOURSPACE_BT709 |
... |
colour.models.CIE_RGB_COLOURSPACE |
RGB_COLOURSPACE_CIE_RGB |
... |
colour.models.CINEMA_GAMUT_COLOURSPACE |
RGB_COLOURSPACE_CINEMA_GAMUT |
... |
colour.models.COLOR_MATCH_RGB_COLOURSPACE |
RGB_COLOURSPACE_COLOR_MATCH_RGB |
... |
colour.models.DCDM_XYZ_COLOURSPACE |
RGB_COLOURSPACE_DCDM_XYZ |
... |
colour.models.DCI_P3_COLOURSPACE |
RGB_COLOURSPACE_DCI_P3_P |
... |
colour.models.DCI_P3_P_COLOURSPACE |
RGB_COLOURSPACE_DCI_P3 |
... |
colour.models.DISPLAY_P3_COLOURSPACE |
RGB_COLOURSPACE_DISPLAY_P3 |
... |
colour.models.DJI_D_GAMUT_COLOURSPACE |
RGB_COLOURSPACE_DJI_D_GAMUT |
... |
colour.models.DON_RGB_4_COLOURSPACE |
RGB_COLOURSPACE_DON_RGB_4 |
... |
colour.models.DRAGON_COLOR_2_COLOURSPACE |
RGB_COLOURSPACE_DRAGON_COLOR_2 |
... |
colour.models.DRAGON_COLOR_COLOURSPACE |
RGB_COLOURSPACE_DRAGON_COLOR |
... |
colour.models.ECI_RGB_V2_COLOURSPACE |
RGB_COLOURSPACE_ECI_RGB_V2 |
... |
colour.models.EKTA_SPACE_PS_5_COLOURSPACE |
RGB_COLOURSPACE_EKTA_SPACE_PS_5 |
... |
colour.models.ERIMM_RGB_COLOURSPACE |
RGB_COLOURSPACE_ERIMM_RGB |
... |
colour.models.FILMLIGHT_E_GAMUT_COLOURSPACE |
RGB_COLOURSPACE_FILMLIGHT_E_GAMUT |
... |
colour.models.F_GAMUT_COLOURSPACE |
RGB_COLOURSPACE_F_GAMUT |
... |
colour.models.MAX_RGB_COLOURSPACE |
RGB_COLOURSPACE_MAX_RGB |
... |
colour.models.NTSC_1953_COLOURSPACE |
RGB_COLOURSPACE_NTSC1953 |
... |
colour.models.NTSC_1987_COLOURSPACE |
RGB_COLOURSPACE_NTSC1987 |
... |
colour.models.P3_D65_COLOURSPACE |
RGB_COLOURSPACE_P3_D65 |
... |
colour.models.PAL_SECAM_COLOURSPACE |
RGB_COLOURSPACE_PAL_SECAM |
... |
colour.models.POINTER_GAMUT_BOUNDARIES |
CCS_POINTER_GAMUT_BOUNDARY |
... |
colour.models.POINTER_GAMUT_DATA |
DATA_POINTER_GAMUT_VOLUME |
... |
colour.models.POINTER_GAMUT_ILLUMINANT |
CCS_ILLUMINANT_POINTER_GAMUT |
... |
colour.models.PROPHOTO_RGB_COLOURSPACE |
RGB_COLOURSPACE_PROPHOTO_RGB |
... |
colour.models.PROTUNE_NATIVE_COLOURSPACE |
RGB_COLOURSPACE_PROTUNE_NATIVE |
... |
colour.models.RED_COLOR_2_COLOURSPACE |
RGB_COLOURSPACE_RED_COLOR_2 |
... |
colour.models.RED_COLOR_3_COLOURSPACE |
RGB_COLOURSPACE_RED_COLOR_3 |
... |
colour.models.RED_COLOR_4_COLOURSPACE |
RGB_COLOURSPACE_RED_COLOR_4 |
... |
colour.models.RED_COLOR_COLOURSPACE |
RGB_COLOURSPACE_RED_COLOR |
... |
colour.models.RED_WIDE_GAMUT_RGB_COLOURSPACE |
RGB_COLOURSPACE_RED_WIDE_GAMUT_RGB |
... |
colour.models.RIMM_RGB_COLOURSPACE |
RGB_COLOURSPACE_RIMM_RGB |
... |
colour.models.ROMM_RGB_COLOURSPACE |
RGB_COLOURSPACE_ROMM_RGB |
... |
colour.models.RUSSELL_RGB_COLOURSPACE |
RGB_COLOURSPACE_RUSSELL_RGB |
... |
colour.models.SHARP_RGB_COLOURSPACE |
RGB_COLOURSPACE_SHARP_RGB |
... |
colour.models.SMPTE_240M_COLOURSPACE |
RGB_COLOURSPACE_SMPTE_240M |
... |
colour.models.SMPTE_C_COLOURSPACE |
RGB_COLOURSPACE_SMPTE_C |
... |
colour.models.S_GAMUT3_CINE_COLOURSPACE |
RGB_COLOURSPACE_S_GAMUT3_CINE |
... |
colour.models.S_GAMUT3_COLOURSPACE |
RGB_COLOURSPACE_S_GAMUT3 |
... |
colour.models.S_GAMUT_COLOURSPACE |
RGB_COLOURSPACE_S_GAMUT |
... |
colour.models.VENICE_S_GAMUT3_CINE_COLOURSPACE |
RGB_COLOURSPACE_VENICE_S_GAMUT3_CINE |
... |
colour.models.VENICE_S_GAMUT3_COLOURSPACE |
RGB_COLOURSPACE_VENICE_S_GAMUT3 |
... |
colour.models.V_GAMUT_COLOURSPACE |
RGB_COLOURSPACE_V_GAMUT |
... |
colour.models.XTREME_RGB_COLOURSPACE |
RGB_COLOURSPACE_XTREME_RGB |
... |
colour.models.oetf_BT2020 |
eotf_inverse_BT2020 |
... |
colour.models.sRGB_COLOURSPACE |
RGB_COLOURSPACE_sRGB |
... |
colour.notationcolour.notation.RGB_to_HEX definition will now clip negative values and the whole input array will be normalised to the maximum value if values over 1 are encountered. (@KelSolaar)colour.plotting| Object | Signature | Author |
|---|---|---|
colour.plotting.plot_multi_colour_swatches |
plot_multi_colour_swatches(colour_swatches, width=1, height=1, spacing=0, columns=None, direction='+y', text_kwargs=None, background_colour=(1.0, 1.0, 1.0), compare_swatches=None, **kwargs) |
@KelSolaar |
colour.plotting.plot_image |
plot_image(image, imshow_kwargs=None, text_kwargs=None, **kwargs) |
... |
colour.plotting.plot_sds_in_chromaticity_diagram_CIE1931 |
plot_sds_in_chromaticity_diagram_CIE1931(sds, cmfs='CIE 1931 2 Degree Standard Observer', annotate_kwargs=None, chromaticity_diagram_callable_CIE1931=plot_chromaticity_diagram_CIE1931, **kwargs) |
... |
colour.plotting.plot_sds_in_chromaticity_diagram_CIE1960UCS |
plot_sds_in_chromaticity_diagram_CIE1960UCS(sds, cmfs='CIE 1931 2 Degree Standard Observer', annotate_kwargs=None, chromaticity_diagram_callable_CIE1960UCS=plot_chromaticity_diagram_CIE1960UCS, **kwargs) |
... |
colour.plotting.plot_sds_in_chromaticity_diagram_CIE1976UCS |
plot_sds_in_chromaticity_diagram_CIE1976UCS(sds, cmfs='CIE 1931 2 Degree Standard Observer', annotate_kwargs=None, chromaticity_diagram_callable_CIE1976UCS=plot_chromaticity_diagram_CIE1976UCS, **kwargs) |
... |
colour.plotting.plot_RGB_chromaticities_in_chromaticity_diagram_CIE1931 |
plot_RGB_chromaticities_in_chromaticity_diagram_CIE1931(RGB, colourspace='sRGB', chromaticity_diagram_callable_CIE1931=plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931, scatter_kwargs=None, **kwargs) |
... |
colour.plotting.plot_RGB_chromaticities_in_chromaticity_diagram_CIE1960UCS |
plot_RGB_chromaticities_in_chromaticity_diagram_CIE1960UCS(RGB, colourspace='sRGB', chromaticity_diagram_callable_CIE1960UCS=plot_RGB_colourspaces_in_chromaticity_diagram_CIE1960UCS, scatter_kwargs=None, **kwargs) |
... |
colour.plotting.plot_RGB_chromaticities_in_chromaticity_diagram_CIE1976UCS |
plot_RGB_chromaticities_in_chromaticity_diagram_CIE1976UCS(RGB, colourspace='sRGB', chromaticity_diagram_callable_CIE1976UCS=plot_RGB_colourspaces_in_chromaticity_diagram_CIE1976UCS, scatter_kwargs=None, **kwargs) |
... |
colour.plotting.plot_ellipses_MacAdam1942_in_chromaticity_diagram_CIE1931 |
plot_ellipses_MacAdam1942_in_chromaticity_diagram_CIE1931(chromaticity_diagram_callable_CIE1931=plot_chromaticity_diagram_CIE1931, chromaticity_diagram_clipping=False, ellipse_kwargs=None, **kwargs) |
... |
colour.plotting.plot_ellipses_MacAdam1942_in_chromaticity_diagram_CIE1960UCS |
plot_ellipses_MacAdam1942_in_chromaticity_diagram_CIE1960UCS(chromaticity_diagram_callable_CIE1960UCS=plot_chromaticity_diagram_CIE1960UCS, chromaticity_diagram_clipping=False, ellipse_kwargs=None, **kwargs) |
... |
colour.plotting.plot_ellipses_MacAdam1942_in_chromaticity_diagram_CIE1976UCS |
plot_ellipses_MacAdam1942_in_chromaticity_diagram_CIE1976UCS(chromaticity_diagram_callable_CIE1976UCS=plot_chromaticity_diagram_CIE1976UCS, chromaticity_diagram_clipping=False, ellipse_kwargs=None, **kwargs) |
... |
colour.plotting.plot_constant_hue_loci |
plot_constant_hue_loci(data, model, scatter_kwargs=None, **kwargs) |
... |
colour.plotting.plot_planckian_locus_in_chromaticity_diagram_CIE1931 |
plot_planckian_locus_in_chromaticity_diagram_CIE1931(illuminants=None, annotate_kwargs=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 |
plot_planckian_locus_in_chromaticity_diagram_CIE1960UCS(illuminants=None, annotate_kwargs=None, chromaticity_diagram_callable_CIE1960UCS=plot_chromaticity_diagram_CIE1960UCS, planckian_locus_callable_CIE1960UCS=plot_planckian_locus_CIE1960UCS, **kwargs) |
... |
| Object | Access | Author |
|---|---|---|
colour.plotting.quad |
colour.geometry.primitive_vertices_quad_mpl |
@KelSolaar |
colour.plotting.grid |
colour.geometry.primitive_vertices_grid_mpl |
... |
colour.plotting.cube |
colour.geometry.primitive_vertices_cube_mpl |
... |
| Object | Name | Author |
|---|---|---|
colour.plotting.ASTMG173_DIRECT_CIRCUMSOLAR |
SD_ASTMG173_DIRECT_CIRCUMSOLAR |
@KelSolaar |
colour.plotting.ASTMG173_ETR |
SD_ASTMG173_ETR |
... |
colour.plotting.ASTMG173_GLOBAL_TILT |
SD_ASTMG173_GLOBAL_TILT |
... |
| π | colour.plotting.COLOUR_STYLE_CONSTANTS |
CONSTANTS_COLOUR_STYLE |
colour.plotting.COLOUR_ARROW_STYLE |
CONSTANTS_ARROW_STYLE |
... |
colour.quality| Object | Name | Author |
|---|---|---|
colour.quality.CQS_Specification |
ColourRendering_Specification_CQS |
@KelSolaar |
colour.quality.CRI_Specification |
ColourRendering_Specification_CRI |
... |
colour.quality.TCS_SDS |
SDS_TCS |
... |
colour.quality.VS_SDS |
SDS_VS |
... |
colour.recovery| Object | Signature | Author |
|---|---|---|
colour.recovery.XYZ_to_sd_Meng2015 |
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_kwargs=None, **kwargs) |
@KelSolaar |
| Object | Name | Author |
|---|---|---|
colour.quality.SMITS_1999_SDS |
SDS_SMITS1999 |
@KelSolaar |
colour.temperature| Object | Signature | Author |
|---|---|---|
colour.temperature.CCT_to_xy_Hernandez1999 |
CCT_to_xy_Hernandez1999(CCT, optimisation_kwargs=None, **kwargs) |
@KelSolaar |
colour.temperature.CCT_to_xy_McCamy1992 |
CCT_to_xy_McCamy1992(CCT, optimisation_kwargs=None, **kwargs) |
... |
colour.temperature.uv_to_CCT_Krystek1985 |
uv_to_CCT_Krystek1985(uv, optimisation_kwargs=None, **kwargs) |
... |
colour.temperature.xy_to_CCT_CIE_D |
xy_to_CCT_CIE_D(xy, optimisation_kwargs=None, **kwargs) |
... |
colour.temperature.xy_to_CCT_Kang2002 |
xy_to_CCT_Kang2002(xy, optimisation_kwargs=None, **kwargs) |
... |
colour.utilities| Object | Signature | Author |
|---|---|---|
colour.utilities.as_float |
as_float(a, dtype=None) |
@KelSolaar |
colour.utilities.as_float_array |
as_float_array(a, dtype=None) |
... |
colour.utilities.as_int |
as_int(a, dtype=None) |
... |
colour.utilities.as_int_array |
as_int_array(a, dtype=None) |
... |
| β | colour.utilities.filter_warnings |
filter_warnings(colour_runtime_warnings=None, colour_usage_warnings=None, colour_warnings=None, python_warnings=None) |
colour.utilities.metric_mse |
metric_mse(a, b, axis=None) |
... |
colour.utilities.metric_psnr |
metric_psnr(a, b, max_a=1, axis=None) |
... |
| β | colour.utilities.suppress_warnings |
suppress_warnings(colour_runtime_warnings=None, colour_usage_warnings=None, colour_warnings=None, python_warnings=None) |
colour.volume| Object | Name | Author |
|---|---|---|
colour.ILLUMINANTS_OPTIMAL_COLOUR_STIMULI |
OPTIMAL_COLOUR_STIMULI_ILLUMINANTS |
@KelSolaar |
Colour 0.3.15 - Alpha Milestone
colour.colorimetryThe typical CIE LED illuminants spectral power distributions and chromaticity coordinates have been added to the datasets: (@KelSolaar)
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.modelscolour.models.Jab_to_JCh and colour.models.JCh_to_Jab definitions. (@KelSolaar)colour.plottingImporting 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.qualitycolour.spectral_similarity_index definition.colourVarious 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.iocolour.notationcolour.temperaturecolour.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)colour.algebracolour.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.volumecolour.is_within_visible_spectrum: (@KelSolaar)
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)
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)colour.plottingcolour.plotting.common.wrap_title: (@KelSolaar)
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:
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.
colour.colorimetrycolour.sds_and_multi_sds_to_sds definition that converts given spectral and multi-spectral distributions to a flat list of spectral distributions. (@KelSolaar)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)colour.correspondingcolour.corresponding_chromaticities_prediction definition can now use a colour.CorrespondingColourDataset class instance as argument. (@KelSolaar)colour.iocolour.read_image and colour.write_image definitions support Imageio and will fallback to it if OpenImageIO is not available.colour.graphThe 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'})
===============================================================================
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])
colour.modelscolour.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)colour.models.SMPTE_C_COLOURSPACE class and related NTSC (1987) RGB colourspace with colour.models.NTSC_1987_COLOURSPACE class. (@KelSolaar)colour.plottingAdd 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 loadfrom colour.plotting import plot_constant_hue_loci plot_constant_hue_loci(load('3362536'), 'IPT')
colour.temperaturecolour.temperature.xy_to_CCT_CIE_Dcolour.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_Kang2002colour.temperature.uv_to_CCT_Krystek1985colour.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.colour.qualitycolour.colour_quality_scale definition when using the additional_data argument were incorrectly scaled and have been fixed. (@KelSolaar)colour.adaptationcolour.adaptation.chromatic_adaptation_reverse_CMCCAT2000: (@KelSolaar)
chromatic_adaptation_inverse_CMCCAT2000colour.appearanceyield based tests dependent on nosetests have been replaced. (@MichaelMauderer)colour.characterisationcolour.colorimetrycolour.ASTME30815_PRACTISE_SHAPE: (@KelSolaar)
ASTME308_PRACTISE_SHAPEcolour.MultiSpectralDistribution: (@KelSolaar)
MultiSpectralDistributionscolour.multi_sds_to_XYZ: (@KelSolaar)
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)
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)
adjust_tristimulus_weighting_factors_ASTME308colour.colorimetry.lagrange_coefficients_ASTME202211: (@KelSolaar)
lagrange_coefficients_ASTME2022colour.colorimetry.luminance_ASTMD153508: (@KelSolaar)
luminance_ASTMD1535colour.colorimetry.sd_to_XYZ_ASTME30815: (@KelSolaar)
sd_to_XYZ_ASTME308colour.colorimetry.sd_to_XYZ_tristimulus_weighting_factors_ASTME30815: (@KelSolaar)
sd_to_XYZ_tristimulus_weighting_factors_ASTME308colour.colorimetry.tristimulus_weighting_factors_ASTME202211: (@KelSolaar)
tristimulus_weighting_factors_ASTME2022colour.continuouscolour.continuous.MultiSignal: (@KelSolaar)
MultiSignalscolour.iocolour.read_image: (@KelSolaar)
read_image(path, method='OpenImageIO', **kwargs)colour.write_image: (@KelSolaar)
write_image(image, path, method='OpenImageIO', **kwargs)colour.modelscolour.ENCODING_CCTFS: (@KelSolaar)
CCTF_ENCODINGScolour.encoding_cctf: (@KelSolaar)
cctf_encodingcolour.DECODING_CCTFS: (@KelSolaar)
CCTF_DECODINGScolour.decoding_cctf: (@KelSolaar)
cctf_decodingcolour.RGB_Colourspace.encoding_cctf: (@KelSolaar)
cctf_encodingcolour.RGB_Colourspace.decoding_cctf: (@KelSolaar)
decoding_cctfcolour.XYZ_to_RGB: (@KelSolaar)
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)
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)
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)
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)
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)
colour.log_decodinglog_decoding(value, function='Cineon', **kwargs)colour.LOG_DECODING_CURVES: (@KelSolaar)
colour.LOG_DECODINGScolour.log_encoding_curve: (@KelSolaar)
colour.log_encodinglog_encoding(value, function='Cineon', **kwargs)colour.LOG_ENCODING_CURVES: (@KelSolaar)
colour.LOG_ENCODINGSThe 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)
eotf_inverse_sRGBcolour.models.oetf_reverse_sRGB: (@KelSolaar)
eotf_sRGBVarious other colour component transfer functions objects have been either renamed or their signature changed:
colour.eotf: (@KelSolaar)
eotf(value, function='ITU-R BT.1886', **kwargs)colour.EOTFS_REVERSE: (@KelSolaar)
EOTF_INVERSEScolour.eotf_reverse: (@KelSolaar)
eotf_inverse(value, function='ITU-R BT.1886', **kwargs)colour.oetf: (@KelSolaar)
oetf(value, function='ITU-R BT.709', **kwargs)colour.OETFS_REVERSE: (@KelSolaar)
OETF_INVERSEScolour.oetf_reverse: (@KelSolaar)
oetf_inverse(value, function='ITU-R BT.709', **kwargs)colour.OOTFS_REVERSE: (@KelSolaar)
OOTF_INVERSEScolour.models.oetf_DICOMGSDF: (@KelSolaar)
eotf_inverse_DICOMGSDFcolour.models.eotf_reverse_BT1886: (@KelSolaar)
eotf_inverse_BT1886colour.models.eotf_reverse_DCDM: (@KelSolaar)
eotf_inverse_DCDMcolour.models.oetf_ST2084: (@KelSolaar)
eotf_inverse_ST2084colour.models.oetf_reverse_ARIBSTDB67: (@KelSolaar)
oetf_inverse_ARIBSTDB67colour.models.oetf_reverse_BT601: (@KelSolaar)
oetf_inverse_BT601colour.models.oetf_reverse_BT709: (@KelSolaar)
oetf_inverse_BT709colour.models.oetf_BT2100_HLG: (@KelSolaar, @nick-shaw)
oetf_HLG_BT2100oetf_HLG_BT2100(E, constants=BT2100_HLG_CONSTANTS)colour.models.oetf_reverse_BT2100_HLG: (@KelSolaar, @nick-shaw)
oetf_inverse_HLG_BT2100oetf_inverse_HLG_BT2100(E_p, constants=BT2100_HLG_CONSTANTS)colour.models.eotf_BT2100_HLG: (@KelSolaar, @nick-shaw)
eotf_HLG_BT2100eotf_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)
eotf_inverse_HLG_BT2100eotf_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)
ootf_HLG_BT2100ootf_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)
ootf_inverse_HLG_BT2100ootf_inverse_HLG_BT2100(F_D, L_B=0, gamma=None, method='ITU-R BT.2100-2')colour.models.oetf_BT2100_PQ: (@KelSolaar, @nick-shaw)
oetf_PQ_BT2100colour.models.oetf_reverse_BT2100_PQ: (@KelSolaar, @nick-shaw)
oetf_inverse_PQ_BT2100colour.models.eotf_BT2100_PQ: (@KelSolaar, @nick-shaw)
eotf_PQ_BT2100colour.models.eotf_reverse_BT2100_PQ: (@KelSolaar, @nick-shaw)
eotf_inverse_PQ_BT2100colour.models.ootf_BT2100_PQ: (@KelSolaar, @nick-shaw)
ootf_PQ_BT2100colour.models.ootf_reverse_BT2100_PQ: (@KelSolaar, @nick-shaw)
ootf_inverse_PQ_BT2100colour.models.log_encoding_Log3G10: (@KelSolaar)
log_encoding_Log3G10(x, method='v2', **kwargs)colour.models.log_decoding_Log3G10: (@KelSolaar)
log_decoding_Log3G10(y, method='v2', **kwargs)colour.models.log_encoding_CanonLog: (@KelSolaar, @nick-shaw, @KevinJW)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
log_decoding_SLog3(y, bit_depth=10, in_normalised_code_value=True, out_reflection=True, **kwargs)colour.models.oetf_ROMMRGB: (@KelSolaar)
cctf_encoding_ROMMRGBcolour.models.eotf_ROMMRGB: (@KelSolaar)
cctf_decoding_ROMMRGBcolour.models.oetf_ProPhotoRGB: (@KelSolaar)
cctf_encoding_ProPhotoRGBcolour.models.eotf_ProPhotoRGB: (@KelSolaar)
cctf_decoding_ProPhotoRGBcolour.models.oetf_RIMMRGB: (@KelSolaar)
cctf_encoding_RIMMRGBcolour.models.eotf_RIMMRGB: (@KelSolaar)
cctf_decoding_RIMMRGBcolour.models.XYZ_to_colourspace_model: (@feralpoosum)
colour.models.NTSC_COLOURSPACE: (@KelSolaar)
NTSC_1953_COLOURSPACEcolour.notationcolour.notation.munsell_value_ASTMD153508: (@KelSolaar)
munsell_value_ASTMD1535colour.plottingcolour.plotting.ASTM_G_173_DIRECT_CIRCUMSOLAR: (@KelSolaar)
ASTMG173_DIRECT_CIRCUMSOLARcolour.plotting.ASTM_G_173_ETR: (@KelSolaar)
ASTMG173_ETRcolour.plotting.ASTM_G_173_GLOBAL_TILT: (@KelSolaar)
ASTMG173_GLOBAL_TILTcolour.plotting.plot_single_sd_colour_quality_scale_bars: (@KelSolaar)
plot_single_sd_colour_quality_scale_bars(sd, method='NIST CQS 9.0', **kwargs)colour.plotting.plot_multi_sds_colour_quality_scales_bars: (@KelSolaar)
plot_multi_sds_colour_quality_scales_bars(sds, method='NIST CQS 9.0', **kwargs)colour.plotting.plot_planckian_locus_in_chromaticity_diagram_CIE1931: (@KelSolaar)
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)
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.recoverycolour.recovery.XYZ_to_sd_Meng2015: (@KelSolaar)
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.temperaturecolour.xy_to_CCT: (@KelSolaar)
xy_to_CCT(xy, method='CIE Illuminant D Series')colour.CCT_to_xy: (@KelSolaar)
CCT_to_xy(CCT, method='CIE Illuminant D Series')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.
colour.qualitycolour.uv_to_Luv and colour.uv_to_UCS conversion definitions. (@KelSolaar)colour.qualitycolour.COLOUR_QUALITY_SCALE_METHODS attribute was added to enumerate the available methods. (@KelSolaar)colour.utilitiescolour.utilities.multiprocessing_pool context manager to support domain-range scale propagation when multiprocessing code on Windows. (@KelSolaar)colour.appearancecolour.colorimetrycolour.whiteness: (@KelSolaar)
whiteness(XYZ, XYZ_0, method='CIE 2004', **kwargs)colour.notationcolour.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.plottingcolour.plotting.plot_single_sd: (@KelSolaar)
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)
plot_single_sd_colour_quality_scale_bars(sd, method='NIST CQS 7.4', **kwargs)colour.plotting.plot_multi_sds_colour_quality_scales_bars: (@KelSolaar)
plot_multi_sds_colour_quality_scales_bars(sds, method='NIST CQS 7.4', **kwargs)colour.qualitycolour.colour_quality_scale: (@KelSolaar)
colour_quality_scale(sd_test, additional_data=False, method='NIST CQS 9.0')colour.temperaturecolour.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)
colour.temperature.CCT_to_uv_Robertson1968: (@KelSolaar)
colour.volumecolour.RGB_colourspace_volume_MonteCarlo: (@KelSolaar)
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)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.
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.
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.
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.
π 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 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.
π 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.
The Barten (1999) contrast sensitivity function was implemented and can be used to estimate ideal code values as a function of viewing conditions.
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.
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_formcolour.algebra.ellipse_coefficients_canonical_formcolour.algebra.point_at_angle_on_ellipsecolour.algebra.ellipse_fitting_Halir1998colour.algebra.ELLIPSE_FITTING_METHODScolour.algebra.ellipse_fittingcolour.polynomial_expansion, colour.colour_correction_matrix, and colour.colour_correction definitions wrapping the following objects: (@KelSolaar)
colour.characterisation.augmented_matrix_Cheung2004,colour.characterisation.colour_correction_matrix_Cheung2004 andcolour.characterisation.colour_correction_Cheung2004 definitions.colour.characterisation.augmented_matrix_Finlayson2015,colour.characterisation.colour_correction_matrix_Finlayson2015 andcolour.characterisation.colour_correction_Finlayson2015 definitions.colour.characterisation.augmented_matrix_Vandermonde,colour.characterisation.colour_correction_matrix_Vandermonde andcolour.characterisation.colour_correction_Vandermonde definitions.colour.COLOURCHECKERS attribute and available with the following keys:
ColorChecker24 - Before November 2014ColorChecker24 - After November 2014colour.anomalous_trichromacy_cmfs_Machado2009, colour.anomalous_trichromacy_matrix_Machado2009 and colour.cvd_matrix_Machado2009 definitions. (@KelSolaar, @MichaelMauderer)colour.multi_sds_to_XYZ definition. (@KelSolaar)colour.MultiSpectralDistribution.signal_type property and colour.MultiSpectralDistribution.to_sds method. (@KelSolaar)colour.SD_GAUSSIAN_METHODScolour.sd_gaussiancolour.colorimetry.sd_single_led_Ohno2005colour.SD_SINGLE_LED_METHODScolour.sd_single_ledcolour.colorimetry.sd_multi_leds_Ohno2005colour.SD_MULTI_LEDS_METHODScolour.sd_multi_ledscolour.colorimetry.daylight_locus_function definition computing the the Daylight Locus chromaticity coordinate y_D for given chromaticity coordinate x_D. (@KelSolaar)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.delta_E_DIN99 definition.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 npimport 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.XYZ_to_JzAzBz and colour.JzAzBz_to_XYZ definitions. (@KelSolaar)colour.RGB_to_YCoCg and colour.YCoCg_to_RGB definitions. (@KelSolaar)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_CURVEScolour.OETFScolour.EOTFS_REVERSEcolour.DECODING_CCTFS and colour.decoding_cctf:colour.LOG_DECODING_CURVEScolour.EOTFScolour.OETFS_REVERSEcolour.Hunter_Rdab_to_XYZ definition. (@KelSolaar)colour.UVW_to_XYZ definition. (@KelSolaar)colour.xy_to_Luv_uv and colour.xy_to_UCS_uv definitions. (@KelSolaar)colour.models.DCDM_XYZ_COLOURSPACE. (@KelSolaar, @codycuellar)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)colour.models.P3_D65_COLOURSPACE attribute. (@jdvandenberg)colour.models.log_encoding_FilmicPro6 and colour.models.log.decoding_FilmicPro6 definitions. (@KelSolaar, @nick-shaw)attribute 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.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)colour.plotting.plot_pointer_gamut definition plotting Pointer's Gamut . (@KelSolaar)colour.plotting.plot_multi_colour_checkers definition. (@KelSolaar)colour.plotting.plot_single_function and colour.plotting.plot_multi_functions definitions. (@KelSolaar)colour.plotting.plot_single_luminance_function and colour.plotting.plot_multi_luminance_functions definitions. (@KelSolaar)colour.plotting.filter_passthrough utility definition. (@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.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()
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.XYZ_outer_surface definition generating CIE XYZ colourspace outer surface. (@KelSolaar)colour.volume.generate_pulse_waves definition generating pulse waves for CIE XYZ colourspace outer surface computation. (@KelSolaar)D intermediate variable calculation, colour.XYZ_to_CAM16 and colour.CAM16_to_XYZ definitions are affected. (@KelSolaar, @crowsonkb)colour.XYZ_to_ATD95 definition. (@KelSolaar)| 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.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.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%.colour.algebra.random_triplet_generator definition now returns a ndarray instead of an iterator, memory consumption is higher but speed is increased.colour.first_order_colour_fit: (@KelSolaar)
colour_correction_matrixcolour.COLOURCHECKERS_SPDS: (@KelSolaar)
COLOURCHECKERS_SDScolour.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)
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)
colour.blackbody_spd: (@KelSolaar)
sd_blackbodycolour.CIE_standard_illuminant_A_function: (@KelSolaar)
sd_CIE_standard_illuminant_Acolour.SpectralDistributioncolour.constant_spd: (@KelSolaar)
sd_constantcolour.D_illuminant_relative_spd: (@KelSolaar)
sd_CIE_illuminant_D_seriessd_CIE_illuminant_D_series(xy, M1_M2_rounding=True)colour.ILLUMINANTS_RELATIVE_SPDS: (@KelSolaar)
ILLUMINANTS_SDScolour.LIGHT_SOURCES_RELATIVE_SPDS: (@KelSolaar)
LIGHT_SOURCES_SDScolour.colorimetry.lightness_Fairchild2011: (@KelSolaar)
lightness_Fairchild2011(Y, epsilon=0.474, method='hdr-CIELAB')colour.colorimetry.luminance_Fairchild2011: (@KelSolaar)
luminance_Fairchild2011(L_hdr, epsilon=0.474, method='hdr-CIELAB')colour.mesopic_luminous_efficiency_function: (@KelSolaar)
sd_mesopic_luminous_efficiency_functioncolour.MultiSpectralPowerDistribution: (@KelSolaar)
MultiSpectralDistributioncolour.ones_spd: (@KelSolaar)
sd_onescolour.SpectralPowerDistribution: (@KelSolaar)
SpectralDistributioncolour.SPECTRAL_TO_XYZ_METHODS: (@KelSolaar)
SD_TO_XYZ_METHODScolour.spectral_to_XYZ: (@KelSolaar)
sd_to_XYZsd_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)
sd_zeroscolour.colorimetry.spectral_to_XYZ_ASTME30815: (@KelSolaar)
sd_to_XYZ_ASTME30815sd_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)
sd_to_XYZ_integrationsd_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)
sd_to_XYZ_tristimulus_weighting_factors_ASTME30815sd_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)
tristimulus_weighting_factors_ASTME202211cmfs, illuminant, shape, k=None)colour.constants.CIE_E: (@KelSolaar)
colour.constants.CIE_K: (@KelSolaar)
colour.IES_TM2714_Spd: (@KelSolaar)
SpectralDistribution_IESTM2714colour.read_image: (@KelSolaar, @nick-shaw)
read_image(path, bit_depth='float32', attributes=False)colour.read_spds_from_csv_file: (@KelSolaar)
read_sds_from_csv_filecolour.read_spds_from_xrite_file: (@KelSolaar)
read_sds_from_xrite_filecolour.write_spds_to_csv_file: (@KelSolaar)
write_sds_to_csv_filecolour.RGB_Colourspace.illuminant: (@KelSolaar)
whitepoint_namecolour.spectral_to_aces_relative_exposure_values: (@KelSolaar)
sd_to_aces_relative_exposure_valuescolour.models.DCI_P3_COLOURSPACE and colour.models.DCI_P3_P_COLOURSPACE colourspaces CCTFs have been changed for Gamma 2.6. (@KelSolaar, @codycuellar)0οΈβ£ The following transfer functions now take and output floating point values by default:
colour.models.oetf_DCIP3: (@KelSolaar, @codycuellar)
eotf_reverse_DCDMeotf_reverse_DCDM(XYZ, out_int=False)colour.models.eotf_DCIP3: (@KelSolaar, @codycuellar)
eotf_DCDMoetf_DCDM(XYZ, in_int=False)colour.models.oetf_DICOMGSDF: (@KelSolaar)
oetf_DICOMGSDF(L, out_int=False)colour.models.eotf_DICOMGSDF: (@KelSolaar)
eotf_DICOMGSDF(J, in_int=False)colour.models.oetf_ROMMRGB: (@KelSolaar)
oetf_ROMMRGB(X, bit_depth=8, out_int=False)colour.models.eotf_ROMMRGB: (@KelSolaar)
eotf_ROMMRGB(X_p, bit_depth=8, in_int=False)colour.models.oetf_ProPhotoRGB: (@KelSolaar)
oetf_ProPhotoRGB(X, bit_depth=8, out_int=False)colour.models.eotf_ProPhotoRGB: (@KelSolaar)
eotf_ProPhotoRGB(X_p, bit_depth=8, in_int=False)colour.models.oetf_RIMMRGB: (@KelSolaar)
oetf_RIMMRGB(X, bit_depth=8, out_int=False, E_clip=2.0)colour.models.eotf_RIMMRGB: (@KelSolaar)
eotf_RIMMRGB(X_p, bit_depth=8, in_int=False, E_clip=2.0)colour.models.log_encoding_ERIMMRGB: (@KelSolaar)
log_encoding_ERIMMRGB(X, bit_depth=8, out_int=False, E_min=0.001, E_clip=316.2)colour.models.log_decoding_ERIMMRGB: (@KelSolaar)
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_COLOURSPACEcolour.models.RED_COLOR_2_COLOURSPACEcolour.models.RED_COLOR_3_COLOURSPACEcolour.models.RED_COLOR_4_COLOURSPACEcolour.models.DRAGON_COLOR_COLOURSPACEcolour.models.DRAGON_COLOR_2_COLOURSPACEcolour.function_gamma: (@KelSolaar)
gamma_functioncolour.function_linear: (@KelSolaar)
linear_functioncolour.rayleigh_scattering_spd: (@KelSolaar)
sd_rayleigh_scatteringcolour.plotting.boundaries: (@KelSolaar)
colour.plotting.render definition.colour.plotting.decorate: (@KelSolaar)
colour.plotting.render definition.colour.plotting.display: (@KelSolaar)
colour.plotting.render definition.colour.plotting.colour_plotting_defaults: (@KelSolaar)
colour_plotting_stylecolour.plotting.get_RGB_colourspace: (@KelSolaar)
filter_RGB_colourspacesfilter_RGB_colourspaces(filterer, flags=re.IGNORECASE):colour.plotting.get_cmfs: (@KelSolaar)
filter_cmfsfilter_cmfs(filterer, flags=re.IGNORECASE):colour.plotting.get_illuminant: (@KelSolaar)
filter_illuminantsfilter_illuminants(filterer, flags=re.IGNORECASE):colour.plotting. label_rectangles: (@KelSolaar)
label_rectangles(labels, rectangles, rotation='vertical', text_size=10, offset=None)colour.plotting.cvd_simulation_Machado2009_plot: (@KelSolaar)
plot_cvd_simulation_Machado2009colour.plotting.single_colour_checker_plot: (@KelSolaar)
plot_single_colour_checkercolour.plotting.multi_colour_checker_plot: (@KelSolaar)
plot_multi_colour_checkerscolour.plotting.single_spd_plot: (@KelSolaar)
plot_single_sdcolour.plotting.multi_spd_plot: (@KelSolaar)
plot_multi_sdscolour.plotting.single_cmfs_plot: (@KelSolaar)
plot_single_cmfscolour.plotting.multi_cmfs_plot: (@KelSolaar)
plot_multi_cmfscolour.plotting.single_illuminant_spd_plot: (@KelSolaar)
plot_single_illuminant_sdcolour.plotting.multi_illuminant_spd_plot: (@KelSolaar)
plot_multi_illuminant_sdscolour.plotting.visible_spectrum_plot: (@KelSolaar)
plot_visible_spectrumcolour.plotting.single_lightness_function_plot: (@KelSolaar)
plot_single_lightness_functioncolour.plotting.multi_lightness_function_plot: (@KelSolaar)
plot_multi_lightness_functionscolour.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)
plot_blackbody_spectral_radiancecolour.plotting.blackbody_colours_plot: (@KelSolaar)
plot_blackbody_colourscolour.plotting.single_colour_swatch_plot: (@KelSolaar)
plot_single_colour_swatchcolour.plotting.multi_colour_swatch_plot: (@KelSolaar)
plot_multi_colour_swatchesplot_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)
plot_imageplot_image(image, text_parameters=None, interpolation='nearest', colour_map=matplotlib.cm.Greys_r, **kwargs)colour.plotting.corresponding_chromaticities_prediction_plot: (@KelSolaar)
plot_corresponding_chromaticities_predictioncolour.plotting.spectral_locus_plot: (@KelSolaar)
plot_spectral_locuscolour.plotting.chromaticity_diagram_colours_plot: (@KelSolaar)
plot_chromaticity_diagram_colourscolour.plotting.chromaticity_diagram_plot: (@KelSolaar)
plot_chromaticity_diagramcolour.plotting.chromaticity_diagram_plot_CIE1931: (@KelSolaar)
plot_chromaticity_diagram_CIE1931plot_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)
plot_chromaticity_diagram_CIE1960UCSplot_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)
plot_chromaticity_diagram_CIE1976UCSplot_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)
plot_sds_in_chromaticity_diagramcolour.plotting.spds_chromaticity_diagram_plot_CIE1931: (@KelSolaar)
plot_sds_in_chromaticity_diagram_CIE1931plot_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)
plot_sds_in_chromaticity_diagram_CIE1960UCSplot_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)
plot_sds_in_chromaticity_diagram_CIE1976UCSplot_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)
plot_RGB_colourspaces_in_chromaticity_diagramcolour.plotting.RGB_colourspaces_chromaticity_diagram_plot_CIE1931: (@KelSolaar)
plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931colour.plotting.RGB_colourspaces_chromaticity_diagram_plot_CIE1960UCS: (@KelSolaar)
plot_RGB_colourspaces_in_chromaticity_diagram_CIE1960UCScolour.plotting.RGB_colourspaces_chromaticity_diagram_plot_CIE1976UCS: (@KelSolaar)
plot_RGB_colourspaces_in_chromaticity_diagram_CIE1976UCScolour.plotting.RGB_chromaticity_coordinates_chromaticity_diagram_plot: (@KelSolaar)
plot_RGB_chromaticities_in_chromaticity_diagramcolour.plotting.RGB_chromaticity_coordinates_chromaticity_diagram_plot_CIE1931: (@KelSolaar)
plot_RGB_chromaticities_in_chromaticity_diagram_CIE1931plot_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)
plot_RGB_chromaticities_in_chromaticity_diagram_CIE1960UCSplot_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)
plot_RGB_chromaticities_in_chromaticity_diagram_CIE1976UCSplot_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)
plot_single_cctfcolour.plotting.multi_cctf_plot: (@KelSolaar)
plot_multi_cctfscolour.plotting.single_munsell_value_function_plot: (@KelSolaar)
plot_single_munsell_value_functioncolour.plotting.multi_munsell_value_function_plot: (@KelSolaar)
plot_multi_munsell_value_functionscolour.plotting.single_rayleigh_scattering_spd_plot: (@KelSolaar)
plot_single_sd_rayleigh_scatteringcolour.plotting.the_blue_sky_plot: (@KelSolaar)
plot_the_blue_skycolour.plotting.colour_quality_bars_plot: (@KelSolaar)
plot_colour_quality_barscolour.plotting.single_spd_colour_rendering_index_bars_plot: (@KelSolaar)
plot_single_sd_colour_rendering_index_barscolour.plotting.multi_spd_colour_rendering_index_bars_plot: (@KelSolaar)
plot_multi_sds_colour_rendering_indexes_barscolour.plotting.single_spd_colour_quality_scale_bars_plot: (@KelSolaar)
plot_single_sd_colour_quality_scale_barscolour.plotting.multi_spd_colour_quality_scale_bars_plot: (@KelSolaar)
plot_multi_sds_colour_quality_scales_barscolour.plotting.planckian_locus_plot: (@KelSolaar)
plot_planckian_locuscolour.plotting.planckian_locus_chromaticity_diagram_plot: (@KelSolaar)
plot_planckian_locus_in_chromaticity_diagramcolour.plotting.planckian_locus_chromaticity_diagram_plot_CIE1931: (@KelSolaar)
plot_planckian_locus_in_chromaticity_diagram_CIE1931colour.plotting.planckian_locus_chromaticity_diagram_plot_CIE1960UCS: (@KelSolaar)
plot_planckian_locus_in_chromaticity_diagram_CIE1960UCScolour.plotting.RGB_colourspaces_gamuts_plot: (@KelSolaar)
plot_RGB_colourspaces_gamutscolour.plotting.RGB_scatter_plot: (@KelSolaar)
plot_RGB_scattercolour.REFLECTANCE_RECOVERY_METHODS: (@KelSolaar)
XYZ_TO_SD_METHODScolour.XYZ_to_spectral: (@KelSolaar)
XYZ_to_sdcolour.recovery.RGB_to_spectral_Smits1999: (@KelSolaar)
RGB_to_sd_Smits1999colour.recovery.RGB_to_sd_Smits1999 output spectral distribution defaults to colour.LinearInterpolator interpolator. (@KelSolaar)colour.recovery.XYZ_to_spectral_Meng2015: (@KelSolaar)
XYZ_to_sd_Meng2015XYZ_to_sd_Meng2015(XYZ, cmfs=STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'], interval=5, optimisation_parameters=None)colour.utilities.filter_warnings: (@KelSolaar)
filter_warnings(state=True, colour_warnings=True, colour_runtime_warnings=False, colour_usage_warnings=False, python_warnings=False)colour.utilities.message_box: (@KelSolaar)
message_box(message, width=79, padding=3, print_callable=print)colour.utilities.as_numeric: (@KelSolaar)
as_numeric(a, dtype=DEFAULT_FLOAT_DTYPE)colour.is_within_visible_spectrum: (@KelSolaar)
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)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.
colour.chromatic_adaptation definition wrapping the following definitions: (@KelSolaar)
colour.adaptation.chromatic_adaptation_CIE1994colour.adaptation.chromatic_adaptation_CMCCAT2000colour.adaptation.chromatic_adaptation_Fairchild1990colour.adaptation.chromatic_adaptation_VonKriescolour.NullInterpolator class: a call within given tolerances will return existing y variable values or default if outside tolerances. (@KelSolaar)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.XYZ_to_CAM16 and colour.CAM16_to_XYZ definitions. (@KelSolaar)colour.continuous.AbstractContinuousFunction, colour.continuous.Signal and colour.continuous.MultiSignal classes implementing support for continuous functions/signals representation. (@KelSolaar, @MichaelMauderer)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 1976CIE 1994CIE 2000CMCCAM02-LCDCAM02-SCDCAM02-UCSCAM16-LCDCAM16-SCDCAM16-UCScolour.models.oetf_BT2100_PQcolour.models.oetf_reverse_BT2100_PQcolour.models.eotf_BT2100_PQcolour.models.eotf_reverse_BT2100_PQcolour.models.ootf_BT2100_PQcolour.models.ootf_reverse_BT2100_PQcolour.models.oetf_BT2100_HLGcolour.models.oetf_reverse_BT2100_HLGcolour.models.eotf_BT2100_HLGcolour.models.eotf_reverse_BT2100_HLGcolour.models.ootf_BT2100_HLGcolour.models.ootf_reverse_BT2100_HLGcolour.models.oetf_SMPTE240M and colour.models.eotf_SMPTE240M definitions. (@KelSolaar)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)colour.legal_to_full and colour.full_to_legal definitions providing conversions between full range and legal range. (@KelSolaar)colour.CV_range definition returning the Code Value range for given bit depth, range legality and representation. (@nick-shaw)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)colour.RGB_Colourspace. __str__ and colour.RGB_Colourspace. __repr__ methods.colour.XYZ_to_spectral definition wrapping the following definitions: (@KelSolaar)
colour.recovery.XYZ_to_spectral_Meng2015colour.recovery.RGB_to_spectral_Smits1999colour.utilities.closest_indexes definition that returns a array closest element indexes to reference b array elements. (@KelSolaar)colour..utilities.fill_nan definition that fills given array NaNs either through linear interpolation or with given constant value. (@KelSolaar)colour.utilities.ndarray_write context manager that sets given array writeable to perform an operation and then read-only. (@KelSolaar)colour.utilities.first_item definition that returns the first item of given iterable. (@KelSolaar)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.display definition was raising an exception when attempting to save a figure. (@KelSolaar)colour.recovery.XYZ_to_spectral_Meng2015 definition recovered spectral power distribution has been scaled by 100. (@KelSolaar)colour.temperature.uv_to_CCT_Ohno2013 definition was incorrectly using parabolic solution. (@brandondube, @KelSolaar)
colour.utilities.is_iterable definition does not consume consumes the first item of given iterator. (@KelSolaar, @MichaelMauderer)colour.adaptation.chromatic_adaptation_CMCCAT2000: (@KelSolaar)
chromatic_adaptation_CMCCAT2000(XYZ, XYZ_w, XYZ_wr, L_A1, L_A2, surround=CMCCAT2000_VIEWING_CONDITIONS['Average'], direction='Forward')colour.DEFAULT_WAVELENGTH_DECIMALS: (@KelSolaar)
colour.SpectralMapping: (@KelSolaar)
colour.SpectralPowerDistribution: (@KelSolaar)
__init__ (self, data=None, domain=None, **kwargs)colour.SpectralPowerDistribution.data: (@KelSolaar)
colour.SpectralPowerDistribution.title: (@KelSolaar)
SpectralPowerDistribution.strict_namecolour.SpectralPowerDistribution.items: (@KelSolaar)
colour.SpectralPowerDistribution. __iter__: (@KelSolaar)
colour.SpectralPowerDistribution.get: (@KelSolaar)
colour.SpectralPowerDistribution.extrapolate: (@KelSolaar)
extrapolate(self, shape, extrapolator=None, extrapolator_args=None)colour.SpectralPowerDistribution.interpolate: (@KelSolaar)
interpolate(self, shape, interpolator=None, interpolator_args=None)colour.SpectralPowerDistribution.align: (@KelSolaar)
align(self, shape, interpolator=None, interpolator_args=None, extrapolator=None, extrapolator_args=None)colour.SpectralPowerDistribution.trim_wavelengths: (@KelSolaar)
SpectralPowerDistribution.trimcolour.SpectralPowerDistribution.zeros: (@KelSolaar)
π― colour.SpectralPowerDistribution.clone: (@KelSolaar)
SpectralPowerDistribution.copycolour.MultiSpectralPowerDistribution: (@KelSolaar)
__init__ (self, data=None, domain=None, labels=None, **kwargs)colour.MultiSpectralPowerDistribution.mapping: (@KelSolaar)
colour.MultiSpectralPowerDistribution.data: (@KelSolaar)
colour.MultiSpectralPowerDistribution.title: (@KelSolaar)
MultiSpectralPowerDistribution.strict_namecolour.MultiSpectralPowerDistribution.x: (@KelSolaar)
colour.MultiSpectralPowerDistribution.y: (@KelSolaar)
colour.MultiSpectralPowerDistribution.z: (@KelSolaar)
colour.MultiSpectralPowerDistribution.items: (@KelSolaar)
colour.MultiSpectralPowerDistribution. __iter__: (@KelSolaar)
colour.MultiSpectralPowerDistribution.get: (@KelSolaar)
colour.MultiSpectralPowerDistribution.extrapolate: (@KelSolaar)
extrapolate(self, shape, extrapolator=None, extrapolator_args=None)colour.MultiSpectralPowerDistribution.interpolate: (@KelSolaar)
interpolate(self, shape, interpolator=None, interpolator_args=None)colour.MultiSpectralPowerDistribution.align: (@KelSolaar)
align(self, shape, interpolator=None, interpolator_args=None, extrapolator=None, extrapolator_args=None)colour.MultiSpectralPowerDistribution.trim_wavelengths: (@KelSolaar)
MultiSpectralPowerDistribution.trimcolour.MultiSpectralPowerDistribution.zeros: (@KelSolaar)
π― colour.MultiSpectralPowerDistribution.clone: (@KelSolaar)
MultiSpectralPowerDistribution.copycolour.models.log_encoding_SLog: (@nick-shaw, @KelSolaar)
log_encoding_SLog(x, bit_depth=10, out_legal=True, in_reflection=True)colour.models.log_decoding_SLog: (@nick-shaw, @KelSolaar)
log_decoding_SLog(y, bit_depth=10, in_legal=True, out_reflection=True)colour.models.log_encoding_SLog2: (@nick-shaw, @KelSolaar)
log_encoding_SLog2(x, bit_depth=10, out_legal=True, in_reflection=True)colour.models.log_decoding_SLog2: (@nick-shaw, @KelSolaar)
log_decoding_SLog2(y, bit_depth=10, in_legal=True, out_reflection=True)colour.models.log_encoding_SLog3: (@nick-shaw, @KelSolaar)
log_encoding_SLog3(x, bit_depth=10, out_legal=True, in_reflection=True)colour.models.log_decoding_SLog3: (@nick-shaw, @KelSolaar)
log_decoding_SLog3(y, bit_depth=10, in_legal=True, out_reflection=True)colour.models.log_encoding_VLog: (@nick-shaw, @KelSolaar)
log_encoding_VLog(L_in, bit_depth=10, out_legal=True, in_reflection=True)colour.models.log_decoding_VLog: (@nick-shaw, @KelSolaar)
log_decoding_VLog(V_out, bit_depth=10, in_legal=True, out_reflection=True)colour.models.log_encoding_CanonLog: (@nick-shaw, @KelSolaar)
log_encoding_CanonLog(x, bit_depth=10, out_legal=True, in_reflection=True)colour.models.log_decoding_CanonLog: (@nick-shaw, @KelSolaar)
log_decoding_CanonLog(clog_ire, bit_depth=10, in_legal=True, out_reflection=True)colour.models.log_encoding_CanonLog2: (@nick-shaw, @KelSolaar)
log_encoding_CanonLog2(x, bit_depth=10, out_legal=True, in_reflection=True)colour.models.log_decoding_CanonLog2: (@nick-shaw, @KelSolaar)
log_decoding_CanonLog2(clog2_ire, bit_depth=10, in_legal=True, out_reflection=True)colour.models.log_encoding_CanonLog3: (@nick-shaw, @KelSolaar)
log_encoding_CanonLog3(x, bit_depth=10, out_legal=True, in_reflection=True)colour.models.log_decoding_CanonLog3: (@nick-shaw, @KelSolaar)
log_decoding_CanonLog3(clog3_ire, bit_depth=10, in_legal=True, out_reflection=True)colour.models.eotf_ARIBSTDB67: (@KelSolaar, @nick-shaw, @KevinJW)
oetf_reverse_ARIBSTDB67colour.models.eotf_BT709: (@KelSolaar, @nick-shaw, @KevinJW)
oetf_reverse_BT709colour.models.oetf_BT1886: (@KelSolaar, @nick-shaw, @KevinJW)
eotf_reverse_BT1886colour.models.eotf_sRGB: (@KelSolaar, @nick-shaw, @KevinJW)
oetf_reverse_sRGBcolour.models.ALEXA_WIDE_GAMUT_RGB_COLOURSPACE: (@KelSolaar)
ALEXA_WIDE_GAMUT_COLOURSPACEcolour.models.NTSC_RGB_COLOURSPACE: (@KelSolaar)
NTSC_COLOURSPACEcolour.models.PAL_SECAM_RGB_COLOURSPACE: (@KelSolaar)
PAL_SECAM_COLOURSPACEcolour.models.REC_709_COLOURSPACE: (@KelSolaar, @nick-shaw, @KevinJW, @meshula)
BT709_COLOURSPACEcolour.models.REC_2020_COLOURSPACE: (@KelSolaar, @nick-shaw, @KevinJW, @meshula)
BT2020_COLOURSPACEcolour.models.SMPTE_C_RGB_COLOURSPACE: (@KelSolaar)
SMPTE_240M_COLOURSPACEcolour.plotting.CIE_1931_chromaticity_diagram_plot: (@brandondube, @KelSolaar)
chromaticity_diagram_plot_CIE1931colour.plotting.CIE_1960_UCS_chromaticity_diagram_plot: (@brandondube, @KelSolaar)
chromaticity_diagram_plot_CIE1960UCScolour.plotting.CIE_1976_UCS_chromaticity_diagram_plot: (@brandondube, @KelSolaar)
chromaticity_diagram_plot_CIE1976UCScolour.plotting.spds_CIE_1931_chromaticity_diagram_plot: (@KelSolaar)
spds_chromaticity_diagram_plot_CIE1931spds_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)
spds_chromaticity_diagram_plot_CIE1960UCSspds_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)
spds_chromaticity_diagram_plot_CIE1976UCSspds_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)
RGB_colourspaces_chromaticity_diagram_plot_CIE1931RGB_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)
RGB_colourspaces_chromaticity_diagram_plot_CIE1960UCSRGB_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)
RGB_colourspaces_chromaticity_diagram_plot_CIE1976UCSRGB_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)
RGB_chromaticity_coordinates_chromaticity_diagram_plot_CIE1931RGB_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)
RGB_chromaticity_coordinates_chromaticity_diagram_plot_CIE1960UCSRGB_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)
RGB_chromaticity_coordinates_chromaticity_diagram_plot_CIE1976UCSRGB_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)
planckian_locus_chromaticity_diagram_plot_CIE1931planckian_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)
planckian_locus_chromaticity_diagram_plot_CIE1960UCSplanckian_locus_chromaticity_diagram_plot_CIE1960UCS(illuminants=None, chromaticity_diagram_callable_CIE1960UCS=(chromaticity_diagram_plot_CIE1960UCS), **kwargs)colour.ArbitraryPrecisionMapping: (@KelSolaar)
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.
colour.reaction_rate_MichealisMenten and colour.substrate_concentration_MichealisMenten definitions. (@KelSolaar)colour.eotf_ARIBSTDB67 and colour.oetf_ARIBSTDB67 definitions. (@KelSolaar)colour.eotf_DICOMGSDF and colour.oetf_DICOMGSDF definitions. (@KelSolaar)colour.PROTUNE_NATIVE_COLOURSPACE colourspace class. (@KelSolaar)colour.log_encoding_Protune and colour.log_decoding_Protune definitions. (@KelSolaar)colour.RGB_to_Prismatic and colour.Prismatic_to_RGB definitions. (@KelSolaar)colour.XYZ_to_hdr_CIELab, colour.hdr_CIELab_to_XYZ, colour.XYZ_to_hdr_IPT and colour.hdr_IPT_to_XYZ definitions. (@KelSolaar)colour.XYZ_to_spectral_Meng2015 definition. (@KelSolaar)colour.as_namedtuple definition that attempts to convert given array_like, Mapping or Numpy structured array to namedtuple. (@KelSolaar)colour.XYZ_to_CIECAM02 and colour.CIECAM02_to_XYZ definitions handles negative numbers gracefully as per CIECAM02 and Its Recent Developments (@crowsonkb)colour.TriSpectralPowerDistribution.items method was broken. (@KelSolaar)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)CIECAM02_to_XYZ(CIECAM02_specification, XYZ_w, L_A, Y_b, surround=CIECAM02_VIEWING_CONDITIONS['Average'], discount_illuminant=False)whiteness_ASTME313colour.eotf_BT1886: (@KelSolaar, @nick-shaw)
eotf_BT1886(V, L_B=0, L_W=1)colour.oetf_BT1886: (@KelSolaar, @nick-shaw)
oetf_BT1886(L, L_B=0, L_W=1)colour.gamma_function: (@KelSolaar)
function_gammacolour.linear_function: (@KelSolaar)
function_linearColour 0.3.9 - Alpha Milestone
colour.CAMERAS_RGB_SPECTRAL_SENSITIVITIES attribute. (@KelSolaar)colour.SpectralPowerDistribution and colour.TriSpectralPowerDistribution classes have been optimised and are now 6.5 times faster on usual computations. (@KelSolaar)colour.delta_E_CAM02LCD, colour.delta_E_CAM02SCD, and colour.delta_E_CAM02UCS definitions. (@KelSolaar)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.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.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)colour.RGB_to_ICTCP and colour.ICTCP_to_RGB definitions. (@KelSolaar)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)colour.log_encoding_CanonLog2, colour.log_decoding_CanonLog2, colour.log_encoding_CanonLog3 and colour.log_decoding_CanonLog3 definitions. (@KelSolaar)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)colour.ACES_CCT_COLOURSPACE colourspace class and colour.log_encoding_ACEScct, colour.log_encoding_ACEScct definitions. (@scooperxyz)colour.RGB_to_RGB_matrix definition computing the matrix converting from given input RGB colourspace to output RGB colourspace. (@KelSolaar, @KevinJW)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.linear_conversion definition performing a simple linear conversion of given array between the old and new range. (@KelSolaar)colour.cartesian_to_cylindrical: (@KelSolaar)
colour.cylindrical_to_cartesian: (@KelSolaar)
cylindrical_to_cartesian(a), cylindrical coordinates array (radial distance Ο, azimuth Ο, and height z)colour.characterisation.dataset.colour_checkers.chromaticity_coordinates.ColourChecker_Specification: (@KelSolaar)
ColourChecker_Specification('index', 'name', 'xyY')colour.DEFAULT_SPECTRAL_SHAPE: (@KelSolaar)
SpectralShape(360, 780, 1)colour.log_encoding_ACESproxy: (@KelSolaar)
log_encoding_ACESproxy(lin_AP1, bit_depth='10 Bit')colour.log_encoding_ACEScc: (@KelSolaar)
log_encoding_ACEScc(lin_AP1)colour.oetf_ROMMRGB: (@KelSolaar)
oetf_ROMMRGB(X, I_max=255)colour.eotf_ROMMRGB: (@KelSolaar)
eotf_ROMMRGB(X_p, I_max=255)colour.RGB_to_RGB: (@KelSolaar, @scooperxyz)
RGB_to_RGB(RGB, input_colourspace, output_colourspace, chromatic_adaptation_transform='CAT02', apply_decoding_cctf=False, apply_encoding_cctf=False)colour.plotting.multi_colour_plot: (@KelSolaar)
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.CCT_to_uv: (@KelSolaar)
CCT_to_uv(CCT, method='Ohno 2013', **kwargs)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.
colour.lagrange_coefficients definition computing Lagrange Coefficients at given point for given degree. (@KelSolaar)colour.normalise_vector definition performing vector normalisation. (@KelSolaar)colour.euclidean_distance definition computing the euclidean distance between two vector arrays. (@KelSolaar)colour.intersect_line_segments definition performing line segment intersections computations. (@KelSolaar)colour.RGB_DisplayPrimaries class providing support for RGB displays primaries tri-spectral power distributions. (@KelSolaar)colour.CIE_standard_illuminant_A_function definition computing CIE Standard Illuminant A value at given wavelength range. (@KelSolaar)colour.SpectralShape.boundaries method returning the boundaries start and end values of given shape. (@KelSolaar)colour.SpectralPowerDistribution.trim_wavelengths and colour.TriSpectralPowerDistribution.trim_wavelengths methods trimming their respective classes wavelength range to given shape. (@KelSolaar, @MichaelMauderer, @Ron024)colour.dominant_wavelength definition computing the dominant wavelength of a given colour stimulus xy chromaticity coordinates. (@KelSolaar)colour.complementary_wavelength definition computing the complementary wavelength of a given colour stimulus xy chromaticity coordinates. (@KelSolaar)colour.excitation_purity definition computing the excitation purity of a given colour stimulus xy chromaticity coordinates. (@KelSolaar)colour.colorimetric_purity definition computing the colorimetric purity of a given colour stimulus xy chromaticity coordinates. (@KelSolaar)colour.tristimulus_weighting_factors_ASTME202211 definition computing tristimulus weighting factors tables using practise ASTM E2022β11 method. (@KelSolaar, @MichaelMauderer )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)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 )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 )colour.luminous_efficiency definition computing Luminous Efficiency of given spectral power distribution. (@KelSolaar, @canavandl)colour.colorimetry.dataset.illuminants.hunterlab documentation references for links to more information. (@KelSolaar, @Ron024)colour.corresponding_chromaticities_prediction generic corresponding chromaticities prediction definition. (@KelSolaar)colour.XYZ_to_Hunter_Lab, colour.Hunter_Lab_to_XYZ and colour.XYZ_to_Hunter_Rdab definitions. (@KelSolaar, @Ron024)colour.RGB_to_YCbCr, colour.YCbCr_to_RGB, colour.RGB_to_YcCbcCrc and colour.YcCbcCrc_to_RGB definitions. (@nick-shaw, @KelSolaar, @KevinJW)colour.eotf_BT1886 and colour.eotf_BT1886 definitions. (@KelSolaar)colour.eotf_ST2084 and colour.oetf_ST2084 definitions. (@KelSolaar)colour.log_encoding_REDLog and colour.log_decoding_REDLog definitions. (@nick-shaw, @KelSolaar)colour.log_encoding_ACESproxy and colour.log_decoding_ACESproxy definitions. (@KelSolaar)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)colour.gamma_function definition. (@KelSolaar)colour.linear_function definition. (@KelSolaar)colour.oetf and colour.eotf definitions and colour.OETFS and colour.EOTFS attributes providing single point access to supported OETFs and EOTFs. (@KelSolaar)colour.centroid definition computing array centroid indexes.colour.orient definition performing array rotation, flip and flop.colour.filter_kwargs definition filtering incompatible keyword arguments with given function signature.colour.filter_warnings definition filtering API warnings.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.nadir_grid had various issues and wasn't working properly since Colour 0.3.7. (@KelSolaar)colour.write_spds_to_csv_file definition now correctly writes CSV files without extra line breaks on Windows. (@Ron024)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)colour.CMCCAT2000_forward: (@KelSolaar)
colour.chromatic_adaptation_forward_CMCCAT2000colour.CMCCAT2000_reverse: (@KelSolaar)
colour.chromatic_adaptation_reverse_CMCCAT2000colour.is_identity: (@KelSolaar)
colour.is_identity(a, n=3)colour.cartesian_to_spherical: (@KelSolaar)
colour.cartesian_to_spherical(a)colour.spherical_to_cartesian: (@KelSolaar)
colour.spherical_to_cartesian(a)colour.cartesian_to_cylindrical: (@KelSolaar)
colour.cartesian_to_cylindrical(a)colour.cylindrical_to_cartesian: (@KelSolaar)
colour.cylindrical_to_cartesian(a)colour.first_order_colour_fit: (@KelSolaar)
colour.first_order_colour_fit(m_1, m_2)colour.ILLUMINANTS['CIE 1931 2 Degree Standard Observer']['D50']: (@KelSolaar)
(0.34570, 0.35850)colour.ILLUMINANTS['CIE 1931 2 Degree Standard Observer']['D65']: (@KelSolaar)
(0.31270, 0.32900)colour.SpectralShape.steps: (@KelSolaar)
colour.SpectralShape.intervalcolour.SpectralPowerDistribution and colour.TriSpectralPowerDistribution classes arithmetical operations suchspd /= np.max(spd.values) instead of spd / np.max(spd.values). (@KelSolaar)colour.SpectralPowerDistribution.align: (@KelSolaar)
colour.SpectralPowerDistribution.align(self, shape, interpolation_method=None, extrapolation_method='Constant', extrapolation_left=None, extrapolation_right=None)colour.TriSpectralPowerDistribution.align: (@KelSolaar)
colour.TriSpectralPowerDistribution.align(self, shape, interpolation_method=None, extrapolation_method='Constant', extrapolation_left=None, extrapolation_right=None)colour.spectral_to_XYZ: (@KelSolaar)
colour.spectral_to_XYZ definition will now use practise ASTM E308β15 method instead of classical integration.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)
colour.lightness_CIE1976colour.luminance_1976: (@KelSolaar)
colour.luminance_CIE1976colour.luminous_efficiency: (@KelSolaar, @canavandl)
colour.luminous_efficacycolour.delta_E_CIE1976: (@KelSolaar)
colour.delta_E_CIE1976(Lab_1, Lab_2, **kwargs)colour.delta_E_CIE1994: (@KelSolaar)
colour.delta_E_CIE1994(Lab_1, Lab_2, textiles=False, **kwargs)colour.delta_E_CIE2000: (@KelSolaar)
colour.delta_E_CIE2000(Lab_1, Lab_2, textiles=False, **kwargs)colour.delta_E_CMC: (@KelSolaar)
colour.delta_E_CMC(Lab_1, Lab_2, l=2, c=1)colour.models.rgb. (@KelSolaar)colour.models.rgb.transfer_functions. (@KelSolaar)colour.RGB_Colourspace.OECF: (@KelSolaar)
colour.RGB_Colourspace.encoding_cctfcolour.RGB_Colourspace.EOCF: (@KelSolaar)
colour.RGB_Colourspace.decoding_cctfcolour.XYZ_to_sRGB: (@KelSolaar)
colour.XYZ_to_sRGB(XYZ, illuminant=RGB_COLOURSPACES.get('sRGB').whitepoint, chromatic_adaptation_transform='CAT02', apply_encoding_cctf=True)colour.sRGB_to_XYZ: (@KelSolaar)
colour.sRGB_to_XYZ(RGB, illuminant=RGB_COLOURSPACES.get('sRGB').whitepoint, chromatic_adaptation_method='CAT02', apply_decoding_cctf=True)colour.linear_to_cineon: (@KelSolaar)
colour.log_encoding_Cineoncolour.cineon_to_linear: (@KelSolaar)
colour.log_decoding_Cineoncolour.linear_to_panalog: (@KelSolaar)
colour.log_encoding_Panalogcolour.panalog_to_linear: (@KelSolaar)
colour.log_decoding_Panalogcolour.linear_to_viper_log: (@KelSolaar)
colour.log_encoding_ViperLogcolour.viper_log_to_linear: (@KelSolaar)
colour.log_decoding_ViperLogcolour.linear_to_pivoted_log: (@KelSolaar)
colour.log_encoding_PivotedLogcolour.pivoted_log_to_linear: (@KelSolaar)
colour.log_decoding_PivotedLogcolour.linear_to_c_log: (@KelSolaar)
colour.log_encoding_CLogcolour.c_log_to_linear: (@KelSolaar)
colour.log_decoding_CLogcolour.linear_to_aces_cc: (@KelSolaar)
colour.log_encoding_ACEScccolour.aces_cc_to_linear: (@KelSolaar)
colour.log_decoding_ACEScccolour.linear_to_alexa_log_c: (@KelSolaar)
colour.log_encoding_ALEXALogCcolour.alexa_log_c_to_linear: (@KelSolaar)
colour.log_decoding_ALEXALogCcolour.linear_to_red_log_film: (@KelSolaar)
colour.log_encoding_REDLogFilmcolour.red_log_film_to_linear: (@KelSolaar)
colour.log_encoding_SLogcolour.linear_to_s_log: (@KelSolaar)
colour.log_encoding_SLogcolour.s_log_to_linear: (@KelSolaar)
colour.log_decoding_SLogcolour.linear_to_s_log2: (@KelSolaar)
colour.log_encoding_SLog2colour.s_log2_to_linear: (@KelSolaar)
colour.log_decoding_SLog2colour.linear_to_s_log3: (@KelSolaar)
colour.log_encoding_SLog3colour.s_log3_to_linear: (@KelSolaar)
colour.log_decoding_SLog3colour.linear_to_v_log: (@KelSolaar)
colour.log_encoding_VLogcolour.v_log_to_linear: (@KelSolaar)
colour.log_decoding_VLogcolour.LINEAR_TO_LOG_METHODS: (@KelSolaar)
colour.LOG_ENCODING_METHODScolour.linear_to_log: (@KelSolaar)
colour.log_encoding_curvecolour.LOG_TO_LINEAR_METHODS: (@KelSolaar)
colour.LOG_DECODING_METHODScolour.log_to_linear: (@KelSolaar)
colour.log_decoding_curvecolour.RGB_COLOURSPACES['Adobe RGB 1998']: (@KelSolaar)
colour.RGB_COLOURSPACES['Adobe RGB (1998)']colour.ACES_2065_1_OECF: (@KelSolaar)
colour.ACES_2065_1_EOCF: (@KelSolaar)
colour.ACES_CG_OECF: (@KelSolaar)
colour.ACES_CG_EOCF: (@KelSolaar)
colour.ACES_CC_OECF: (@KelSolaar)
colour.ACES_CC_EOCF: (@KelSolaar)
colour.ACES_PROXY_OECF: (@KelSolaar)
colour.ACES_PROXY_EOCF: (@KelSolaar)
colour.ADOBE_RGB_1998_OECF: (@KelSolaar)
colour.ADOBE_RGB_1998_EOCF: (@KelSolaar)
colour.ADOBE_WIDE_GAMUT_RGB_OECF: (@KelSolaar)
colour.ADOBE_WIDE_GAMUT_RGB_EOCF: (@KelSolaar)
colour.ALEXA_LOG_C_OECF: (@KelSolaar)
colour.ALEXA_LOG_C_EOCF: (@KelSolaar)
colour.APPLE_RGB_OECF: (@KelSolaar)
colour.APPLE_RGB_EOCF: (@KelSolaar)
colour.BEST_RGB_OECF: (@KelSolaar)
colour.BEST_RGB_EOCF: (@KelSolaar)
colour.BETA_RGB_OECF: (@KelSolaar)
colour.BETA_RGB_EOCF: (@KelSolaar)
colour.CIE_RGB_OECF: (@KelSolaar)
colour.CIE_RGB_EOCF: (@KelSolaar)
colour.CINEMA_GAMUT_OECF: (@KelSolaar)
colour.CINEMA_GAMUT_EOCF: (@KelSolaar)
colour.COLOR_MATCH_RGB_OECF: (@KelSolaar)
colour.COLOR_MATCH_RGB_EOCF: (@KelSolaar)
colour.DCI_P3_OECF: (@KelSolaar)
colour.DCI_P3_EOCF: (@KelSolaar)
colour.DCI_P3_OECF: (@KelSolaar)
colour.DCI_P3_EOCF: (@KelSolaar)
colour.DON_RGB_4_OECF: (@KelSolaar)
colour.DON_RGB_4_EOCF: (@KelSolaar)
colour.ECI_RGB_V2_OECF: (@KelSolaar)
colour.ECI_RGB_V2_EOCF: (@KelSolaar)
colour.EKTA_SPACE_PS_5_OECF: (@KelSolaar)
colour.EKTA_SPACE_PS_5_EOCF: (@KelSolaar)
colour.MAX_RGB_OECF: (@KelSolaar)
colour.MAX_RGB_EOCF: (@KelSolaar)
colour.NTSC_RGB_OECF: (@KelSolaar)
colour.NTSC_RGB_EOCF: (@KelSolaar)
colour.PAL_SECAM_RGB_OECF: (@KelSolaar)
colour.PAL_SECAM_RGB_EOCF: (@KelSolaar)
colour.PROPHOTO_RGB_OECF: (@KelSolaar)
colour.PROPHOTO_RGB_EOCF: (@KelSolaar)
colour.REC_2020_OECF: (@KelSolaar)
colour.REC_2020_EOCF: (@KelSolaar)
colour.REC_709_OECF: (@KelSolaar)
colour.REC_709_EOCF: (@KelSolaar)
colour.RED_LOG_OECF: (@KelSolaar)
colour.RED_LOG_EOCF: (@KelSolaar)
colour.RED_LOG_OECF: (@KelSolaar)
colour.RED_LOG_EOCF: (@KelSolaar)
colour.RED_LOG_OECF: (@KelSolaar)
colour.RED_LOG_EOCF: (@KelSolaar)
colour.RED_LOG_OECF: (@KelSolaar)
colour.RED_LOG_EOCF: (@KelSolaar)
colour.RED_LOG_OECF: (@KelSolaar)
colour.RED_LOG_EOCF: (@KelSolaar)
colour.RED_LOG_OECF: (@KelSolaar)
colour.RED_LOG_EOCF: (@KelSolaar)
colour.RUSSELL_RGB_OECF: (@KelSolaar)
colour.RUSSELL_RGB_EOCF: (@KelSolaar)
colour.SMPTE_C_RGB_OECF: (@KelSolaar)
colour.SMPTE_C_RGB_EOCF: (@KelSolaar)
colour.S_LOG2_OECF: (@KelSolaar)
colour.S_LOG2_EOCF: (@KelSolaar)
colour.S_LOG3_OECF: (@KelSolaar)
colour.S_LOG3_EOCF: (@KelSolaar)
colour.S_LOG3_OECF: (@KelSolaar)
colour.S_LOG3_EOCF: (@KelSolaar)
colour.sRGB_OECF: (@KelSolaar)
colour.sRGB_EOCF: (@KelSolaar)
colour.V_LOG_OECF: (@KelSolaar)
colour.V_LOG_EOCF: (@KelSolaar)
colour.XTREME_RGB_OECF: (@KelSolaar)
colour.XTREME_RGB_EOCF: (@KelSolaar)
colour.plotting.decorate: (@KelSolaar)
no_axes3d renamed to no_axes.colour.plotting.camera: (@KelSolaar)
colour.plotting.decorate: (@KelSolaar)
colour.plotting.boundaries: (@KelSolaar)
colour.plotting.display: (@KelSolaar)
colour.plotting.CIE_1931_chromaticity_diagram_colours_plot: (@KelSolaar)
colour.plotting.CIE_1931_chromaticity_diagram_plot: (@KelSolaar, @MichaelMauderer, @scooperly)
CIE_1931_chromaticity_diagram_plot(cmfs='CIE 1931 2 Degree Standard Observer', show_diagram_colours=True, **kwargs)colour.plotting.CIE_1960_UCS_chromaticity_diagram_colours_plot: (@KelSolaar)
colour.plotting.CIE_1960_UCS_chromaticity_diagram_plot: (@KelSolaar, @MichaelMauderer, @scooperly)
CIE_1960_UCS_chromaticity_diagram_plot(cmfs='CIE 1931 2 Degree Standard Observer', show_diagram_colours=True, **kwargs)colour.plotting.CIE_1976_UCS_chromaticity_diagram_colours_plot: (@KelSolaar)
colour.plotting.CIE_1976_UCS_chromaticity_diagram_plot: (@KelSolaar, @MichaelMauderer, @scooperly)
CIE_1976_UCS_chromaticity_diagram_plot(cmfs='CIE 1931 2 Degree Standard Observer', show_diagram_colours=True, **kwargs)colour.plotting.RGB_chromaticity_coordinates_CIE_1931_chromaticity_diagram_plot: (@KelSolaar)
colour.plotting.RGB_chromaticity_coordinates_CIE_1960_UCS_chromaticity_diagram_plot: (@KelSolaar)
colour.plotting.RGB_chromaticity_coordinates_CIE_1976_UCS_chromaticity_diagram_plot: (@KelSolaar)
colour.plotting.RGB_colourspaces_CIE_1931_chromaticity_diagram_plot: (@KelSolaar)
RGB_chromaticity_coordinates_CIE_1931_chromaticity_diagram_plot(RGB, colourspace, **kwargs)colour.plotting.RGB_colourspaces_CIE_1960_UCS_chromaticity_diagram_plot: (@KelSolaar)
RGB_colourspaces_CIE_1960_UCS_chromaticity_diagram_plot(RGB, colourspace, **kwargs)colour.plotting.RGB_colourspaces_CIE_1976_UCS_chromaticity_diagram_plot: (@KelSolaar)
RGB_colourspaces_CIE_1976_UCS_chromaticity_diagram_plot(RGB, colourspace, **kwargs)colour.plotting.RGB_colourspaces_gamuts_plot: (@KelSolaar)
colour.plotting.RGB_scatter_plot: (@KelSolaar)
colour.plotting.blackbody_colours_plot: (@KelSolaar)
colour.plotting.blackbody_spectral_radiance_plot: (@KelSolaar)
colour.plotting.colour_parameters_plot: (@KelSolaar)
colour.plotting.colour_quality_bars_plot: (@KelSolaar)
colour.plotting.corresponding_chromaticities_prediction_plot: (@KelSolaar)
colour.plotting.image_plot: (@KelSolaar)
colour.plotting.multi_cmfs_plot: (@KelSolaar)
colour.plotting.multi_colour_plot: (@KelSolaar)
colour.plotting.multi_conversion_function_plot: (@KelSolaar)
colour.plotting.multi_cctf_plotcolour.plotting.multi_cctf_plot(colourspaces=None, decoding_cctf=False, **kwargs)colour.plotting.multi_illuminants_relative_spd_plot: (@KelSolaar)
colour.plotting.multi_lightness_function_plot: (@KelSolaar)
colour.plotting.multi_munsell_value_function_plot: (@KelSolaar)
colour.plotting.multi_spd_colour_quality_scale_bars_plot: (@KelSolaar)
colour.plotting.multi_spd_colour_rendering_index_bars_plot: (@KelSolaar)
colour.plotting.multi_spd_plot: (@KelSolaar)
colour.plotting.planckian_locus_CIE_1931_chromaticity_diagram_plot: (@KelSolaar)
colour.plotting.planckian_locus_CIE_1960_UCS_chromaticity_diagram_plot: (@KelSolaar)
colour.plotting.single_cmfs_plot: (@KelSolaar)
colour.plotting.single_colour_plot: (@KelSolaar)
colour.plotting.single_conversion_function_plot: (@KelSolaar)
colour.plotting.single_cctf_plotcolour.plotting.single_cctf_plot(colourspace=None, decoding_cctf=False, **kwargs)colour.plotting.single_illuminant_relative_spd_plot: (@KelSolaar)
colour.plotting.single_lightness_function_plot: (@KelSolaar)
colour.plotting.single_munsell_value_function_plot: (@KelSolaar)
colour.plotting.single_rayleigh_scattering_spd_plot: (@KelSolaar)
colour.plotting.single_spd_colour_quality_scale_bars_plot: (@KelSolaar)
colour.plotting.single_spd_colour_rendering_index_bars_plot: (@KelSolaar)
colour.plotting.single_spd_plot: (@KelSolaar)
colour.plotting.spds_CIE_1931_chromaticity_diagram_plot: (@KelSolaar)
colour.plotting.spds_CIE_1960_UCS_chromaticity_diagram_plot: (@KelSolaar)
colour.plotting.spds_CIE_1976_UCS_chromaticity_diagram_plot: (@KelSolaar)
colour.plotting.the_blue_sky_plot: (@KelSolaar)
colour.plotting.visible_spectrum_plot: (@KelSolaar)
colour.as_numeric: (@KelSolaar)
colour.as_numeric(a, type_=np.float_)colour.closest: (@KelSolaar)
colour.closest(a, b)colour.normalise: (@KelSolaar)
colour.normalise_maximumcolour.normalise_maximum(a, axis=None, factor=1, clip=True)colour.steps: (@KelSolaar)
colour.intervalcolour.is_iterable: (@KelSolaar)
colour.is_iterable(a)colour.is_string: (@KelSolaar)
colour.is_string(a)colour.is_numeric: (@KelSolaar)
colour.is_numeric(a)colour.is_integer: (@KelSolaar)
colour.is_integer(a)colour.is_scipy_installed: (@KelSolaar)
Colour 0.3.7 - Alpha Milestone
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.image_plot definition can now plot single channel images. (@KelSolaar)colour.ArbitraryPrecisionMapping class based providing support for floating point keys by rounding them at a specific decimals count. (@KelSolaar)colour.Extrapolator1d: (@KelSolaar)
colour.Extrapolatorcolour.RGB_Colourspace: (@KelSolaar)
transfer_function:
OECF (Opto-electronic conversion function)inverse_transfer_function:
EOCF (Electro-optical conversion function)colour.XYZ_to_RGB: (@KelSolaar)
colour.XYZ_to_RGB(XYZ, illuminant_XYZ, illuminant_RGB, XYZ_to_RGB_matrix, chromatic_adaptation_transform='CAT02', OECF=None)colour.RGB_to_XYZ: (@KelSolaar)
colour.RGB_to_XYZ(RGB, illuminant_RGB, illuminant_XYZ, RGB_to_XYZ_matrix, chromatic_adaptation_transform='CAT02', EOCF=None)colour.XYZ_to_sRGB: (@KelSolaar)
colour.XYZ_to_sRGB(XYZ, illuminant=RGB_COLOURSPACES.get('sRGB').whitepoint, chromatic_adaptation_transform='CAT02', apply_OECF=True)colour.sRGB_to_XYZ: (@KelSolaar)
colour.sRGB_to_XYZ(RGB, illuminant=RGB_COLOURSPACES.get('sRGB').whitepoint, chromatic_adaptation_method='CAT02', apply_EOCF=True)colour.plotting.single_transfer_function_plot: (@KelSolaar)
colour.plotting.single_conversion_function_plotcolour.plotting.single_conversion_function_plot(colourspace='Rec. 709', EOCF=False, **kwargs)colour.plotting.multi_transfer_function_plot: (@KelSolaar)
colour.plotting.multi_conversion_function_plotcolour.plotting.multi_conversion_function_plot(colourspaces, EOCF=False, **kwargs)colour.plotting.colour_parameter: (@KelSolaar)
colour.plotting.ColourParameter class should be used instead.