XYZ to RGB conversion - neutral color is not neutral


#1

Dear Radiance community,

I would like your feedback on -another- XYZ to RBG conversion.
I have measurements in the XYZ colorspace from a CM-600d Konica Minolta Spectrophotometer with settings for a 2 degree standard observer and a D65 standard illuminant, both with the specular component included (SCI) and excluded (SCE).

First, I am assuming that I should use the SCE measurements for the plastic materials.
As an example, my SCE measurements of a white wall are X 81.05, Y 85.61 and Z 86.95.

When using the xyz_rgb.cal, the resulting color is R 73.3782327 G 90.3295341 B 86.8467252 - a clearly blue/green color!

Same thing happens when using the Colour Picker for Radiance (http://www.jaloxa.eu/resources/radiance/colour_picker/index.shtml) for a CIE XYZ (1931) input; but not when using the Colour Picker from an older page (http://www.jaloxa.eu/resources/radiance/cp4r.shtml), where the result is R 0.944 G 0.934 B 0.901.
The latter is a neutral color that looks correct, and is also the result when using easyrgb.com and specifying the observer and illuminant.

My guess is that I am missing a conversion regarding the illuminant - do you maybe have any input on what I am doing wrong with xyz_rgb.cal?

Thank you for your time and knowledge!
Kynthia


#2

Hi Kynthia,

Under what lighting does your wall look white? Your Z value is larger than your Y value, indicating a blue tint under D65 (outdoor) illumination. This is sometimes the case with white surfaces, where they add extra blue to make the wall appear whiter under interior lighting. I don't think your color calculation is wrong, although the values are out of range for plastic by a factor of 100 because your measured values are in percent.

You should try measuring the XYZ values under EE (equal energy) white rather than D65. This will avoid color shifts in your conversion, as xyz_rgb.cal assumes equal-energy white for the XYZ measurements, and this is the same illuminant Radiance assumes in its RGB color space.

Cheers,
-Greg

···

From: Chamilothori Kynthia <kynthia.chamilothori@epfl.ch>
Date: February 8, 2018 7:40:41 AM PST

Dear Radiance community,

I would like your feedback on -another- XYZ to RBG conversion.
I have measurements in the XYZ colorspace from a CM-600d Konica Minolta Spectrophotometer with settings for a 2 degree standard observer and a D65 standard illuminant, both with the specular component included (SCI) and excluded (SCE).

First, I am assuming that I should use the SCE measurements for the plastic materials.
As an example, my SCE measurements of a white wall are X 81.05, Y 85.61 and Z 86.95.

When using the xyz_rgb.cal, the resulting color is R 73.3782327 G 90.3295341 B 86.8467252 - a clearly blue/green color!

Same thing happens when using the Colour Picker for Radiance (http://www.jaloxa.eu/resources/radiance/colour_picker/index.shtml) for a CIE XYZ (1931) input; but not when using the Colour Picker from an older page (http://www.jaloxa.eu/resources/radiance/cp4r.shtml), where the result is R 0.944 G 0.934 B 0.901.
The latter is a neutral color that looks correct, and is also the result when using easyrgb.com and specifying the observer and illuminant.

My guess is that I am missing a conversion regarding the illuminant - do you maybe have any input on what I am doing wrong with xyz_rgb.cal?

Thank you for your time and knowledge!
Kynthia


#3

Hi Greg,

Thanks for answering!
I thought of the same thing (after reading the corresponding Rendering for Radiance chapter) - but the wall looks white to me under daylight (and mixed daylight/artificial light). When using the values I got from xyz_rgb.cal (indeed, divided by 100, I forgot to add that! :)), the result is way too blue for my liking... (http://oi63.tinypic.com/2u7u60y.jpg).

If I understand correctly, the difference between the resulting RGB values when using xyz_rgb.cal/the new Colour Picker conversion and easyrgb.com/the older Colour Picker conversion is caused because of the illuminant assumptions (EE vs D65)? Do you think I can assume that the easyrgb.com conversion -where I can specify D65 as the illuminant- is then correct for my measurements?

Cheers - and thanks again for your help!
Kynthia

···

From: Greg Ward [mailto:gregoryjward@gmail.com]
Sent: 08 February 2018 19:01
To: Radiance general discussion <radiance-general@radiance-online.org>
Subject: Re: [Radiance-general] XYZ to RGB conversion - neutral color is not neutral

Hi Kynthia,

Under what lighting does your wall look white? Your Z value is larger than your Y value, indicating a blue tint under D65 (outdoor) illumination. This is sometimes the case with white surfaces, where they add extra blue to make the wall appear whiter under interior lighting. I don't think your color calculation is wrong, although the values are out of range for plastic by a factor of 100 because your measured values are in percent.

You should try measuring the XYZ values under EE (equal energy) white rather than D65. This will avoid color shifts in your conversion, as xyz_rgb.cal assumes equal-energy white for the XYZ measurements, and this is the same illuminant Radiance assumes in its RGB color space.

Cheers,
-Greg

From: Chamilothori Kynthia <kynthia.chamilothori@epfl.ch<mailto:kynthia.chamilothori@epfl.ch>>

Date: February 8, 2018 7:40:41 AM PST

Dear Radiance community,

I would like your feedback on -another- XYZ to RBG conversion.
I have measurements in the XYZ colorspace from a CM-600d Konica Minolta Spectrophotometer with settings for a 2 degree standard observer and a D65 standard illuminant, both with the specular component included (SCI) and excluded (SCE).

First, I am assuming that I should use the SCE measurements for the plastic materials.
As an example, my SCE measurements of a white wall are X 81.05, Y 85.61 and Z 86.95.

When using the xyz_rgb.cal, the resulting color is R 73.3782327 G 90.3295341 B 86.8467252 - a clearly blue/green color!

Same thing happens when using the Colour Picker for Radiance (http://www.jaloxa.eu/resources/radiance/colour_picker/index.shtml) for a CIE XYZ (1931) input; but not when using the Colour Picker from an older page (http://www.jaloxa.eu/resources/radiance/cp4r.shtml), where the result is R 0.944 G 0.934 B 0.901.
The latter is a neutral color that looks correct, and is also the result when using easyrgb.com<http://easyrgb.com> and specifying the observer and illuminant.

My guess is that I am missing a conversion regarding the illuminant - do you maybe have any input on what I am doing wrong with xyz_rgb.cal?

Thank you for your time and knowledge!
Kynthia


#4

Hi Kynthia,

I'm not sure how easyrgb.com does its calculations, but there is a known problem when converting between white points. One method uses a von Kries transform to attempt to match white appearances via a color adaptation space, and another just gives you what you would measure with a colorimeter. The xyz_rgb.cal program follows the colorimetric method, so if you took your measurements under bluish light, it will stay bluish even if your new color space has a warmer illuminant.

As I said, you would ideally set your Minolta to give you XYZ under EE illumination rather than D65. However, one way to trick xyz_rgb.cal into doing a cheap white point adaptation is to tell it to give you the Radiance RGB's assuming a D65 white point rather than EE white. To do so, you can run:

rcalc -f xyz_rgb.cal -e 'CIE_pri(i) = select(i, 0.640,0.330, 0.290,0.600, 0.150,0.060,0.3127,0.3290)' \
  -e '$1=R($1,$2,$3)/100;$2=G($1,$2,$3)/100;$3=B($1,$2,$3)/100'

You then give it your XYZ values on the input side, separated by spaces or tabs, one XYZ per line. The output will be the RGB values. For your wall, I get:

  Radiance RGB = 0.876 0.857 0.734

Note that the Radiance RGB primary chromaticities don't match the standard (sRGB) ones. This is unfortunate, but historical as Radiance's color system predates even sRGB.

Cheers,
-Greg

···

From: Chamilothori Kynthia <kynthia.chamilothori@epfl.ch>
Date: February 8, 2018 10:52:07 AM PST

Hi Greg,

Thanks for answering!
I thought of the same thing (after reading the corresponding Rendering for Radiance chapter) – but the wall looks white to me under daylight (and mixed daylight/artificial light). When using the values I got from xyz_rgb.cal (indeed, divided by 100, I forgot to add that! :)), the result is way too blue for my liking… (http://oi63.tinypic.com/2u7u60y.jpg).

If I understand correctly, the difference between the resulting RGB values when using xyz_rgb.cal/the new Colour Picker conversion and easyrgb.com/the older Colour Picker conversion is caused because of the illuminant assumptions (EE vs D65)? Do you think I can assume that the easyrgb.com conversion –where I can specify D65 as the illuminant- is then correct for my measurements?

Cheers – and thanks again for your help!
Kynthia

From: Greg Ward [mailto:gregoryjward@gmail.com]
Sent: 08 February 2018 19:01
To: Radiance general discussion <radiance-general@radiance-online.org>
Subject: Re: [Radiance-general] XYZ to RGB conversion - neutral color is not neutral

Hi Kynthia,

Under what lighting does your wall look white? Your Z value is larger than your Y value, indicating a blue tint under D65 (outdoor) illumination. This is sometimes the case with white surfaces, where they add extra blue to make the wall appear whiter under interior lighting. I don't think your color calculation is wrong, although the values are out of range for plastic by a factor of 100 because your measured values are in percent.

You should try measuring the XYZ values under EE (equal energy) white rather than D65. This will avoid color shifts in your conversion, as xyz_rgb.cal assumes equal-energy white for the XYZ measurements, and this is the same illuminant Radiance assumes in its RGB color space.

Cheers,
-Greg

From: Chamilothori Kynthia <kynthia.chamilothori@epfl.ch>
Date: February 8, 2018 7:40:41 AM PST

Dear Radiance community,

I would like your feedback on -another- XYZ to RBG conversion.
I have measurements in the XYZ colorspace from a CM-600d Konica Minolta Spectrophotometer with settings for a 2 degree standard observer and a D65 standard illuminant, both with the specular component included (SCI) and excluded (SCE).

First, I am assuming that I should use the SCE measurements for the plastic materials.
As an example, my SCE measurements of a white wall are X 81.05, Y 85.61 and Z 86.95.

When using the xyz_rgb.cal, the resulting color is R 73.3782327 G 90.3295341 B 86.8467252 - a clearly blue/green color!

Same thing happens when using the Colour Picker for Radiance (http://www.jaloxa.eu/resources/radiance/colour_picker/index.shtml) for a CIE XYZ (1931) input; but not when using the Colour Picker from an older page (http://www.jaloxa.eu/resources/radiance/cp4r.shtml), where the result is R 0.944 G 0.934 B 0.901.
The latter is a neutral color that looks correct, and is also the result when using easyrgb.com and specifying the observer and illuminant.

My guess is that I am missing a conversion regarding the illuminant - do you maybe have any input on what I am doing wrong with xyz_rgb.cal?

Thank you for your time and knowledge!
Kynthia


Spectral reflectance data to Radiance RGB conversion
#5

Hi Kynthia & Greg,

I read your posts and I'm also curious about white point adaptation and how it applies to Radiance.

From Greg's last comment, you recommended replacing the input white point chromaticity of equal energy white with chromaticity of D65 (x=0.3127,y=0.3290) in the xyz_rgb.cal calculation of the r,g,b components. What impact does this have, that you are not using the equal energy white point? As I understand Radiance computes luminance using equation: Luminance = 179 * (0.265*R + 0.670*G + 0.065*B), where 179 lumen/Watt is the standard luminous efficacy of equal energy white light. So does the r,g,b material definition needs to be defined for an equal energy white point in order to have correct luminance/illuminance estimations?

So given a reflectance spectrum under a D65 illuminant is a white point balancing transformation necessary to correctly define the Radiance material primitive?
Can the output of xyz_rgb.cal be safely used for the r,g,b material definition?

Thank you for the interesting and helpful discussion.

Kind Regards,
Andrei Kolomenski

···

From: Greg Ward [mailto:gregoryjward@gmail.com]
Sent: Thursday, February 08, 2018 1:57 PM
To: Radiance general discussion <radiance-general@radiance-online.org>
Subject: Re: [Radiance-general] XYZ to RGB conversion - neutral color is not neutral

Hi Kynthia,

I'm not sure how easyrgb.com<http://easyrgb.com> does its calculations, but there is a known problem when converting between white points. One method uses a von Kries transform to attempt to match white appearances via a color adaptation space, and another just gives you what you would measure with a colorimeter. The xyz_rgb.cal program follows the colorimetric method, so if you took your measurements under bluish light, it will stay bluish even if your new color space has a warmer illuminant.

As I said, you would ideally set your Minolta to give you XYZ under EE illumination rather than D65. However, one way to trick xyz_rgb.cal into doing a cheap white point adaptation is to tell it to give you the Radiance RGB's assuming a D65 white point rather than EE white. To do so, you can run:

rcalc -f xyz_rgb.cal -e 'CIE_pri(i) = select(i, 0.640,0.330, 0.290,0.600, 0.150,0.060,0.3127,0.3290)' \
               -e '$1=R($1,$2,$3)/100;$2=G($1,$2,$3)/100;$3=B($1,$2,$3)/100'

You then give it your XYZ values on the input side, separated by spaces or tabs, one XYZ per line. The output will be the RGB values. For your wall, I get:

               Radiance RGB = 0.876 0.857 0.734

Note that the Radiance RGB primary chromaticities don't match the standard (sRGB) ones. This is unfortunate, but historical as Radiance's color system predates even sRGB.

Cheers,
-Greg

From: Chamilothori Kynthia <kynthia.chamilothori@epfl.ch<mailto:kynthia.chamilothori@epfl.ch>>

Date: February 8, 2018 10:52:07 AM PST

Hi Greg,

Thanks for answering!
I thought of the same thing (after reading the corresponding Rendering for Radiance chapter) - but the wall looks white to me under daylight (and mixed daylight/artificial light). When using the values I got from xyz_rgb.cal (indeed, divided by 100, I forgot to add that! :)), the result is way too blue for my liking... (http://oi63.tinypic.com/2u7u60y.jpg).

If I understand correctly, the difference between the resulting RGB values when using xyz_rgb.cal/the new Colour Picker conversion and easyrgb.com/the<http://easyrgb.com/the> older Colour Picker conversion is caused because of the illuminant assumptions (EE vs D65)? Do you think I can assume that the easyrgb.com<http://easyrgb.com> conversion -where I can specify D65 as the illuminant- is then correct for my measurements?

Cheers - and thanks again for your help!
Kynthia

From: Greg Ward [mailto:gregoryjward@gmail.com]
Sent: 08 February 2018 19:01
To: Radiance general discussion <radiance-general@radiance-online.org<mailto:radiance-general@radiance-online.org>>
Subject: Re: [Radiance-general] XYZ to RGB conversion - neutral color is not neutral

Hi Kynthia,

Under what lighting does your wall look white? Your Z value is larger than your Y value, indicating a blue tint under D65 (outdoor) illumination. This is sometimes the case with white surfaces, where they add extra blue to make the wall appear whiter under interior lighting. I don't think your color calculation is wrong, although the values are out of range for plastic by a factor of 100 because your measured values are in percent.

You should try measuring the XYZ values under EE (equal energy) white rather than D65. This will avoid color shifts in your conversion, as xyz_rgb.cal assumes equal-energy white for the XYZ measurements, and this is the same illuminant Radiance assumes in its RGB color space.

Cheers,
-Greg

From: Chamilothori Kynthia <kynthia.chamilothori@epfl.ch<mailto:kynthia.chamilothori@epfl.ch>>

Date: February 8, 2018 7:40:41 AM PST

Dear Radiance community,

I would like your feedback on -another- XYZ to RBG conversion.
I have measurements in the XYZ colorspace from a CM-600d Konica Minolta Spectrophotometer with settings for a 2 degree standard observer and a D65 standard illuminant, both with the specular component included (SCI) and excluded (SCE).

First, I am assuming that I should use the SCE measurements for the plastic materials.
As an example, my SCE measurements of a white wall are X 81.05, Y 85.61 and Z 86.95.

When using the xyz_rgb.cal, the resulting color is R 73.3782327 G 90.3295341 B 86.8467252 - a clearly blue/green color!

Same thing happens when using the Colour Picker for Radiance (http://www.jaloxa.eu/resources/radiance/colour_picker/index.shtml) for a CIE XYZ (1931) input; but not when using the Colour Picker from an older page (http://www.jaloxa.eu/resources/radiance/cp4r.shtml), where the result is R 0.944 G 0.934 B 0.901.
The latter is a neutral color that looks correct, and is also the result when using easyrgb.com<http://easyrgb.com> and specifying the observer and illuminant.

My guess is that I am missing a conversion regarding the illuminant - do you maybe have any input on what I am doing wrong with xyz_rgb.cal?

Thank you for your time and knowledge!
Kynthia


#6

Hi Greg, hi Andrei,

Andrei - very interesting points, I'm curious to see what the community has to say.

For your last question, I understood from Greg's comments that the output of xyz_rgb.cal is correct for measurements taken under equal energy illumination (so the assumed white point is indeed the one used for the measurement).

Unfortunately, from what I see in the manual, there is no equal energy illuminant setting (E) for the Konica Minolta CM-600d, unless I'm missing something; I see only A/C/D/F variants. It seems to me that your clever trick with the white adaptation is the best way to go, Greg. Thank you both for the discussion and help!

Cheers,

Kynthia

···

________________________________
From: Kolomenski, Andrei (JSC-SF311)[WYLE LABORATORIES, INC.] <andrei.kolomenski@nasa.gov>
Sent: Thursday, February 8, 2018 9:42 PM
To: Radiance general discussion
Subject: Re: [Radiance-general] XYZ to RGB conversion - neutral color is not neutral

Hi Kynthia & Greg,

I read your posts and I’m also curious about white point adaptation and how it applies to Radiance.

From Greg’s last comment, you recommended replacing the input white point chromaticity of equal energy white with chromaticity of D65 (x=0.3127,y=0.3290) in the xyz_rgb.cal calculation of the r,g,b components. What impact does this have, that you are not using the equal energy white point? As I understand Radiance computes luminance using equation: Luminance = 179 * (0.265*R + 0.670*G + 0.065*B), where 179 lumen/Watt is the standard luminous efficacy of equal energy white light. So does the r,g,b material definition needs to be defined for an equal energy white point in order to have correct luminance/illuminance estimations?

So given a reflectance spectrum under a D65 illuminant is a white point balancing transformation necessary to correctly define the Radiance material primitive?
Can the output of xyz_rgb.cal be safely used for the r,g,b material definition?

Thank you for the interesting and helpful discussion.

Kind Regards,
Andrei Kolomenski

From: Greg Ward [mailto:gregoryjward@gmail.com]
Sent: Thursday, February 08, 2018 1:57 PM
To: Radiance general discussion <radiance-general@radiance-online.org>
Subject: Re: [Radiance-general] XYZ to RGB conversion - neutral color is not neutral

Hi Kynthia,

I'm not sure how easyrgb.com<http://easyrgb.com> does its calculations, but there is a known problem when converting between white points. One method uses a von Kries transform to attempt to match white appearances via a color adaptation space, and another just gives you what you would measure with a colorimeter. The xyz_rgb.cal program follows the colorimetric method, so if you took your measurements under bluish light, it will stay bluish even if your new color space has a warmer illuminant.

As I said, you would ideally set your Minolta to give you XYZ under EE illumination rather than D65. However, one way to trick xyz_rgb.cal into doing a cheap white point adaptation is to tell it to give you the Radiance RGB's assuming a D65 white point rather than EE white. To do so, you can run:

rcalc -f xyz_rgb.cal -e 'CIE_pri(i) = select(i, 0.640,0.330, 0.290,0.600, 0.150,0.060,0.3127,0.3290)' \
               -e '$1=R($1,$2,$3)/100;$2=G($1,$2,$3)/100;$3=B($1,$2,$3)/100'

You then give it your XYZ values on the input side, separated by spaces or tabs, one XYZ per line. The output will be the RGB values. For your wall, I get:

               Radiance RGB = 0.876 0.857 0.734

Note that the Radiance RGB primary chromaticities don't match the standard (sRGB) ones. This is unfortunate, but historical as Radiance's color system predates even sRGB.

Cheers,
-Greg

From: Chamilothori Kynthia <kynthia.chamilothori@epfl.ch<mailto:kynthia.chamilothori@epfl.ch>>

Date: February 8, 2018 10:52:07 AM PST

Hi Greg,

Thanks for answering!
I thought of the same thing (after reading the corresponding Rendering for Radiance chapter) – but the wall looks white to me under daylight (and mixed daylight/artificial light). When using the values I got from xyz_rgb.cal (indeed, divided by 100, I forgot to add that! :)), the result is way too blue for my liking… (http://oi63.tinypic.com/2u7u60y.jpg).

If I understand correctly, the difference between the resulting RGB values when using xyz_rgb.cal/the new Colour Picker conversion and easyrgb.com/the<http://easyrgb.com/the> older Colour Picker conversion is caused because of the illuminant assumptions (EE vs D65)? Do you think I can assume that the easyrgb.com<http://easyrgb.com> conversion –where I can specify D65 as the illuminant- is then correct for my measurements?

Cheers – and thanks again for your help!
Kynthia

From: Greg Ward [mailto:gregoryjward@gmail.com]
Sent: 08 February 2018 19:01
To: Radiance general discussion <radiance-general@radiance-online.org<mailto:radiance-general@radiance-online.org>>
Subject: Re: [Radiance-general] XYZ to RGB conversion - neutral color is not neutral

Hi Kynthia,

Under what lighting does your wall look white? Your Z value is larger than your Y value, indicating a blue tint under D65 (outdoor) illumination. This is sometimes the case with white surfaces, where they add extra blue to make the wall appear whiter under interior lighting. I don't think your color calculation is wrong, although the values are out of range for plastic by a factor of 100 because your measured values are in percent.

You should try measuring the XYZ values under EE (equal energy) white rather than D65. This will avoid color shifts in your conversion, as xyz_rgb.cal assumes equal-energy white for the XYZ measurements, and this is the same illuminant Radiance assumes in its RGB color space.

Cheers,
-Greg

From: Chamilothori Kynthia <kynthia.chamilothori@epfl.ch<mailto:kynthia.chamilothori@epfl.ch>>

Date: February 8, 2018 7:40:41 AM PST

Dear Radiance community,

I would like your feedback on -another- XYZ to RBG conversion.
I have measurements in the XYZ colorspace from a CM-600d Konica Minolta Spectrophotometer with settings for a 2 degree standard observer and a D65 standard illuminant, both with the specular component included (SCI) and excluded (SCE).

First, I am assuming that I should use the SCE measurements for the plastic materials.
As an example, my SCE measurements of a white wall are X 81.05, Y 85.61 and Z 86.95.

When using the xyz_rgb.cal, the resulting color is R 73.3782327 G 90.3295341 B 86.8467252 - a clearly blue/green color!

Same thing happens when using the Colour Picker for Radiance (http://www.jaloxa.eu/resources/radiance/colour_picker/index.shtml) for a CIE XYZ (1931) input; but not when using the Colour Picker from an older page (http://www.jaloxa.eu/resources/radiance/cp4r.shtml), where the result is R 0.944 G 0.934 B 0.901.
The latter is a neutral color that looks correct, and is also the result when using easyrgb.com<http://easyrgb.com> and specifying the observer and illuminant.

My guess is that I am missing a conversion regarding the illuminant - do you maybe have any input on what I am doing wrong with xyz_rgb.cal?

Thank you for your time and knowledge!
Kynthia


#7

Well, the problem with XYZ measurements of reflectance is that they require an illuminant, so that sort of forces your hand. If you were measuring a light source, then setting an illuminant would make no sense, and I think this is why chroma meters (in contrast to reflectometers) don't have a white point setting.

The coefficients used for computing lumens from Radiance RGB values won't be affected much by your choice of illuminant, but if you want to get into the gory details of correct color rendering, you can start here:

  Ward, Greg, Elena Eydelberg-Vileshin, "Picture Perfect RGB Rendering Using Spectral Prefiltering and Sharp Color Primaries," Thirteenth Eurographics Workshop on Rendering (2002), P. Debevec and S. Gibson (Editors), June 2002.

Cheers,
-Greg

···

From: Chamilothori Kynthia <kynthia.chamilothori@epfl.ch>
Date: February 8, 2018 2:58:05 PM PST

Hi Greg, hi Andrei,

Andrei - very interesting points, I'm curious to see what the community has to say.
For your last question, I understood from Greg's comments that the output of xyz_rgb.cal is correct for measurements taken under equal energy illumination (so the assumed white point is indeed the one used for the measurement).

Unfortunately, from what I see in the manual, there is no equal energy illuminant setting (E) for the Konica Minolta CM-600d, unless I'm missing something; I see only A/C/D/F variants. It seems to me that your clever trick with the white adaptation is the best way to go, Greg. Thank you both for the discussion and help!

Cheers,
Kynthia

From: Kolomenski, Andrei (JSC-SF311)[WYLE LABORATORIES, INC.] <andrei.kolomenski@nasa.gov>
Sent: Thursday, February 8, 2018 9:42 PM

Hi Kynthia & Greg,

I read your posts and I’m also curious about white point adaptation and how it applies to Radiance.

From Greg’s last comment, you recommended replacing the input white point chromaticity of equal energy white with chromaticity of D65 (x=0.3127,y=0.3290) in the xyz_rgb.cal calculation of the r,g,b components. What impact does this have, that you are not using the equal energy white point? As I understand Radiance computes luminance using equation: Luminance = 179 * (0.265*R + 0.670*G + 0.065*B), where 179 lumen/Watt is the standard luminous efficacy of equal energy white light. So does the r,g,b material definition needs to be defined for an equal energy white point in order to have correct luminance/illuminance estimations?

So given a reflectance spectrum under a D65 illuminant is a white point balancing transformation necessary to correctly define the Radiance material primitive?
Can the output of xyz_rgb.cal be safely used for the r,g,b material definition?

Thank you for the interesting and helpful discussion.

Kind Regards,
Andrei Kolomenski

From: Greg Ward [mailto:gregoryjward@gmail.com]
Sent: Thursday, February 08, 2018 1:57 PM

Hi Kynthia,

I'm not sure how easyrgb.com does its calculations, but there is a known problem when converting between white points. One method uses a von Kries transform to attempt to match white appearances via a color adaptation space, and another just gives you what you would measure with a colorimeter. The xyz_rgb.cal program follows the colorimetric method, so if you took your measurements under bluish light, it will stay bluish even if your new color space has a warmer illuminant.

As I said, you would ideally set your Minolta to give you XYZ under EE illumination rather than D65. However, one way to trick xyz_rgb.cal into doing a cheap white point adaptation is to tell it to give you the Radiance RGB's assuming a D65 white point rather than EE white. To do so, you can run:

rcalc -f xyz_rgb.cal -e 'CIE_pri(i) = select(i, 0.640,0.330, 0.290,0.600, 0.150,0.060,0.3127,0.3290)' \
               -e '$1=R($1,$2,$3)/100;$2=G($1,$2,$3)/100;$3=B($1,$2,$3)/100'

You then give it your XYZ values on the input side, separated by spaces or tabs, one XYZ per line. The output will be the RGB values. For your wall, I get:

               Radiance RGB = 0.876 0.857 0.734

Note that the Radiance RGB primary chromaticities don't match the standard (sRGB) ones. This is unfortunate, but historical as Radiance's color system predates even sRGB.

Cheers,
-Greg

From: Chamilothori Kynthia <kynthia.chamilothori@epfl.ch>
Date: February 8, 2018 10:52:07 AM PST

Hi Greg,

Thanks for answering!
I thought of the same thing (after reading the corresponding Rendering for Radiance chapter) – but the wall looks white to me under daylight (and mixed daylight/artificial light). When using the values I got from xyz_rgb.cal (indeed, divided by 100, I forgot to add that! :)), the result is way too blue for my liking… (http://oi63.tinypic.com/2u7u60y.jpg).

If I understand correctly, the difference between the resulting RGB values when using xyz_rgb.cal/the new Colour Picker conversion and easyrgb.com/the older Colour Picker conversion is caused because of the illuminant assumptions (EE vs D65)? Do you think I can assume that the easyrgb.com conversion –where I can specify D65 as the illuminant- is then correct for my measurements?

Cheers – and thanks again for your help!
Kynthia

From: Greg Ward [mailto:gregoryjward@gmail.com]
Sent: 08 February 2018 19:01
To: Radiance general discussion <radiance-general@radiance-online.org>
Subject: Re: [Radiance-general] XYZ to RGB conversion - neutral color is not neutral

Hi Kynthia,

Under what lighting does your wall look white? Your Z value is larger than your Y value, indicating a blue tint under D65 (outdoor) illumination. This is sometimes the case with white surfaces, where they add extra blue to make the wall appear whiter under interior lighting. I don't think your color calculation is wrong, although the values are out of range for plastic by a factor of 100 because your measured values are in percent.

You should try measuring the XYZ values under EE (equal energy) white rather than D65. This will avoid color shifts in your conversion, as xyz_rgb.cal assumes equal-energy white for the XYZ measurements, and this is the same illuminant Radiance assumes in its RGB color space.

Cheers,
-Greg

From: Chamilothori Kynthia <kynthia.chamilothori@epfl.ch>
Date: February 8, 2018 7:40:41 AM PST

Dear Radiance community,

I would like your feedback on -another- XYZ to RBG conversion.
I have measurements in the XYZ colorspace from a CM-600d Konica Minolta Spectrophotometer with settings for a 2 degree standard observer and a D65 standard illuminant, both with the specular component included (SCI) and excluded (SCE).

First, I am assuming that I should use the SCE measurements for the plastic materials.
As an example, my SCE measurements of a white wall are X 81.05, Y 85.61 and Z 86.95.

When using the xyz_rgb.cal, the resulting color is R 73.3782327 G 90.3295341 B 86.8467252 - a clearly blue/green color!

Same thing happens when using the Colour Picker for Radiance (http://www.jaloxa.eu/resources/radiance/colour_picker/index.shtml) for a CIE XYZ (1931) input; but not when using the Colour Picker from an older page (http://www.jaloxa.eu/resources/radiance/cp4r.shtml), where the result is R 0.944 G 0.934 B 0.901.
The latter is a neutral color that looks correct, and is also the result when using easyrgb.com and specifying the observer and illuminant.

My guess is that I am missing a conversion regarding the illuminant - do you maybe have any input on what I am doing wrong with xyz_rgb.cal?

Thank you for your time and knowledge!
Kynthia


#8

Dear Greg,

i was trying to validate my results on a similar problem, so i followed your suggestion. Using Kynthia’s wall, i get the same R and G values as you, but my B is 0.789. Are you sure you got it right? Or am i to blame here?


#9

Yes, you are correct – I’m not sure how I copied the wrong value for the blue output, but it should have been:

(R,G,B) = (0.876,0.857,0.789)


#10

Thanks for confirming!
And one more thing: are these R G B values the ones to type in the plastic primitive RGB or should they be scaled by the coefficients (e_R, e_G, e_B) = (.265 .670 .065) first?


#11

These are already the RGB values, and do not require further adjustment, unless your plastic has a non-zero specular component.


#12

And if the specular component is non-zero? I thought that in this case one needs to set “specularity”, which would be the Y value of the SCI - SCE. Does one have to alter the RGB values as well based on the specularity?


#13

Yes, the specularity is the Y value of SCI-SCE, but then the RGB needs to equal the SCI RGB value. Or, you can multiply the “diffuse” RGB by 1/(1-specularity) if you take the RGB fro the SCE measurement.


#14

Got it, thank you for your time Greg, useful knowledge!


#15

(Belated) thank you from me as well! It’s great to have all this information in one thread!