[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