[Radiance-general] calculating correct illuminance from irradiance

Gregory J. Ward gregoryjward at gmail.com
Wed Jan 25 01:42:12 CET 2006


Hi Christian,

Thanks for reading through the documentation.  I know it can be a  
frustrating exercise, trying to find what you're looking for in the  
many, widely dispersed sources available.  It looks like you did a  
thorough job.

> ...
> 6. at first i used 'rtrace' for the irradiance data:
> *
>       *echo "1 0 0 0 0 1" |rtrace -I -h lux_test.oct
>
> /      4.154708e+01 2.754719e+01 1.059043e+01     /*First  
> question:  Are these irradiance values for RGB with the unit 'w/ 
> square meter' ?*

Yes, sort of.  If your scene consisted of purely gray surfaces with  
no radiation outside the visible wavelength limits, then the numbers  
would correspond to watts/meter^2 exactly.  However, the real world  
has stuff going on in UV and IR wavelengths (and beyond), and these  
should be included in a true measure of radiant flux.

More technically, the values used in Radiance (by convention)  
correspond to a transformation of the CIE XYZ coordinates to an RGB  
color space, with a conversion factor of 179 lumens/watt to make a  
vague correspondence to radiometric units with the above  
assumptions.  So long as the same conversion is applied in reverse  
when getting back to photometric quantities, all is well.  The exact  
color transform used is your next question.

> 7. now i measured the illuminance:
>
>     $ echo '1 0 0 0 0 1' |rtrace -I -h  lux_test.oct |rcalc -e  
> '$1=*47.4**$1+*120**$2+*11.6**$3'
>
>         *5397.84338*
> -- this value is really satisfying, my collected data is *5400 lux!*
>
> *Second question: Where do the factors of  *47.4/179 =* 0.26 ,  
> *120/179 =* 0.67 and *11.6/179 =* 0.065 come from?
>
> *I only know the standard factors from video for the EBU -  
> Phosphors. There the luma value is: Y = 0.299*R+0.587*G+0.114*B
> I tried these ones, but the result worse, in fact it is *5334 lux*.

The RGB color space used in Radiance is defined by the following  
constants, defined in ray/src/common/color.h:

#define  CIE_x_r                0.640           /* nominal CRT  
primaries */
#define  CIE_y_r                0.330
#define  CIE_x_g                0.290
#define  CIE_y_g                0.600
#define  CIE_x_b                0.150
#define  CIE_y_b                0.060
#define  CIE_x_w                0.3333          /* use true white */
#define  CIE_y_w                0.3333

These same constants are defined in ray/src/cal/cal/xyz_rgb.cal for  
convenient conversion between XYZ and RGB coordinates.  The Y(R,G,B)  
function from this file reduces to:

Y(R,G,B) = 0.26510582*R + 0.67010582*G + 0.0647883598*B;

which is basically the same as what you have above.  Except for the  
difference in the green channel chromaticities and the white point,  
these primaries are in fact the same as used for the standard sRGB  
color space.  If it wouldn't have thrown everything off slightly with  
little benefit, I might have switched to the sRGB primaries in  
Radiance when this standard came out.

In fact, the color primaries in Radiance can be whatever you choose  
them to be.  As I said, this is all by convention, and the actual  
calculation only converts from RGB to luminance to determine whether  
or not to truncate the ray tree with the -lw option.  Since this is  
really a minor effect, it actually doesn't matter what color space  
you render in, and if you want to know how Radiance may be used to  
obtain more accurate color results, consult the following paper:

	http://www.anyhere.com/gward/papers/egwr02/

I hope this helps.
-Greg



More information about the Radiance-general mailing list