Preserving Colors in Color Composites
© Till Credner 1999
Max-Planck-Institut für Aeronomie
Before you go on reading, please be acquainted with the following terms:
Three Color Composite
The Problem of Losing Colors
The usual way of additional combining three images to an RGB-image suffers from
loss or even fake of color information. It is common to enhance contrast and faint
features in images with nonlinear look-up tables, for example a logarithmic intensity
But doing this to the three channels of an RGB-image changes the channel ratios, i.e.
the colors are not preserved. Normally the colors become more neutral (grey), i.e. the channels
equalize. This also happens to the human eye and conventional photographies if a nonlinear
response or even saturation is reached. Stars do appear white on images due to nonlinear
scaling and not just because of detector saturation!
A very big advantage of modern CCD detectors is their linearity over a large dynamic range.
But with the usual way of nonlinear constructed RGB-images we throw away most of the scientific
color information. Realizing this problem I have constructed a method of image RGB combination
that preserves the original colors as shown in the following example:
The Open Star Cluster NGC 1245, with preserved colors (left) and as conventional RGB composite (right).
Intensity scaling (cubic root) and cuts are chosen identical.
Intensity and Chromaticity Values
To understand and solve the problem some quite easy mathematics has to be applied.
Every original color picture element (pixel) is given by an RGB color triple (R, G, B)
with the including intensity values for red, green, and blue. The total intensity I
is the sum of these channels
I = R + G + B.
The colors or more exactly the chromaticities of the RGB-model are given by
The chromaticity values express in percent how the total intensity is distributed to the three channels.
These values can be equal for different intensities and range always from 0 to 1 (r + g + b = 1 !).
In the RGB chromaticity triangle all available values are shown with the maximum possible total intensity:
| r = || R / I = || R / (R + G + B)
| g = || G / I||
| b = || B / I.||
RGB Chromaticity Triangle
For example (r, g, b) = (0, 0, 1) is the lower left blue corner. (1/2, 1/2, 0) is
the pure yellow between the red and green corner.
And in the center of the triangle we have white with (1/3, 1/3, 1/3).
These chromaticity values are equivalent to the
physical and astronomical color definition, i.e. they are defined
by the intensity ratios of the channels. But note that the physiological chromaticity
diagram is quite different, because the human eyes three primary colors are somewhat shifted from
the RGB colors. The eye can see more colors than your monitor or printer can show and the RGB
chromaticities are just a gamut (subspace) of the
CIE Chromaticity Diagram.
Changing of chromaticities with nonlinear scaling
The problem of conventional color composites is that nonlinear scaling of an RGB-image is changing
most of the chromaticity values. If you enhance faint features for example with a cubic root function
the colors change from the above shown chromaticity diagram to the following:
RGB Chromaticity Triangle after scaling with cubic root
The colors are "washed out"! The colors become more neutral because the channels equalize.
And so color information is lost.
A particular problem with functions where f(a)/f(b) not equal to f(a/b) is that the same
colors with different intensities become different colors after scaling! Here an example
of logarithmic scaling of intensities from 1 to 50 and from 1 to 5000:
And so objects with the same colors become different colored objects in the color composite!
Processing with preserved colors
The idea now is to preserve the position in the chromaticity triangle, whatever you apply
to the image. The total intensity and the chromaticity values are calculated as written above
from the data (after all stuff like background subtraction and color balance has been done).
Then just the intensity image
is processed for an optimized view with nonlinear scaling, upper and lower cuts, unsharp masking,
or whatever. The chromaticity values stay the same to show the original colors of the astronomical objects.
After this intensity processing the image is recombined to an RGB image again:
This method is similar to image processing in the
HSV (Hue, Saturation, Value) color model, whereas Value is quite
different to the above intensity definition and not equivalent to the physical
definitions (Value=maximum(R, G, B)). Also other similar models are available
for example HLS (Hue, Lightness, Saturation), LRGB (Lightness, Red, Green, Blue)
or L*a*b (Lightness, a&b color information), whereas all these models
use different color definitions that are not equivalent to the
scientific values and show the "wash out" effect at increasing intensities.
| Rnew = || r * Inew
| Gnew = || g * Inew
| Bnew = || b * Inew
The resulting images show much "stronger" colors then before.
The spectral star classifications are easily visible to everyones eyes. You see the
"true physical" colors of the stars (having in mind the used filters!). The aim of this method
is NOT to give the "natural" physiological color impressions as our eye would see it. The aim is
to show the maximum astrophysical content of the observations in one image!
But some unconvenient points have to be said:
This method is extremely sensitive to the channel matching. The positions
and point spread functions of the three RGB-images must match and no saturations are
allowed, as they would fake the colors. Smoothing the color information helps
Another thing is that many bright intensities must be scaled down to be able of showing the original color.
This makes the overall image appearance somewhat darker. But this can be switched off so that stars
appear in the usual white in the center, but at least show the right colors in the surrounding
(see for example the image of NGC 2266).
And third you should be aware, that not just your eyes, but also your monitor and printer are using
a nonlinear look-up table, i.e. a logarithmic scaling to present different intensities in a similar way
the human eye and brain works. But with the above method we at least can eliminate the color loss due
to image processing.
But in all I think it is very worth it. Just in this way you can see the maximum original color information
of your astronomical data.
All images are clickable to get the whole HTML-document with description
and larger image size.
Foley, J. D., et al., 1996, Computer graphics: principles and practice, Addison-Wesley, 563-604
Kaiser, P. K., 1999, The Joy of Visual Perception: A Web Book, York University
Kylander, K., Kylander, O. S., GUM, The GIMP User Manual
Malin, D., Murdin, P., 1984, Colours of the Stars, Cambridge University Press, 198
© all photographs taken by
Till Credner and