3.8 Falsecolor Scale

Hi Greg,

Well, I have been using the new falsecolor scale (in conjunction with that very cool vwrays trick you developed with John M. to render non-planar clipping "planes" a while back -- very nice!!!), and I have to agree with Axel that it's very unusual. While I totally applaud the effort to provide more color points from which to pick off values, there are a couple of issues I'd like to point out:

First off, everyone I've ever "trained" in the use of these images and indeed most lighting professionals who are facile with the interpretation of these images expect blue to represent the lowest and red to represent the most intense values. I'm not up on color spaces and indeed even have partially "defective color vision", as the FAA kindly calls it, but my brain seems to understand a low-to-high intensity progression of blue-cyan-green-orange-red. It makes sense to me, but more importantly it's what I've been generating (and teaching) for years. So to force my brain to remember that blue now trumps magenta in intensity has been a bit of a trick this morning. I wonder what the impact will be with clients already versed in the interpretation of the older scale of these images.

Second, I have generally overcome the limited color range by playing with scale limit and logarithmic mappings whenever a more finite scale is required. This often limits the usefulness of the scale range to a specific area of interest in the image, perhaps a wall with a subtle luminance gradient that I wish to study, but it works. I agree it's more work, but again it successfully applies the currently-accustomed color scale to a fine-grained area of interest.

I propose two solutions to this. One, re-ordering the colors to better fit the old scale, at the very least putting blue at the bottom and red back at the top, spectral/thermal realities notwithstanding. Two, give the user an option of using the old scale or the new one. Like I said, I think the additional colors help, and maybe your new scale really is superior, once a little adaptation occurs; the option to use either scale might ease that transitional process. Thoughts?

- Rob G.

Hi Rob,

Thanks for your feedback. In retrospect, it would have been smart to add an option to get back the old color scale, and I can work on adding one. In the meantime, you can alias your falsecolor to:

  falsecolor -r '1.6*v-.6' -g 'if(v-.375,1.6-1.6*v,8/3*v)' -b '1-8/3*v'

to get back the old scale. Easier might be to uncomment lines 14-16 in your falsecolor script and comment (or remove) lines 17-19.

If anyone has references to a preferred scale that runs through at least 8 named colors on a natural-appearing scale, I'd love to hear about it.

Cheers,
-Greg

···

From: Rob Guglielmetti <rpg@rumblestrip.org>
Date: November 10, 2006 1:34:35 PM MST

Hi Greg,

Well, I have been using the new falsecolor scale (in conjunction with that very cool vwrays trick you developed with John M. to render non-planar clipping "planes" a while back -- very nice!!!), and I have to agree with Axel that it's very unusual. While I totally applaud the effort to provide more color points from which to pick off values, there are a couple of issues I'd like to point out:

First off, everyone I've ever "trained" in the use of these images and indeed most lighting professionals who are facile with the interpretation of these images expect blue to represent the lowest and red to represent the most intense values. I'm not up on color spaces and indeed even have partially "defective color vision", as the FAA kindly calls it, but my brain seems to understand a low-to-high intensity progression of blue-cyan-green-orange-red. It makes sense to me, but more importantly it's what I've been generating (and teaching) for years. So to force my brain to remember that blue now trumps magenta in intensity has been a bit of a trick this morning. I wonder what the impact will be with clients already versed in the interpretation of the older scale of these images.

Second, I have generally overcome the limited color range by playing with scale limit and logarithmic mappings whenever a more finite scale is required. This often limits the usefulness of the scale range to a specific area of interest in the image, perhaps a wall with a subtle luminance gradient that I wish to study, but it works. I agree it's more work, but again it successfully applies the currently-accustomed color scale to a fine-grained area of interest.

I propose two solutions to this. One, re-ordering the colors to better fit the old scale, at the very least putting blue at the bottom and red back at the top, spectral/thermal realities notwithstanding. Two, give the user an option of using the old scale or the new one. Like I said, I think the additional colors help, and maybe your new scale really is superior, once a little adaptation occurs; the option to use either scale might ease that transitional process. Thoughts?

