
 Why Should Engineers and Scientists Be Worried About Color? (1996) - nvr219
http://www.research.ibm.com/people/l/lloydt/color/color.HTM
======
pyalot2
If you care about color, you should not miss "The importance of being linear"
[http://http.developer.nvidia.com/GPUGems3/gpugems3_ch24.html](http://http.developer.nvidia.com/GPUGems3/gpugems3_ch24.html)
and corresponding discussion on wrong gamma in a variety of programs
[http://www.4p8.com/eric.brasseur/gamma.html](http://www.4p8.com/eric.brasseur/gamma.html)

The prettiest gradients won't look good if the output color doesn't match the
displays gamma.

~~~
raverbashing
Very interesting.

Gamma is a very complicated subject. Also the "legacy" aspect as mentioned,
CRT had it, LCDs don't BUT to be "backwards compatible" they add this
nonlinearity.

Looks like the same discussion of why are we talking about PAL/NTSC and
interlacing in digital video formats.

~~~
jacobparker
The "legacy" theory is attractive but unfair. Ultimately, image reproduction
is about controlling perception and human brightness perception is non-linear.

You should do any calculations in linear space (and possibly with a
temporarily higher bit depth) but a linear display would not be desirable.

Imagine having a room with 10 independently controlled LEDs of equivalent
brightness to a 10-watt incandescent lightbulb. Try to visualize the
difference from going from 0 (pitch black) to 1 light, to 2, and then imagine
9->10\. If you try this IRL you will notice that human brightness perception
is very non-linear. To get the most bang per light switch, we need to make the
later lightbulbs brighter to get the same punch. This is what monitors do with
their bit depth.

It makes good sense for human perception to be non-linear: Earth has a very
wide range of brightnesses we need to live in, and the difference in
information we can acquire from being out in the sun vs. in the shade is not
commensurate with the difference in brightness.

If you are in a very, very dark place (not a city at night) you will
experience a very distinct non-blackness. Your eyes (brain?) are turning up
the gain to try and extract information. (I don't know if this happens in a
perfectly dark place.)

Uh sorry this was rambling. I should read that article...

~~~
raverbashing
Oh yes, human vision is non-linear, also adapted to a wide variety of
situations (just try using a digital camera and see how several adjustments
are needed and the eye does this "automatically")

But it's hard enough considering human non-linearity without adding any other
non-linearities along the way (like the CRT ones)

~~~
jacobparker
It's true: although human perception is nonlinear in a similar fashion
(logarithmic/expt) the exact way CRTs (and LCDs) transform is not based
strictly on human perception (as far as I know). It is interesting to think of
how it could be improved but I don't have any answers right now.

------
maho
I completely disagree with the first example - rainbow map vs. custom color
map for height data on a geographic map. The custom color map is designed to
show a step at 0, which highlights the coastline. Depending on what you want
show, this is very misleading! Besides the water, there is nothing special
about the coastline. The rainbow map, on the other hand, shows how shallow the
slope of the coast is, and how sensitive the coastline is to changes of the
ocean level. I also don't share the author's concern that rainbow color maps
can introduce "bands" in continuous data. Maybe it's because I had to read so
many of them over time, but in all except one of the examples, the rainbow
color maps gave me at least as much information as the alternative encodings.

~~~
jacobolus
If the goal is to merely map elevation to color in a way that best reveals
slope, then both colorings are pretty terrible. What you’d want instead is to
have uniform change in lightness [lightness differences are the most salient
perceptually].

The big problem with “rainbow” gradients is that they typically have some
sections with steep change in lightness, and other sections of nearly uniform
lightness, mixed together with nonuniform (in terms of human perception) hue
and chroma changes from one part of the gradient to another. It’s very
difficult to compare the slopes of a rainbow-gradient-mapped function across
different parts of the gradient, and in some sections of the gradient very
difficult to visually distinguish salient details.

It would be much better to have uniform changes in lightness. The simplest
such map just goes from black to white in a perceptually uniform way. But if
more distinctions are needed, then another possible method is to make the
lightness attribute sort of sawtooth (or can potentially use more of a
triangle wave, in some cases), while keeping chroma relatively constant and
letting hue change close to uniformly. This makes a few places where the
perceived lightness has either a change of slope or a discontinuity, but since
the rate of lightness change is otherwise constant, it is still fairly easy to
make comparisons. [I really should make a proper article/essay about this at
some point, with some demonstrative images / interactive widgets: it’s much
easier to show visually than to describe in text]

In the case of the chart under discussion, if the goal is to show the slope
across the shoreline boundary and compare it to the slope elsewhere, I would
recommend having uniform lightness change from dark [low elevation] to light
[high elevation], combined with a hue discontinuity at the shore boundary.
Because lightness is the most perceptually salient color attribute for
noticing object boundaries, textures, fine details, motion, etc., it would
still be possible to have a good idea of the slope across the shoreline
boundary, while being able to perceive the boundary when closely examining the
image.

[Note: such schemes will also generally be helpful for colorblind users]

------
phorese
Being colorblind, the bottom row in Figure 5 is completely useless to me. I
can also not distinguish +1000 from -1000 on the left side of Figure 1.

Publishers, _please_ use color only when it's really neccessary, and then
_please_ have some colorblind person available for sanity checking! While it
might be hard to find someone with the less common variants, you can at least
cover red-green.

~~~
Woodshed
>Hi could you please make an article about color that uses color figures, work
for people that can't see all colors?

I hope you are joking. Maybe after they get done doing that we can have an
article on smells with smells that people who can't smell can smell.

------
stinos
Rather interesting, but can anybody point to something more practical? Ie some
application or website that, given a couple of colors or preferences or sample
data, constructs some sort of optimal color scale, preferrably also usable for
the most common form of color-blindness?

~~~
jacobolus
Cynthia Brewer’s “Color Brewer” is a great tool.
[http://colorbrewer2.org](http://colorbrewer2.org)

Though note, it’s not really ideal for making gradients, since its
“sequential” schemes only go up to 9 distinct categories, and its “diverging”
schemes only go up to 11 distinct categories. If you took the suggested colors
and made them equally spaced control points in a photoshop/CSS/etc. gradient,
you’d get a reasonable outcome.

~~~
jdherman
There are libraries for matlab (and I think matplotlib too) that let you
interpolate the ColorBrewer maps into gradients. Here's the matlab one:
[http://www.mathworks.com/matlabcentral/fileexchange/34087-cb...](http://www.mathworks.com/matlabcentral/fileexchange/34087-cbrewer-
colorbrewer-schemes-for-matlab)

Also for gradients, I wrote a pretty simple colormap editor here:
[http://colormap.org/](http://colormap.org/). This maybe gives too much
freedom, since it doesn't enforce any best practices as far as colorblindness
is concerned. But if you make sure the brightness (the gray line) is
monotonic, it's a step in the right direction.

~~~
heuermh
Cool editor, thanks for the link.

I wrote a library similar to what you describe for matlab in java:
[http://www.dishevelled.org/color-scheme/](http://www.dishevelled.org/color-
scheme/)

------
aldanor
Trivia: their perception rule-based system is called "PRAVDA", which means
"The Truth" in Russian.

~~~
moondowner
Actually "Pravda" means justice. Not only in Russian but in other Slavic
languages as well.

~~~
aldanor
"Pravda" never means justice in Russian (saying this as a native speaker), it
means "truth". Btw there was a famous communist newspaper named Pravda, too:
[http://en.wikipedia.org/wiki/Pravda](http://en.wikipedia.org/wiki/Pravda).

~~~
moondowner
My bad. Justice in Russian is actually "pravosudie" (if I got the romanization
right).

Justice in Croatian, Serbian, Macedonian, Bosnian and some other Slavic
languages is "pravda". Predominantly in the South Slavic group it seems.

