AVS › AVS Forum › Display Devices › Display Calibration › Basic Colorimetry
New Posts  All Forums:Forum Nav:

Basic Colorimetry

post #1 of 8
Thread Starter 
I have to know the CCT of the standard white light of National Physical Laboratory RGB system before the 1931 CIE RGB. As far as I know it was NOT the equal energy white E.
Guild and Wright calculated with different color temperature white point, not the EEW.
Does everybody know the correlated color temperature of NPL white light?

I wanted to ask you: Does anybody know....?
post #2 of 8
a quick search for the npl white didn't turn up any info for me.

What else do you know about the white? x,y coordinates? u,v?
post #3 of 8
The NPL standard white light source for Guild and Wright's work was approximately equivalent to a 4800K Planckian radiator. SPD attached.

 

guild.pdf 359.541015625k . file
post #4 of 8
Thread Starter 
The terms x,y or u,v co-ordinates were not defined before 1931, only the r, g, b co-ordinates had been known.
One equation from Wright, with r, g, b co-ordinates:

NPL white = 0.243 R(650) + 0.410 G(530) + 0.347 B(460)

The Wright's experimental wavelength of primaries were the values 650, 530 and 460 nm.
post #5 of 8
Thread Starter 
Quote:
Originally Posted by zoyd View Post

The NPL standard white light source for Guild and Wright's work was approximately equivalent to a 4800K Planckian radiator. SPD attached.

Thank you. Actually Wright used this value 4800 K, but...

citation from A. D. Broadbent:
"...the values Wright used for the luminous flux of the NPL stadard white source were based on an incorrect black body temperature of 4800 K and do not egree with data given later by Guild..."
"Guild points out that Wright did not have access to the correct information for this standard source."

So is it 4800 K or not?
post #6 of 8
Quote:
Originally Posted by jehu_111 View Post

Thank you. Actually Wright used this value 4800 K, but...

citation from A. D. Broadbent:
"...the values Wright used for the luminous flux of the NPL stadard white source were based on an incorrect black body temperature of 4800 K and do not egree with data given later by Guild..."
"Guild points out that Wright did not have access to the correct information for this standard source."

So is it 4800 K or not?

According to the this paper, "the National Physical Laboratory standard white, a close chromaticity match for the Planckian radiator at 4,800K", what exactly are you after? You can try to fit the SPD referenced above.
post #7 of 8
Quote:
Originally Posted by jehu_111 View Post

The terms x,y or u,v co-ordinates were not defined before 1931, only the r, g, b co-ordinates had been known.
One equation from Wright, with r, g, b co-ordinates:

NPL white = 0.243 R(650) + 0.410 G(530) + 0.347 B(460)

The Wright's experimental wavelength of primaries were the values 650, 530 and 460 nm.

If you want to calculate the CCT of the NPL white light you must first convolve it with the CIE color matching functions to get X Y Z. You can then plug those into any number of CCT calculators (brucelindbloom.com for example).

Code:
/*                          SPECTRUM_TO_XYZ

    Calculate the CIE X, Y, and Z coordinates corresponding to
    a light source with spectral distribution given by  the
    function SPEC_INTENS, which is called with a series of
    wavelengths between 380 and 780 nm (the argument is 
    expressed in meters), which returns emittance at  that
    wavelength in arbitrary units.  The chromaticity
    coordinates of the spectrum are returned in the x, y, and z
    arguments which respect the identity:

            x + y + z = 1.
*/

