DatasetLoader_Hung1995.ID: build_Hung1995,
    DatasetLoader_Jakob2019.ID: build_Jakob2019,
    DatasetLoader_Jiang2013.ID: build_Jiang2013,
    DatasetLoader_Labsphere2019.ID: build_Labsphere2019,
    DatasetLoader_Luo1999.ID: build_Luo1999,
    DatasetLoader_XRite2016.ID: build_XRite2016,
})
DATASET_LOADERS.__doc__ = """
Dataset loaders ids and callables.

DATASET_LOADERS : CaseInsensitiveMapping
"""

from .kuopio import DATASET_LOADERS_KUOPIO_UNIVERSITY  # noqa

DATASET_LOADERS.update(DATASET_LOADERS_KUOPIO_UNIVERSITY)

from . import kuopio  # noqa

_module = sys.modules['colour_datasets.loaders']

for _export in kuopio.__all__:
    if _export.startswith('DatasetLoader_') or _export.startswith('build_'):

        setattr(_module, _export, getattr(kuopio, _export))

        __all__ += [_export]

del _module, _export

_HAS_TITLE_KEYS = False
示例#2
0
    np.array([0.34609, 0.35986]),
    'F11':
    np.array([0.38052, 0.37713]),
    'F12':
    np.array([0.43695, 0.40441])
})
"""
*CIE* illuminant chromaticity coordinates for
*CIE 1931 2 Degree Standard Observer*.

ILLUMINANTS_CIE_1931_2_DEGREE_STANDARD_OBSERVER : CaseInsensitiveMapping
"""

ILLUMINANTS_CIE_1931_2_DEGREE_STANDARD_OBSERVER.update({
    'DCI-P3':
    np.array([0.31400, 0.35100]),
    'ACES':
    np.array([0.32168, 0.33767])
})

ILLUMINANTS_CIE_1931_2_DEGREE_STANDARD_OBSERVER.update({
    'FL3.1':
    np.array([0.440673532892235, 0.403295963187334]),
    'FL3.2':
    np.array([0.380772448760695, 0.373351208240419]),
    'FL3.3':
    np.array([0.315280437134339, 0.343854575741321]),
    'FL3.4':
    np.array([0.442906984842085, 0.404320323453706]),
    'FL3.5':
    np.array([0.374896547314724, 0.367153489582687]),
    'FL3.6':
示例#3
0
    Ebner1998DatasetLoader.ID: build_Ebner1998,
    Hung1995DatasetLoader.ID: build_Hung1995,
    Jiang2013DatasetLoader.ID: build_Jiang2013,
    Labsphere2019DatasetLoader.ID: build_Labsphere2019,
    Luo1999DatasetLoader.ID: build_Luo1999,
    XRite2016DatasetLoader.ID: build_XRite2016,
})
DATASET_LOADERS.__doc__ = """
Dataset loaders ids and callables.

DATASET_LOADERS : CaseInsensitiveMapping
"""

from .kuopio import KUOPIO_UNIVERSITY_DATASET_LOADERS  # noqa

DATASET_LOADERS.update(KUOPIO_UNIVERSITY_DATASET_LOADERS)

from . import kuopio  # noqa

_module = sys.modules['colour_datasets.loaders']

for _export in kuopio.__all__:
    if _export.endswith('DatasetLoader') or _export.startswith('build'):

        setattr(_module, _export, getattr(kuopio, _export))

        __all__ += [_export]

del _module, _export

_HAS_TITLE_KEYS = False
示例#4
0
    np.array([0.34580, 0.35880]),
    'FL11':
    np.array([0.38050, 0.37690]),
    'FL12':
    np.array([0.43700, 0.40420])
})
"""
*CIE* illuminant chromaticity coordinates for
*CIE 1931 2 Degree Standard Observer*.

ILLUMINANTS_CIE_1931_2_DEGREE_STANDARD_OBSERVER : CaseInsensitiveMapping
"""

ILLUMINANTS_CIE_1931_2_DEGREE_STANDARD_OBSERVER.update({
    'DCI-P3':
    np.array([0.31400, 0.35100]),
    'ACES':
    np.array([0.32168, 0.33767])
})

