RGB color model



The RGB color model is an additive color model in which red, green, and blue light are added together in various ways to reproduce a broad array of colors. The name of the model comes from the initials of the three additive primary colors, red, green, and blue.

The term RGBA is also used to mean Red, Green, Blue, Alpha. This is not a different color model, but a representation; the Alpha is used for transparency.

The RGB color model itself does not define what is meant by ‘red’, ‘green’ and ‘blue’ colorimetrically, and so the results of mixing them are not specified as exact, but relative.

When the exact chromaticities of the red, green, and blue primaries are defined, the color model then becomes an absolute color space, such as sRGB or Adobe RGB; see RGB color spaces for more details.

This article discusses concepts common to all the different RGB color spaces that use the RGB color model, which are used in one implementation or another historically in color image producing electronics technology.



Additive primary colors
The choice of 'primary' colors is related to the physiology of the human eye; good primaries are stimuli that maximize the difference between the responses of the cone cells of the human retina to light of different wavelengths, and that thereby make a large color triangle.

The normal three kinds of light-sensitive photoreceptor cells in the human eye (cone cells) respond most to yellow (long wavelength or L), green (medium or M) and violet (short or S) light (peak wavelengths near 570 nm, 540 nm and 440 nm respectively ). The difference in the signals received from the three kinds allows the brain to differentiate a wide gamut of different colors, while being most sensitive (overall) to yellowish-green light and to differences between hues in the green-to-orange region.

As an example, suppose that light in the orange range of wavelengths (approximately 577 nm to 597 nm) enters the eye and strikes the retina. Light of these wavelengths would activate both the medium and long wavelength cones of the retina, but not equally—the long-wavelength cells will respond more. The difference in the response can be detected by the brain and associated with the concept that the light is 'orange'. In this sense, the orange appearance of objects is simply the result of light from the object entering our eye and stimulating the relevant kinds of cones simultaneously but to different degrees.

Use of the three primary colors is not sufficient to reproduce all colors; only colors within the color triangle defined by the chromaticities of the primaries can be reproduced by additive mixing of non-negative amounts of those colors of light.



RGB and displays
One common application of the RGB color model is the display of colors on a cathode ray tube, liquid crystal display or plasma display, such as a television or a computer’s monitor. Each pixel on the screen can be represented in the computer or interface hardware (for example, a ‘graphics card’) as values for red, green, and blue. These values are converted into intensities or voltages via gamma correction, such that the intended intensities are reproduced on the display.

By using an appropriate combination of red, green, and blue intensities, many colors can be represented. Typical display adapters in 2007 use up to 24 bits of information for each pixel. This is usually apportioned with 8 bits each for red, green and blue, giving a range of 256 possible values, or intensities, for each hue. With this system, 16,777,216 (256³ or 224) discrete combinations of hue, saturation, and lightness can be specified, though not necessarily distinguished.

Video electronics
RGB is a type of component video signal used in the video electronics industry. It consists of three signals—red, green and blue—carried on three separate cables/pins. Extra cables are sometimes needed to carry synchronizing signals. RGB signal formats are often based on modified versions of the RS-170 and RS-343 standards for monochrome video. This type of video signal is widely used in Europe since it is the best quality signal that can be carried on the standard SCART connector. Outside Europe, RGB is not very popular as a video signal format; S-Video takes that spot in most non-European regions. However, almost all computer monitors around the world use RGB.



Nonlinearity
Due to gamma correction, the intensity of the color output on computer display devices is normally not directly proportional to the R, G, and B values in image files. That is, even though a value of 0.5 is very close to halfway between 0 and 1.0 (full intensity), the light intensity of a computer display device when displaying (0.5, 0.5, 0.5) is normally (on a standard 2.2-gamma CRT/LCD) only about 22% of that when displaying (1.0, 1.0, 1.0), instead of at 50%.

Professional color calibration
Proper reproduction of colors in professional environments requires extensive color calibration of all the devices involved in the production process. This results in several transparent conversions between device-dependent color spaces during a typical production cycle in order to ensure color consistency throughout the process. Along with the creative processing, all such interventions on digital images inherently damage it by reducing its gamut. Therefore the denser the gamut of the original digitized image, the more processing it can support without visible degradation. Professional devices and software tools allow for 48 bpp (bits per pixel) images to be manipulated (16 bits per channel) in order to increase the density of the gamut.

Numeric representations
A color in the RGB color model can be described by indicating how much of each of the red, green, and blue is included. Each can vary between the minimum (fully dark) and maximum (full intensity). If all the colors are at minimum the result is black. If all the colors at maximum, the result is a white.

These colors may be quantified in several different ways:
 * Color scientists often place colors in the range 0 (minimum) through 1 (maximum). Many color formulae take these values. For instance, full intensity red using this convention is 1, 0, 0 for Red, Green, and Blue.
 * The color values may be written as percentages, from 0% (minimum) to 100% (maximum). To convert from the range 0 to 1, see percentage. Full intensity red, using this notation, is 100%, 0%, 0%.
 * The color values may be written as numbers in the range 0 to 255. This is commonly found in computer representations, where programmers have found it convenient to store each color value in one 8-bit byte. This convention has become so widespread that some writers now consider the range 0 to 255 an assumption and fail to give a context for their values.   Full intensity red, using this scheme, is 255, 0, 0.  This range of values is not proportional to the others, but rather a nonlinear gamma-encoded scale.
 * That same range, 0 through 255, is sometimes written in hexadecimal – full intensity red becomes,  ,  , which can be contracted to   (a convention used by HTML).