void spectrum_to_xyz(double (*spec_intens)(double wavelength),
                     double *x, double *y, double *z)
{
    int i;
    double lambda, X = 0, Y = 0, Z = 0, XYZ;

    /* CIE colour matching functions xBar, yBar, and zBar for
       wavelengths from 380 through 780 nanometers, every 5
       nanometers.  For a wavelength lambda in this range:

            cie_colour_match[(lambda - 380) / 5][0] = xBar
            cie_colour_match[(lambda - 380) / 5][1] = yBar
            cie_colour_match[(lambda - 380) / 5][2] = zBar

        To save memory, this table can be declared as floats
        rather than doubles; (IEEE) float has enough 
        significant bits to represent the values. It's declared
        as a double here to avoid warnings about "conversion
        between floating-point types" from certain persnickety
        compilers. */

    static double cie_colour_match[81][3] = {
        {0.0014,0.0000,0.0065}, {0.0022,0.0001,0.0105}, {0.0042,0.0001,0.0201},
        {0.0076,0.0002,0.0362}, {0.0143,0.0004,0.0679}, {0.0232,0.0006,0.1102},
        {0.0435,0.0012,0.2074}, {0.0776,0.0022,0.3713}, {0.1344,0.0040,0.6456},
        {0.2148,0.0073,1.0391}, {0.2839,0.0116,1.3856}, {0.3285,0.0168,1.6230},
        {0.3483,0.0230,1.7471}, {0.3481,0.0298,1.7826}, {0.3362,0.0380,1.7721},
        {0.3187,0.0480,1.7441}, {0.2908,0.0600,1.6692}, {0.2511,0.0739,1.5281},
        {0.1954,0.0910,1.2876}, {0.1421,0.1126,1.0419}, {0.0956,0.1390,0.8130},
        {0.0580,0.1693,0.6162}, {0.0320,0.2080,0.4652}, {0.0147,0.2586,0.3533},
        {0.0049,0.3230,0.2720}, {0.0024,0.4073,0.2123}, {0.0093,0.5030,0.1582},
        {0.0291,0.6082,0.1117}, {0.0633,0.7100,0.0782}, {0.1096,0.7932,0.0573},
        {0.1655,0.8620,0.0422}, {0.2257,0.9149,0.0298}, {0.2904,0.9540,0.0203},
        {0.3597,0.9803,0.0134}, {0.4334,0.9950,0.0087}, {0.5121,1.0000,0.0057},
        {0.5945,0.9950,0.0039}, {0.6784,0.9786,0.0027}, {0.7621,0.9520,0.0021},
        {0.8425,0.9154,0.0018}, {0.9163,0.8700,0.0017}, {0.9786,0.8163,0.0014},
        {1.0263,0.7570,0.0011}, {1.0567,0.6949,0.0010}, {1.0622,0.6310,0.0008},
        {1.0456,0.5668,0.0006}, {1.0026,0.5030,0.0003}, {0.9384,0.4412,0.0002},
        {0.8544,0.3810,0.0002}, {0.7514,0.3210,0.0001}, {0.6424,0.2650,0.0000},
        {0.5419,0.2170,0.0000}, {0.4479,0.1750,0.0000}, {0.3608,0.1382,0.0000},
        {0.2835,0.1070,0.0000}, {0.2187,0.0816,0.0000}, {0.1649,0.0610,0.0000},
        {0.1212,0.0446,0.0000}, {0.0874,0.0320,0.0000}, {0.0636,0.0232,0.0000},
        {0.0468,0.0170,0.0000}, {0.0329,0.0119,0.0000}, {0.0227,0.0082,0.0000},
        {0.0158,0.0057,0.0000}, {0.0114,0.0041,0.0000}, {0.0081,0.0029,0.0000},
        {0.0058,0.0021,0.0000}, {0.0041,0.0015,0.0000}, {0.0029,0.0010,0.0000},
        {0.0020,0.0007,0.0000}, {0.0014,0.0005,0.0000}, {0.0010,0.0004,0.0000},
        {0.0007,0.0002,0.0000}, {0.0005,0.0002,0.0000}, {0.0003,0.0001,0.0000},
        {0.0002,0.0001,0.0000}, {0.0002,0.0001,0.0000}, {0.0001,0.0000,0.0000},
        {0.0001,0.0000,0.0000}, {0.0001,0.0000,0.0000}, {0.0000,0.0000,0.0000}
    };

    for (i = 0, lambda = 380; lambda < 780.1; i++, lambda += 5) {
        double Me;

        Me = (*spec_intens)(lambda);
        X += Me * cie_colour_match[i][0];
        Y += Me * cie_colour_match[i][1];
        Z += Me * cie_colour_match[i][2];
    }
    XYZ = (X + Y + Z);
    *x = X / XYZ;
    *y = Y / XYZ;
    *z = Z / XYZ;
}
post #8 of 8
Thread Starter 
Quote:
Originally Posted by zoyd View Post

According to the this paper, "the National Physical Laboratory standard white, a close chromaticity match for the Planckian radiator at 4,800K", what exactly are you after? You can try to fit the SPD referenced above.

OK, it is absolutely convincing. Otherwise Judd's paper is very informative and useful. Thanks.
New Posts  All Forums:Forum Nav:
  Return Home
  Back to Forum: Display Calibration
AVS › AVS Forum › Display Devices › Display Calibration › Basic Colorimetry