ILLUMINANTS_CIE_1931_2_DEGREE_STANDARD_OBSERVER.update({
    'FL3.1':
    np.array([0.44070, 0.40330]),
    'FL3.2':
    np.array([0.38080, 0.37340]),
    'FL3.3':
    np.array([0.31530, 0.34390]),
    'FL3.4':
    np.array([0.44290, 0.40430]),
    'FL3.5':
    np.array([0.37490, 0.36720]),
    'FL3.6':
示例#5
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import absolute_import

from .crt import CRT_DISPLAYS_RGB_PRIMARIES
from .lcd import LCD_DISPLAYS_RGB_PRIMARIES
from colour.utilities import CaseInsensitiveMapping


DISPLAYS_RGB_PRIMARIES = CaseInsensitiveMapping(CRT_DISPLAYS_RGB_PRIMARIES)
DISPLAYS_RGB_PRIMARIES.update(LCD_DISPLAYS_RGB_PRIMARIES)

__all__ = ['DISPLAYS_RGB_PRIMARIES']
示例#6
0
    0.4090077...
    >>> eotf_reverse(  # doctest: +ELLIPSIS
    ...     0.11699185725296059, function='ITU-R BT.1886')
    0.4090077...
    """

    function = EOTFS_REVERSE[function]

    return function(value, **filter_kwargs(function, **kwargs))


__all__ += ['OETFS', 'OETFS_REVERSE', 'EOTFS', 'EOTFS_REVERSE']
__all__ += ['oetf', 'oetf_reverse', 'eotf', 'eotf_reverse']

ENCODING_CCTFS = CaseInsensitiveMapping(LOG_ENCODING_CURVES)
ENCODING_CCTFS.update(OETFS)
ENCODING_CCTFS.update(EOTFS_REVERSE)
ENCODING_CCTFS.update({
    'Gamma 2.2': partial(function_gamma, exponent=1 / 2.2),
    'Gamma 2.4': partial(function_gamma, exponent=1 / 2.4),
    'Gamma 2.6': partial(function_gamma, exponent=1 / 2.6),
})
ENCODING_CCTFS.__doc__ = """
Supported encoding colour component transfer functions (Encoding CCTFs), a
collection of the functions defined by :attr:`colour.LOG_ENCODING_CURVES`,
:attr:`colour.OETFS`, :attr:`colour.EOTFS_REVERSE` attributes and 3 gamma
encoding functions (1 / 2.2, 1 / 2.4, 1 / 2.6).

Warning
-------
For *ITU-R BT.2100*, only the reverse electro-optical transfer functions
示例#7
0
    'FL8': np.array([0.34580, 0.35860]),
    'FL9': np.array([0.37410, 0.37270]),
    'FL10': np.array([0.34580, 0.35880]),
    'FL11': np.array([0.38050, 0.37690]),
    'FL12': np.array([0.43700, 0.40420])
})
"""
*CIE* illuminant chromaticity coordinates for
*CIE 1931 2 Degree Standard Observer*.

ILLUMINANTS_CIE_1931_2_DEGREE_STANDARD_OBSERVER : CaseInsensitiveMapping
"""

ILLUMINANTS_CIE_1931_2_DEGREE_STANDARD_OBSERVER.update({
    'ACES': np.array([0.32168, 0.33767]),
    'DCI-P3': np.array([0.31400, 0.35100]),
    'ICC D50': np.array([0.345702914918791, 0.358538596679933])
})