- Rob G.

Gregory J. Ward wrote:

Hi Rob,

Thanks for your feedback. In retrospect, it would have been smart to add an option to get back the old color scale, and I can work on adding one. In the meantime, you can alias your falsecolor to:

    falsecolor -r '1.6*v-.6' -g 'if(v-.375,1.6-1.6*v,8/3*v)' -b '1-8/3*v'

to get back the old scale. Easier might be to uncomment lines 14-16 in your falsecolor script and comment (or remove) lines 17-19.

Great, thanks Greg!

A new "-spec" option will be incorporated into the HEAD version of falsecolor, which you can grab from:

  http://www.radiance-online.org/cgi-bin/viewcvs.cgi/ray/src/px/

as soon as I get it checked in...

-Greg

···

From: Rob Guglielmetti <rpg@rumblestrip.org>
Date: November 10, 2006 1:54:14 PM PST

Gregory J. Ward wrote:

Hi Rob,

Thanks for your feedback. In retrospect, it would have been smart to add an option to get back the old color scale, and I can work on adding one. In the meantime, you can alias your falsecolor to:

    falsecolor -r '1.6*v-.6' -g 'if(v-.375,1.6-1.6*v,8/3*v)' -b '1-8/3*v'

to get back the old scale. Easier might be to uncomment lines 14-16 in your falsecolor script and comment (or remove) lines 17-19.

Great, thanks Greg!

Rob,

expect blue to represent the lowest and
red to represent the most intense values

I beg to differ. When I first decided on a false-colour scale (quite some years ago) I had about 15 to choose from in IDL (data analysis/visualisation package similar to MATLAB). The one they called "gamma" (black-blue-red-orange-yellow-white) seemed a natural since it corresponded to my expectations (i.e. cold through to hot). I've been using it ever since. I clip the scale to go from the brightest blue through to yellow. I clip at the low end because part of the black to blue transition looks a little too close to the blue-red transition. White at the top is removed so that high values in figures wouldn't bleed into background white paper on hard copies. Example:

http://www.iesd.dmu.ac.uk/~jm/pickup/pipe_figure.pdf

I certainly prefers Greg's new scale to the previous version. However I will continue to use my gamma scale even though it offers less discrimination than Greg's new scale. I guess I just prefer a simple thermal scale. The only other scale I use in IDL is a red-green-blue scale whenever I need to show values either side of zero (e.g. the difference between two images).

I suspect the red=high expectation originates with the common red=danger/warning usage. Plus the fact that the red light in a traffic signal is always at the top (any exceptions?). These are of course uses of colour in a discrete rather than continuous sense. Indeed, whilst red=danger etc. does lead to an expectation that red should be the colour for the most intense values (i.e. at the top), I don't believe that there is any intuitive expectation for what should be below [1]. Or, how the transitions should look. The rainbow scale provides a "natural" solution of sorts. However, despite a training in physics and a familiarity with the progression of colours in a rainbow, I still find the thermal scale more of an intuitive progression than the rainbow scale. Whilst I don't see too many examples I'm not entirely alone in having this preference: the false-colour scheme used in ECOTECT seems similar.

-John

[1] Those familiar with Doppler broadening of spectral lines (where the line is both red and blue shifted) excepted.

···

-----------------------------------------------
Dr. John Mardaljevic
Senior Research Fellow
Institute of Energy and Sustainable Development
De Montfort University
The Gateway
Leicester
LE1 9BH, UK
+44 (0) 116 257 7972
+44 (0) 116 257 7981 (fax)

jm@dmu.ac.uk
http://www.iesd.dmu.ac.uk/~jm

I find people understand the blue - red scale as well. Since falsecolor
images are usually presented to clients, having "bloody" pictures is
often a very effective communication tool. Probably some psychological
thing that dates back to hunting mammoths saber tooth tigers!

The one drawback I always saw to the old scale was that if one sets the
scale at 3500 lux, the fist number shown is something like 3281.25.
(Under that lighting condition, my light meter measures at +/- 10 lux!)
It would be great to start at 3500 lux and have the ability to drop or
set the decimal places. It always confuses people when I tell them red
is 3500 lux but they can't find the number as they scan the scale.

