Why RGB Working Spaces?



::Index  <Prev  >Next


RGB Working Spaces (RGBWS) in PixInsight have nothing to do with color management or ICC profiles. Color management comprises color spaces and transforms used to achieve consistent color through different imaging devices. A RGBWS is used strictly for pure image processing tasks. This differs from what is customary in most imaging applications.

Why this separation between color management and color processing? Because color spaces defined to characterize chromatic response of imaging devices may not be appropriate for luminance/chrominance separation of astrophotographical images in terms of pure image processing. This is especially true for deep-sky images.

The human vision system is very sensitive to green light. For this reason, green is given a much stronger weight than red or blue for the calculation of luminance in standard color spaces. This is usually quite appropriate for terrestrial daylight scenes because they are illuminated by continuous, white light. However, with a few exceptions, green is by no means so important in the deep sky.

Hydrogen-alpha emission light is deeply red, and reflection nebulae are neatly blue. For images of these objects, the red and blue channels own most of the information, while green holds just stellar objects. Oxygen-III light is a mix of blue and green, and galaxies emit the whole spectrum. However, except a few planetary nebulae, and perhaps some cometary tails, we find no pixel that we can describe as a green pixel, other than noise, in deep-sky images.

By defining luminance coefficients that don't try to match the human eye's physiological characteristics, but to make more justice to the real amount of data from each color channel, we can greatly optimize some image processing tasks. Let us put an example.

This image is a reduced crop from one of our experiments with Palomar Observatory Sky Survey data. Digitized POSS data has been made publicly available and includes many interesting areas like this one, NGC 6992 in the Veil nebula complex, in Cygnus. After downloading POSS images for the red, green (visible) and blue channels, we registered and combined them in PixInsight to obtain a RGB color image. The image below has been curves adjusted to achieve reasonable contrast; no more processing has been done for detail enhancement or noise reduction.

Let us write up the defining parameters of the widely used sRGB space:

sRGB Space

x

y

Luminance

Red

0.648431

0.330856

0.222491

Green

0.321152

0.597871

0.716888

Blue

0.155886

0.066044

0.060621

Values have been transformed from the D65 to the D50 reference white by the Bradford algorithm of chromatic adaptation. Gamma in the sRGB space is given by a function approximately equal to a simple 2.2 gamma curve. As you see, green weights ten times more than blue and three times more than red in the calculation of luminance.

This is the luminance as calculated in the sRGB space:

Now we define a new RGB color space with the same chromaticity coordinates and gamma function as above, but using different luminance coefficients:

Custom RGBWS

x

y

Luminance

Red

0.648431

0.330856

1.00 (0.465116)

Green

0.321152

0.597871

0.15 (0.069767)

Blue

0.155886

0.066044

1.00 (0.465116)

Between parentheses we give the same coefficients normalized to form a unit vector.

This is the luminance as calculated in the custom RGB space:

[mouseover: sRGB luminance vs. luminance in a custom RGB working space]

As you see, luminance in the custom RGBWS contains more significant structures and shows much more detail than the sRGB luminance. This is simply because the new luminance coefficients are better balanced to give each channel the correct weight in terms of the amount of significant information, instead of trying to emulate the human eye's chromatic response. Our results would be nearly the same if we start from a wider gamut RGB space, such as Adobe® RGB(1998) or CIE RGB.

When processing the custom luminance above, the tasks of detail enhancement and noise reduction will be easier, and so we'll have more opportunities to achieve better results.



::Index  <Prev  >Next