Esempio n. 1
0
    def test_domain_range_scale_XYZ_to_sd(self):
        """
        Tests :func:`colour.recovery.XYZ_to_sd` definition domain
        and range scale support.
        """

        XYZ = np.array([0.20654008, 0.12197225, 0.05136952])
        m = ('Jakob 2019', 'Mallett 2019', 'Meng 2015', 'Otsu 2018',
             'Smits 1999')
        v = [
            sd_to_XYZ_integration(
                XYZ_to_sd(XYZ,
                          method,
                          cmfs=self._cmfs,
                          illuminant=self._sd_D65), self._cmfs, self._sd_D65)
            for method in m
        ]

        d_r = (('reference', 1, 1), (1, 1, 0.01), (100, 100, 1))
        for method, value in zip(m, v):
            for scale, factor_a, factor_b in d_r:
                with domain_range_scale(scale):
                    np.testing.assert_almost_equal(sd_to_XYZ_integration(
                        XYZ_to_sd(XYZ * factor_a,
                                  method,
                                  cmfs=self._cmfs,
                                  illuminant=self._sd_D65), self._cmfs,
                        self._sd_D65),
                                                   value * factor_b,
                                                   decimal=7)
Esempio n. 2
0
    def test_domain_range_scale_XYZ_to_sd(self):
        """
        Tests :func:`colour.recovery.XYZ_to_sd` definition domain
        and range scale support.
        """

        cmfs = (STANDARD_OBSERVERS_CMFS['CIE 1931 2 Degree Standard Observer'].
                copy().align(DEFAULT_SPECTRAL_SHAPE_MENG_2015))

        XYZ = np.array([0.20654008, 0.12197225, 0.05136952])
        m = ('Smits 1999', 'Meng 2015')
        v = [
            sd_to_XYZ_integration(XYZ_to_sd(XYZ, method), cmfs) for method in m
        ]

        d_r = (('reference', 1, 1), (1, 1, 0.01), (100, 100, 1))
        for method, value in zip(m, v):
            for scale, factor_a, factor_b in d_r:
                with domain_range_scale(scale):
                    np.testing.assert_almost_equal(sd_to_XYZ_integration(
                        XYZ_to_sd(XYZ * factor_a, method), cmfs),
                                                   value * factor_b,
                                                   decimal=7)