Frequently-questioned answers about gamma -
GammaFQA



In video, computer graphics and image processing, gamma represents a numerical parameter that describes the nonlinearity of intensity reproduction. Having a good understanding of the theory and practice of gamma will enable you to get good results when you create, process and display pictures.

I am the proprietor of the document Frequently asked questions about gamma, the GammaFAQ. But there are so many misconceptions concerning gamma that I thought it would also be informative to post, in addition, the frequently-questioned answers about gamma, the GammaFQA. In the left column of the table below is the so-called answer. In the right column are the facts that bring the "answer" into question.

Fallacy

Fact
A CRT's phosphor has a nonlinear response to beam current.
The electron gun of a CRT is responsible for its nonlinearity, not the phosphor.
The nonlinearity of a CRT monitor is a defect that needs to be corrected.
The nonlinearity of a CRT is very nearly the inverse of the lightness sensitivity of human vision. The nonlinearity causes a CRT's response to be roughly perceptually uniform. Far from being a defect, this feature is highly desirable.
The main purpose of gamma correction is to compensate the nonlinearity of the CRT.
The main purpose of gamma correction in video, desktop graphics, prepress, JPEG, and MPEG is to code intensity into a perceptually-uniform domain, so as to obtain the best perceptual performance from a limited number of bits in each of the R, G, and B (or C, M, Y, and K) components.
Ideally, linear-light intensity representations should be used to represent image data.
If linear-light intensity is used to represent image data, then from 12 to 14 bits are necessary in each component to achieve high-quality image reproduction. With nonlinear (gamma-corrected) coding, just 8 bits are sufficient.
A CRT is characterized by a power function that relates luminance to voltage: L = V [gamma] .
A CRT is characterized by a power function, but including a black-level offset term: L = (V + epsilon ) gamma.
The exponent gamma varies anywhere from about 1.4 to 3.5.
The exponent itself varies over a rather narrow range, about 2.35 to 2.55. The alleged wide variation comes from variation in offset term of the equation, not the exponent: Wide variation is due to failure to correctly set the black level.
Gamma correction is accomplished by inverting this equation.
Gamma correction is roughly the inverse of this equation, but two corrections must be introduced to achieve good performance. First, a linear segment is introduced into the transfer function, to minimize the introduction of noise in very dark areas of the image. Second, the exponent at the encoder is made somewhat greater than the mathematical value, in order to impose a rendering intent that compensates for subjective effects at image display.
CRT variation is responsible for wide variability in tone scale reproduction when images are exchanged among computers.
Poor performance in image exchange is generally due to lack of control over transfer functions that are applied when image data is acquired, processed, stored, and displayed.
Macintosh monitors have nonstandard values of gamma.
All CRT monitors, including those used with Macintosh computers, produce essentially identical response to voltage. But the Macintosh QuickDraw graphics subsystem involves a lookup table that is loaded by default with an unusual transfer function. It is not the monitor but the lookup table that imposes the nonstandard Macintosh gamma characteristic.
Gamma problems can be circumvented by loading a lookup table having a suitable gamma value.
Loading a particular lookup table, or a particular value of gamma, alters the intensity interpretation of data in the frame buffer. This may have the intended effect on a particular image. However, loading a new lookup table will disturb the code-to-intensity mapping that is assumed by the graphics subsystem, other windows, or other images. This is liable to alter color values that are supposed to stay fixed.
Macintosh computers are shipped from the factory with gamma set to 1.8. SGI machines default to gamma of 1.7. To make an SGI machine display pictures like a Mac, set SGI gamma to 1.8.
On the Macintosh, setting a numerical gamma setting of g loads into the framebuffer's lookup table a power function with the exponent g/2.6. On an SGI, setting a numerical gamma setting of g loads into the lookup table a power function with the exponent 1/g. To make an SGI machine behave like a Mac, you must set SGI gamma to 1.45.
Gamma problems can be avoided when exchanging images by tagging every image file with a suitable gamma value.
Various tag schemes have been standardized; some tags are coded into image files. However, application software today generally pays no attention to the tags, so tagging image files is not helpful today. It is obviously a good idea to avoid subjecting an image file to cascaded transfer functions during processing. However, the tag approach fails to recognize that image data should be originated and maintained in a perceptually-based code.
JPEG compresses RGB data, and reproduces RGB data upon decompression. The JPEG algorithm itself is completely independent of whatever transfer function is used.
JPEG and other lossy image compression algorithms depend on discarding information that won't be perceived. It is vital that the data presented to a JPEG compressor be coded in a perceptually-uniform manner, so that the information discarded has minimal perceptual impact. Also, although standardized as an image compression algorithm, JPEG is so popular that it is now effectively an image interchange standard. Standardization of the transfer function is necessary in order for JPEG to meet its users' expectations.

Charles - Color technology
1998-01-15