Hi,
I want to visualize and animate daily changes of Arctic sea ice concentration as measured by satellites, losses should appear as shades of red, growth of green. I tried image calcuator/subtract with 32bit target, reducing to 8bit and applying a custom LUT. Result looks promising (see below), however this approach centers the histogram of the resulting image on the most common value, which depends on chosen dates. So either I need to create a custom LUT for each pair of days (very time consuming) or a possibility (unknown so far) to detect this value and let a script shift the LUT by an offset or try a completely different approach (hopefully exists). It would be great if someone could point to next step. Any feedback is welcome. -- Torsten |
Hi Torsten Arcticio,
On Mon, 25 Jul 2011, arcticio wrote: > I want to visualize and animate daily changes of Arctic sea ice > concentration as measured by satellites, losses should appear as shades > of red, growth of green. I tried image calcuator/subtract with 32bit > target, reducing to 8bit and applying a custom LUT. Result looks > promising (see below), however this approach centers the histogram of > the resulting image on the most common value, which depends on chosen > dates. > > So either I need to create a custom LUT for each pair of days (very time > consuming) or a possibility (unknown so far) to detect this value and > let a script shift the LUT by an offset or try a completely different > approach (hopefully exists). I guess you are using a macro? In any case, I would do this as a macro that has two loops: The first loop duplicates the current slice and the previous slice, uses Image Calculator to create a 32-bit output via "Subtract..." (32-bit so we also get negative values), and adds that output to the (newly created) result stack. The second loop would determine the global min and max of said stack, and set the display range to -y to +y, where y is the maximum of the absolute values of min anx max. Then you just need one color map that goes from dark red via light red via light green to dark green. You could use code like this for this purpose: -- snip -- reds = newArray(256); greens = newArray(256); blues = newArray(256); for (i = 0; i < 128; i++) { reds[i] = 255; greens[i] = i * 2 + 1; blues[i] = greens[i]; greens[255 - i] = reds[i]; reds[255 - i] = greens[i]; blues[255 - i] = blues[i]; } setLut(reds, greens, blues); -- snap -- HOWEVER. I would _strongly_ advise against using red/green. Just think about it: if I asked you to choose two colors so as to maximize the number of people who _cannot_ see the difference, which two colors would you choose? Exactly, red and green, without fail. Because 8% of the male population (which is not exactly a tiny minority of human beings) cannot see it, and even 0.5% of the female population. Yes, many scientists are familiar with red vs green images. That does not make them right, though. Nobody walks long distances anymore, even if that was the most familiar method of travel for a long time. We should learn, and strike red vs green images from our publications. One easy way to accomplish that is to use magenta instead of red. That means that you should set blues[i] = reds[i] and blues[255 - i] = reds[255 - i] in the above macro instead. Ciao, Johannes |
Free forum by Nabble | Edit this page |