ILLUMINANTS_CIE_1931_2_DEGREE_STANDARD_OBSERVER.update({
    'FL3.1': np.array([0.44070, 0.40330]),
    'FL3.2': np.array([0.38080, 0.37340]),
    'FL3.3': np.array([0.31530, 0.34390]),
    'FL3.4': np.array([0.44290, 0.40430]),
    'FL3.5': np.array([0.37490, 0.36720]),
    'FL3.6': np.array([0.34880, 0.36000]),
    'FL3.7': np.array([0.43840, 0.40450]),
    'FL3.8': np.array([0.38200, 0.38320]),
    'FL3.9': np.array([0.34990, 0.35910]),
    'FL3.10': np.array([0.34550, 0.35600]),
    'FL3.11': np.array([0.32450, 0.34340]),
示例#8
0
CCTF_ENCODINGS = CaseInsensitiveMapping({
    'Gamma 2.2':
    partial(gamma_function, exponent=1 / 2.2),
    'Gamma 2.4':
    partial(gamma_function, exponent=1 / 2.4),
    'Gamma 2.6':
    partial(gamma_function, exponent=1 / 2.6),
    'ProPhoto RGB':
    cctf_encoding_ProPhotoRGB,
    'RIMM RGB':
    cctf_encoding_RIMMRGB,
    'ROMM RGB':
    cctf_encoding_ROMMRGB,
})
CCTF_ENCODINGS.update(LOG_ENCODINGS)
CCTF_ENCODINGS.update(OETFS)
CCTF_ENCODINGS.update(EOTF_INVERSES)
CCTF_ENCODINGS.__doc__ = """
Supported encoding colour component transfer functions (Encoding CCTFs), a
collection of the functions defined by :attr:`colour.LOG_ENCODINGS`,
:attr:`colour.OETFS`, :attr:`colour.EOTF_INVERSES` attributes, the
:func:`colour.models.cctf_encoding_ProPhotoRGB`,
:func:`colour.models.cctf_encoding_RIMMRGB`,
:func:`colour.models.cctf_encoding_ROMMRGB` definitions and 3 gamma encoding
functions (1 / 2.2, 1 / 2.4, 1 / 2.6).

Warnings
--------
For *ITU-R BT.2100*, only the inverse electro-optical transfer functions
(EOTFs / EOCFs) are exposed by this attribute, please refer to the
示例#9
0
-   :cite:`Fairchild1998b` : Fairchild, M., & Wyble, D. (1998). Colorimetric
    Characterization of The Apple Studio Display (flat panel LCD) (p. 22).
    http://scholarworks.rit.edu/cgi/viewcontent.cgi?article=1922&\
context=article
-   :cite:`Machado2010a` : Machado, Gustavo Mello. (2010). A model for
    simulation of color vision deficiency and a color contrast enhancement
    technique for dichromats. (pp. 1-94).
    http://www.lume.ufrgs.br/handle/10183/26950
"""

from __future__ import absolute_import

from .crt import MSDS_DISPLAY_PRIMARIES_CRT
from .lcd import MSDS_DISPLAY_PRIMARIES_LCD
from colour.utilities import CaseInsensitiveMapping

MSDS_DISPLAY_PRIMARIES = CaseInsensitiveMapping(MSDS_DISPLAY_PRIMARIES_CRT)
MSDS_DISPLAY_PRIMARIES.update(MSDS_DISPLAY_PRIMARIES_LCD)
MSDS_DISPLAY_PRIMARIES.__doc__ = """
Primaries multi-spectral distributions of displays.

References
----------
:cite:`Fairchild1998b`, :cite:`Machado2010a`

MSDS_DISPLAY_PRIMARIES : CaseInsensitiveMapping
    **{Apple Studio Display, Typical CRT Brainard 1997}**
"""

__all__ = ['MSDS_DISPLAY_PRIMARIES']
示例#10
0
    0.4090077...
    >>> eotf_reverse(  # doctest: +ELLIPSIS
    ...     0.11699185725296059, function='ITU-R BT.1886')
    0.4090077...
    """

    function = EOTFS_REVERSE[function]

    return function(value, **filter_kwargs(function, **kwargs))


__all__ += ['OETFS', 'OETFS_REVERSE', 'EOTFS', 'EOTFS_REVERSE']
__all__ += ['oetf', 'oetf_reverse', 'eotf', 'eotf_reverse']

ENCODING_CCTFS = CaseInsensitiveMapping(LOG_ENCODING_CURVES)
ENCODING_CCTFS.update(OETFS)
ENCODING_CCTFS.update(EOTFS_REVERSE)
ENCODING_CCTFS.update({
    'Gamma 2.2': partial(gamma_function, exponent=1 / 2.2),
    'Gamma 2.4': partial(gamma_function, exponent=1 / 2.4),
    'Gamma 2.6': partial(gamma_function, exponent=1 / 2.6),
})
ENCODING_CCTFS.__doc__ = """
Supported encoding colour component transfer functions (Encoding CCTFs), a
collection of the functions defined by :attr:`colour.LOG_ENCODING_CURVES`,
:attr:`colour.OETFS`, :attr:`colour.EOTFS_REVERSE` attributes and 3 gamma
encoding functions (1 / 2.2, 1 / 2.4, 1 / 2.6).

Warning
-------
For *ITU-R BT.2100*, only the reverse electro-optical transfer functions
    'FL7': np.array([0.31290, 0.32920]),
    'FL8': np.array([0.34580, 0.35860]),
    'FL9': np.array([0.37410, 0.37270]),
    'FL10': np.array([0.34580, 0.35880]),
    'FL11': np.array([0.38050, 0.37690]),
    'FL12': np.array([0.43700, 0.40420])
})
"""
*CIE* illuminant chromaticity coordinates for
*CIE 1931 2 Degree Standard Observer*.

ILLUMINANTS_CIE_1931_2_DEGREE_STANDARD_OBSERVER : CaseInsensitiveMapping
"""