24-bit representation
RGB values encoded in 24 bits per pixel (bpp) are specified using three 8-bit unsigned integers (0 through 255) representing the intensities of red, green, and blue (usually in that order). For example, the following image shows the three "fully saturated" faces of an RGB cube, unfolded into a plane:

The above definition uses a convention known as full-range RGB. Color values are also often considered to be in the range 0.0 through 1.0, which may be mapped to other digital encodings.

Full-range RGB using eight bits per primary can represent up to 256 shades of white-grey-black, 255 shades of red, green, and blue (and equal mixtures of those), but fewer shades of other hues. The 256 levels do not represent equally spaced intensities, due to gamma correction.

Typically, RGB for digital video is not full range. Instead, video RGB uses a convention with scaling and offsets such that (16, 16, 16) is black, (235, 235, 235) is white, etc. For example, these scalings and offsets are used for the digital RGB definition in CCIR 601.

Memory space
The amount of memory space used by an uncompressed image is specified by the number of pixels in the image and the color depth to which each pixel is specified. In a 24-bit image, each pixel is specified by a 24-bit allocation of memory, so the amount of space required in bits is 24 × the number of pixels. To calculate the memory required in bytes, the resulting number should be divided by 8 (8 bits in a byte).

E.g. A 24-bit image 640 × 480 pixels in size

24 × 640 × 480 = 7,372,800 bits

7,372,800 / 8 = 921,600 bytes

16-bit mode
There is also a 16 bpp mode sometimes known as Highcolor, in which there are either 5 bits per color, called 555 mode, or an extra bit for green (because the green component contributes most to the brightness of a color in the human eye), called 565 mode. In general, an RGB representation needs 1 bit more for red than blue and 1 more bit for green.

32-bit mode
The so-called 32 bpp mode is almost always identical in precision to the 24 bpp mode; there are still only eight bits per component, and the eight extra bits are often not used at all. The reason for the existence of the 32 bpp mode is the higher speed at which most modern hardware can access data that is aligned to byte addresses evenly divisible by a power of two, compared to data not so aligned.

Some graphics hardware allows the unused byte to be used as an 8-bit paletted overlay. A certain palette entry (often 0 or 255) is designated as being transparent, i.e., where the overlay is this value the truecolor image is shown. Otherwise the overlay value is looked up in the palette and used. This allows for GUI elements (such as menus or the mouse cursor) or information to be overlayed over a truecolor image without modifying it. When the overlay needs to be removed, it is simply cleared to the transparent value and the truecolor image is displayed again. This feature was often found on graphics hardware for Unix workstations in the 90s and later on some PC graphics cards (most notably those by Matrox). However, PC graphics cards (and the systems they are used in) now have plentiful memory to use as a backing store and this feature has mostly disappeared.

48-bit mode (sometimes also called 16-bit mode)
"16-bit mode" can also refer to 16 bit per component, resulting in 48 bpp. This mode makes it possible to represent 65536 tones of each color component instead of 256. This is primarily used in professional image editing, like Adobe Photoshop for maintaining greater precision when a sequence of more than one image filtering algorithms is used on the image. With only 8 bit per component, rounding errors tend to accumulate with each filtering algorithm that is employed, distorting the end result.

RGBA
With the need for compositing images came a variant of RGB which includes an extra 8-bit channel for transparency, thus resulting in a 32 bpp format. The transparency channel is commonly known as the alpha channel, so the format is named RGBA. Note that since it does not change anything in the RGB model, RGBA is not a distinct color model, it is only a file format which integrates transparency information along with the color information in the same file. This allows for alpha blending of the image over another, and is a feature of the PNG format. (Note: RGBA is not the only method to have transparency in graphics. See Transparency (graphic) for alternatives.)

Digital cameras that use a CMOS or CCD image sensor often operate with the RGB system; the sensor can have a grid of red, green, and blue detectors arranged so that the first row is RGRGRGRG and the next is GBGBGBGB and so on. In a Bayer filter, green is given more detectors than red and blue in order to achieve higher luminance resolution than chrominance resolution. Demoasicing and matrixing processes are required to map the camera RGB measurements into a standard RGB color space.

Colors in web-page design
Colors used in web-page design are commonly specified using RGB; see web colors for an explanation of how colors are used in HTML and related languages. Initially, the limited color depth of most video hardware led to a limited color palette of 216 RGB colors, defined by the Netscape Color Cube. However, with the predominance of 24-bit  displays, the use of the full 16.7 million colors of the HTML RGB color code no longer poses problems for most viewers.

In short, the web-safe color palette consists of the 216 combinations of red, green and blue where each color can take one of six values (in hexadecimal): #00, #33, #66, #99, #CC or #FF (based on the 0 to 255 range for each value discussed above). Clearly, 6³ = 216. These hexadecimal values = 0, 51, 102, 153, 204, 255 in decimal, which = 0%, 20%, 40%, 60%, 80%, 100% in terms of intensity. This seems fine for splitting up 216 colors into a cube of dimension 6. However, lacking gamma correction, the perceived intensity on a standard 2.5 gamma CRT / LCD is only: 0%, 2%, 10%, 28%, 57%, 100%. See the actual web safe color palette for a visual confirmation that the majority of the colors produced are very dark, or see Xona.com Color List for a side by side comparison of proper colors next to their equivalent lacking proper gamma correction.

The RGB color model for HTML was formally adopted as an Internet standard in HTML 3.2, however it had been in use for some time before that.

History of RGB color model
The RGB color model is based on the Young–Helmholtz theory of trichromatic color vision, and on Maxwell's color triangle that elaborated that theory.

The use of the RGB color model as the standard for presentation of color on the Internet has its roots in the 1953 RCA color-TV standards and in Edwin Land's use of an RGB standard in the Land/Polaroid camera.