I've not had a chance to try out the new scale but offer the
following:

In AGI, one is able to set the maximum light level in the image as the
top of the falsecolor scale like so.

http://members.fortunecity.com/dela2/agi1.jpg

Or You can set the scale and make it so whatever you set is displayed
at the top.

http://members.fortunecity.com/dela2/agi1.jpg

I suppose in Radiance one could to a pextrem command on a picture to
get the maximum value and then use that to set the scale, but having it
spit out something like the following can be a little intimidating. :slight_smile:

499 499 0.000000e+00 0.000000e+00 0.000000e+00
322 218 2.706250e+01 2.693750e+01 2.706250e+01

I've tried to use this before, but have come up with numbers I don't
feel comfortable using.

Seems like a "-s max" setting would be useful. Where setting the scale
to "max" would automatically check the image and set the scale to the
max pixel value automatically.

Hope some of that is useful.

Mark

I find people understand the blue - red scale as well. Since falsecolor images are usually presented to clients, having "bloody" pictures is often a very effective communication tool. Probably some psychological thing that dates back to hunting mammoths saber tooth tigers!

I agree with the red=danger aspect; it's one of the things I like about the scale. Blue is calming, red is alarming. And another thing: clients freak out enough with the few colors we show them sometimes; adding more color to the mix may make things worse. John, I can see where you are coming from (Greg too), and I think both scales have merits. THanks Greg for adding the "-spec" option.

I suppose in Radiance one could to a pextrem command on a picture to get the maximum value and then use that to set the scale, but having it spit out something like the following can be a little intimidating. :slight_smile:

499 499 0.000000e+00 0.000000e+00 0.000000e+00
322 218 2.706250e+01 2.693750e+01 2.706250e+01

I've tried to use this before, but have come up with numbers I don't feel comfortable using.

Hmmm, what do you mean, you don't feel comfortable with these numbers? I use pextrem all the time in conjunction with falsecolor. If you simply run 'pextrem -o' on a radiance image and multiply the green channel of the high pixel by 179, you have your maximum value for the -s option.

Seems like a "-s max" setting would be useful. Where setting the scale to "max" would automatically check the image and set the scale to the max pixel value automatically.

yeah, and this is probably easy for anyone who doesn't suck at programming, as I do. I just spent longer than I care to share trying to add such an option to falsecolor. It should be easy, but I couldn't sort out what values to use for certain variables. Greg has already done a lot of the work, since the -e option already has code to run pextrem to find the max (and min) values and assign them to variables within the script (falsecolor is actually just a shell script). But I don't know how the scale option gets applied to the legend. (Greg, I can share with you what I have so far, if you wanna take it the rest of the way. )

- Rob

···

On Nov 11, 2006, at 11:14 AM, Mark de la Fuente wrote:

I never put in an option to set the falsecolor scale to the image maximum because it's usually the wrong thing to do. There are often a few really bright pixels in a scene that may be orders of magnitude above the rest. It's better to go in manually with ximage and use the 'l' key to pick out luminance values in the bright regions and set the scale based on those.

-G

···

From: Rob Guglielmetti <rpg@rumblestrip.org>
Date: November 11, 2006 9:21:50 PM PST

On Nov 11, 2006, at 11:14 AM, Mark de la Fuente wrote:

I find people understand the blue - red scale as well. Since falsecolor images are usually presented to clients, having "bloody" pictures is often a very effective communication tool. Probably some psychological thing that dates back to hunting mammoths saber tooth tigers!

I agree with the red=danger aspect; it's one of the things I like about the scale. Blue is calming, red is alarming. And another thing: clients freak out enough with the few colors we show them sometimes; adding more color to the mix may make things worse. John, I can see where you are coming from (Greg too), and I think both scales have merits. THanks Greg for adding the "-spec" option.

I suppose in Radiance one could to a pextrem command on a picture to get the maximum value and then use that to set the scale, but having it spit out something like the following can be a little intimidating. :slight_smile:

499 499 0.000000e+00 0.000000e+00 0.000000e+00
322 218 2.706250e+01 2.693750e+01 2.706250e+01

I've tried to use this before, but have come up with numbers I don't feel comfortable using.

Hmmm, what do you mean, you don't feel comfortable with these numbers? I use pextrem all the time in conjunction with falsecolor. If you simply run 'pextrem -o' on a radiance image and multiply the green channel of the high pixel by 179, you have your maximum value for the -s option.

Seems like a "-s max" setting would be useful. Where setting the scale to "max" would automatically check the image and set the scale to the max pixel value automatically.

yeah, and this is probably easy for anyone who doesn't suck at programming, as I do. I just spent longer than I care to share trying to add such an option to falsecolor. It should be easy, but I couldn't sort out what values to use for certain variables. Greg has already done a lot of the work, since the -e option already has code to run pextrem to find the max (and min) values and assign them to variables within the script (falsecolor is actually just a shell script). But I don't know how the scale option gets applied to the legend. (Greg, I can share with you what I have so far, if you wanna take it the rest of the way. )

- Rob

I think most Radiance users know how to use such an option with caution. If anything, it's a nice starting point, a way to see what you're dealing with in a given scene. I don't see how it's much different from defaulting to '-s 1000'; certainly there is potential there for gross misrepresentation of the luminous environment as well?

···

On Nov 12, 2006, at 12:04 AM, Gregory J. Ward wrote:

I never put in an option to set the falsecolor scale to the image maximum because it's usually the wrong thing to do. There are often a few really bright pixels in a scene that may be orders of magnitude above the rest. It's better to go in manually with ximage and use the 'l' key to pick out luminance values in the bright regions and set the scale based on those.

OK, fine. I added a "-s auto" specification to set the maximum to the penultimate foveal maximum as reported by the "phisto" command. I didn't make it the default, because it takes a bit longer to compute that way.

-Greg

···

From: Rob Guglielmetti <rpg@rumblestrip.org>
Date: November 11, 2006 11:28:41 PM PST

On Nov 12, 2006, at 12:04 AM, Gregory J. Ward wrote:

I never put in an option to set the falsecolor scale to the image maximum because it's usually the wrong thing to do. There are often a few really bright pixels in a scene that may be orders of magnitude above the rest. It's better to go in manually with ximage and use the 'l' key to pick out luminance values in the bright regions and set the scale based on those.

I think most Radiance users know how to use such an option with caution. If anything, it's a nice starting point, a way to see what you're dealing with in a given scene. I don't see how it's much different from defaulting to '-s 1000'; certainly there is potential there for gross misrepresentation of the luminous environment as well?

1 Like

Even better than a simple max scale; much better, in fact. As usual, you've improved on the idea and, more importantly, executed. Thanks, Greg. Looking forward to grabbing it up tomorrow.

···

On Nov 12, 2006, at 7:44 PM, Gregory J. Ward wrote:

OK, fine. I added a "-s auto" specification to set the maximum to the penultimate foveal maximum as reported by the "phisto" command. I didn't make it the default, because it takes a bit longer to compute that way.

On the note of falsecolor scale,

Is it possible to integrate a minimum parameter also?
I’m doing some renders of facades showing vertical daylight factor. Would be nice to keep my scale from VDF 25%-50%

There’s no way to set the minimum for a linear scale, which always starts from 0. You can do it with the -log option, you just need to figure out the log10 of the range you want.

-G

Would it be possible to remap pixel values with rcalc? Let’s say they are in lux so I want to remove 2000 lux for all pixels. (And thus moving my minimum from 0 to 20% DF on a 10klux sky)

How would that rcalc command look?

I think pcomb can do this:

pcomb -e 'rem:2000/WE' -e 'ro=ri(1)-rem;go=gi(1)-rem;bo=bi(1)-rem' -o orig_irrad.hdr > adj_irrad.hdr

Values less than 2000 will get truncated to 0 before output. Labels in falsecolor will be off by 2000.

-Greg