ILLUMINANTS_CIE_1931_2_DEGREE_STANDARD_OBSERVER.update({
    'DCI-P3': np.array([0.31400, 0.35100]),
    'ACES': np.array([0.32168, 0.33767])
})

ILLUMINANTS_CIE_1931_2_DEGREE_STANDARD_OBSERVER.update({
    'FL3.1': np.array([0.44070, 0.40330]),
    'FL3.2': np.array([0.38080, 0.37340]),
    'FL3.3': np.array([0.31530, 0.34390]),
    'FL3.4': np.array([0.44290, 0.40430]),
    'FL3.5': np.array([0.37490, 0.36720]),
    'FL3.6': np.array([0.34880, 0.36000]),
    'FL3.7': np.array([0.43840, 0.40450]),
    'FL3.8': np.array([0.38200, 0.38320]),
    'FL3.9': np.array([0.34990, 0.35910]),
    'FL3.10': np.array([0.34550, 0.35600]),
    'FL3.11': np.array([0.32450, 0.34340]),
    'FL3.12': np.array([0.43770, 0.40370]),
示例#12
0
def generate_illuminants_rawtoaces_v1() -> CaseInsensitiveMapping:
    """
    Generate a series of illuminants according to *RAW to ACES* v1:

    -   *CIE Illuminant D Series* in range [4000, 25000] kelvin degrees.
    -   *Blackbodies* in range [1000, 3500] kelvin degrees.
    -   A.M.P.A.S. variant of *ISO 7589 Studio Tungsten*.

    Returns
    -------
    :class:`colour.utilities.CaseInsensitiveMapping`
        Series of illuminants.

    Notes
    -----
    -   This definition introduces a few differences compared to
        *RAW to ACES* v1: *CIE Illuminant D Series* are computed in range
        [4002.15, 7003.77] kelvin degrees and the :math:`C_2` change is not
        used in *RAW to ACES* v1.

    References
    ----------
    :cite:`Dyer2017`

    Examples
    --------
    >>> list(sorted(generate_illuminants_rawtoaces_v1().keys()))
    ['1000K Blackbody', '1500K Blackbody', '2000K Blackbody', \
'2500K Blackbody', '3000K Blackbody', '3500K Blackbody', 'D100', 'D105', \
'D110', 'D115', 'D120', 'D125', 'D130', 'D135', 'D140', 'D145', 'D150', \
'D155', 'D160', 'D165', 'D170', 'D175', 'D180', 'D185', 'D190', 'D195', \
'D200', 'D205', 'D210', 'D215', 'D220', 'D225', 'D230', 'D235', 'D240', \
'D245', 'D250', 'D40', 'D45', 'D50', 'D55', 'D60', 'D65', 'D70', 'D75', \
'D80', 'D85', 'D90', 'D95', 'iso7589']
    """

    global _ILLUMINANTS_RAWTOACES_V1

    if _ILLUMINANTS_RAWTOACES_V1 is not None:
        illuminants = _ILLUMINANTS_RAWTOACES_V1
    else:
        illuminants = CaseInsensitiveMapping()

        # CIE Illuminants D Series from 4000K to 25000K.
        for i in np.arange(4000, 25000 + 500, 500):
            CCT = i * 1.4388 / 1.4380
            xy = CCT_to_xy_CIE_D(CCT)
            sd = sd_CIE_illuminant_D_series(xy)
            sd.name = f"D{int(CCT / 100):d}"
            illuminants[sd.name] = sd.align(SPECTRAL_SHAPE_RAWTOACES)

        # TODO: Remove when removing the "colour.sd_blackbody" definition
        # warning.
        with suppress_warnings(colour_usage_warnings=True):
            # Blackbody from 1000K to 4000K.
            for i in np.arange(1000, 4000, 500):
                sd = sd_blackbody(i, SPECTRAL_SHAPE_RAWTOACES)
                illuminants[sd.name] = sd

        # A.M.P.A.S. variant of ISO 7589 Studio Tungsten.
        sd = read_sds_from_csv_file(
            os.path.join(RESOURCES_DIRECTORY_RAWTOACES,
                         "AMPAS_ISO_7589_Tungsten.csv"))["iso7589"]
        illuminants.update({sd.name: sd})

        _ILLUMINANTS_RAWTOACES_V1 = illuminants

    return illuminants