Gamma correction, gamma nonlinearity, gamma encoding, or often simply gamma, is the name of a nonlinear operation used to code and decode luminance or tristimulus values in video or still image systems. Gamma correction is, in the simplest cases, defined by the following power-law expression:
where the input and output values are non-negative real values, typically in a predetermined range such as 0 to 1. A gamma value is sometimes called an encoding gamma, and the process of encoding with this compressive power-law nonlinearity is called gamma compression; conversely a gamma value is called a decoding gamma and the application of the expansive power-law nonlinearity is called gamma expansion.
Gamma compression, also known as gamma encoding, is used to encode linear luminance or RGB values into video signals or digital video file values; gamma expansion is the inverse, or decoding, process, and occurs largely in the nonlinearity of the electron-gun current–voltage curve in cathode ray tube (CRT) monitor systems, which acts as a kind of spontaneous decoder. Gamma encoding helps to map data (both analog and digital) into a more perceptually uniform domain.
The following figure shows the behavior of a typical display when image signals are sent linearly ( = 1.0) and gamma-encoded (standard NTSC = 2.2). In the first case, the resulting image over the CRT is notably darker than the original, while it is shown with high fidelity in the second case. Digital cameras produce, and TV stations broadcast, signals in gamma-encoded form, anticipating the standardized gamma of the reproducing device, so that the overall system will be linear, as shown on the bottom; if cameras were linear, as on the top, the overall system would be nonlinear. Similarly, image files are almost always stored on computers and communicated across the Internet with gamma encoding.
A gamma value is used to quantify contrast, for example of photographic film. It is the slope of an input–output curve in log–log space, that is:
which is consistent with the power-law relation above, but applicable to more general nonlinearities. In the case of film, such nonlinearities are called Hurter–Driffield curves.
Gamma values less than 1 are typical of negative film, and values greater than 1 are typical of slide (reversal) film.
In most computer systems, images are encoded with a gamma of about 0.45 and decoded with a gamma of 2.2; in Macintosh systems, the corresponding typical values are 0.55 and 1.8. In any case, binary data in still image files (as JPEG) are explicitly encoded (that is, they carry gamma-encoded values, not linear intensities), as are motion picture files (such as MPEG). The system can optionally further manage both cases, through color management, if a better match to the output device gamma is required.
The sRGB color space standard used with most cameras, PCs, and printers does not use a simple power-law nonlinearity as above, but has a decoding gamma value near 2.2 over much of its range, as shown in the plot to the right. Below a compressed value of 0.04045 or a linear intensity of 0.00313, the curve is linear (encoded value proportional to intensity), so the gamma is 1. The dashed black curve behind the red curve is a standard gamma = 2.2 power-law curve, for comparison.
Output to CRT-based television receivers and monitors does not usually require further gamma correction, since the standard video signals that are transmitted or stored in image files incorporate gamma compression that matches close enough the gamma expansion of the CRT. For television signals, the actual gamma values are defined by the video standards (NTSC, PAL or SECAM), and are always fixed and well known values.
With this nonlinear relationship, equal steps in encoded luminance correspond roughly to subjectively equal steps in brightness. Ebner and Fairchild used an exponent of 0.43 to convert linear intensity into lightness for neutrals; the reciprocal, approximately 2.33 (quite close to the 2.2 figure cited for a typical display susbsytem), would provide optimal perceptual encoding of grays. The following illustration shows the difference between a scale with linearly-increasing encoded luminance signal (linear input) and a scale with linearly-increasing intensity (i.e., gamma-corrected) scale (linear output).
|Linear encoding||VS =||0.0||0.1||0.2||0.3||0.4||0.5||0.6||0.7||0.8||0.9||1.0|
|Linear intensity||I =||0.0||0.1||0.2||0.3||0.4||0.5||0.6||0.7||0.8||0.9||1.0|
On most displays (those with gamma of about 2.2), one can observe that the linear-intensity scale has a large jump in perceived brightness between the intensity values 0.0 and 0.1, while the steps at the higher end of the scale are hardly perceptible. The linearly-encoded scale, which has a nonlinearly-increasing intensity, will show much more even steps in perceived brightness.
A cathode ray tube (CRT), for example, converts a video signal to light in a nonlinear way, because the phosphorescent screen it contains is a nonlinear device. The light intensity I is related to the source voltage VS according to
For simplicity, consider the example of a monochrome CRT. In this case, when a video signal of 0.5 (representing mid-gray) is fed to the display, the intensity or brightness is about 0.22 (resulting in a dark gray). Pure black (0.0) and pure white (1.0) are the only shades that are unaffected by gamma.
To compensate for this effect, the inverse transfer function (gamma correction) is sometimes applied to the video signal so that the end-to-end response is linear. In other words, the transmitted signal is deliberately distorted so that, after it has been distorted again by the display device, the viewer sees the correct brightness. The inverse of the function above is:
where VC is the corrected voltage and VS is the source voltage, for example from an image sensor that converts photocharge linearly to a voltage. In our CRT example 1/ is 1/2.2 or 0.45.
A color CRT receives three video signals (red, green and blue) and in general each color has its own value of gamma, denoted R, G or B. However, in simple display systems, a single value of is used for all three colors.
Other display devices have different values of gamma: for example, a Game Boy Advance display has a gamma between 3 and 4 depending on lighting conditions. In LCDs such as those on laptop computers, the relation between the signal voltage VS and the intensity I is very nonlinear and cannot be described with gamma value. However, such displays apply a correction onto the signal voltage in order to approximately get a standard =2.5 behavior. In NTSC television recording, is 2.2.
The power-law function, or its inverse, has a slope of infinity at zero. This leads to problems in converting from and to a gamma colorspace. For this reason most formally defined colorspaces such as sRGB will define a straight-line segment near zero and add raising x+K (where K is a constant) to a power so the curve has continuous slope. This straight line does not represent what the CRT does, but does make the rest of the curve more closely match the effect of ambient light on the CRT. In such expressions the exponent is not the gamma; for instance, the sRGB function uses a power of 2.4 in it, but more closely resembles a power-law function with an exponent of 2.2, without a linear portion.
Up to four elements can be manipulated in order to achieve gamma encoding to correct the image to be shown on a typical 2.2- or 1.8-gamma computer display:
In a correct calibrated system, ideally only one of the elements, the one the first creates image data, should have the gamma encoder role, in order to avoid successively cascaded gamma encodings. Subsequent stages may change the gamma to correct for different requirements, and finally the output device will do gamma decoding back to a linear intensity domain. All the encoding and correction methods can be arbitrarily superimposed, without mutual knowledge of this fact among the different elements, which if done incorrectly can lead to highly distorted results but if done correctly as dictated by standards and conventions will lead to a properly functioning system.
In a typical system, for example from camera through JPEG file to display, the role of gamma correction will involve several cooperating parts. The camera encodes its rendered image into the JPEG file using one of the standard gamma values such as 2.2, for storage and transmission. The display computer may use a color management engine to convert to a different color space (such as a Macintosh's gamma=1.8 color space) before putting pixel values into its video memory. The monitor may do its own gamma correction to match the CRT gamma to that used by the video system. Coordinating the components via standard interfaces with default standard gamma values makes it possible to get such system properly configured.
To see whether your computer monitor is properly hardware adjusted and can display shadow detail in sRGB images properly, you should see the left half of the circle in the large black square very faintly (or not at all), but the right half should be clearly visible. If not, you can adjust your monitor's contrast and/or brightness setting. This alters the monitor's perceived gamma.
This procedure is not suitable for calibrating or print-proofing a monitor. It can be useful for making your monitor display sRGB images approximately correctly, on systems in which profiles are not used (for example, the Firefox browser prior to version 3.0 and many others) or in systems that assume untagged source images are in the sRGB colorspace.
On some operating systems running the X Window System you can change gamma-correction settings, by issuing the command
xgamma -gamma 2.1 for setting gamma value to 2.1, and
xgamma for querying current value. In Macintosh systems, the gamma and other related screen calibrations are made through their OS control panel. Microsoft Windows systems lack (up to the XP version, inclusive) a true native calibration tool. Third-party tools, as those provided with Nvidia graphic cards' drivers or the Adobe gamma loader tool for Adobe products play the same role under Microsoft Windows.
In the test pattern to the right, the linear intensity of each solid bar is the average of the linear intensities in the surrounding striped dither; therefore, ideally, the solid squares and the dithers should appear equally bright in a properly adjusted sRGB system.
The same term (gamma) has long been used in photography to describe an analogous nonlinearity. In photography, gamma refers to the slope of the straight-line region of the sensitometric curve (Hurter–Driffield curve), which is a plot of density (or the negative of the base 10 logarithm of transmittance) of the film image versus the logarithm of the film's exposure to light.
Ansel Adams describes the gamma concept, but then dismisses it as "a term of interest and significance only to the research scientist and the manufacturer", and elaborates:
'7 minutes at 68°F in Ansco 47 for Isopan' represents 'normal' to me. I have no idea what the actual effective gamma is, nor do I care. I could consider this degree of development as yielding Gamma = 1.0 or being Development No. 9 or Operation H, or any other symbol I choose. But why should I inject an unnecessary and confusing symbol for a perfectly simple statement of procedure? 'Isopan/Ansco 47/68°F/7minutes' is definite and easily expressed and understood as the means of obtaining my 'normal' negative.
Photographic film has a much greater ability to record fine differences in shade than can be reproduced on photographic paper. Similarly, a video screen is not as capable of displaying the range of brightness (dynamic range) which can be captured by electronic cameras. For this reason, considerable artistic effort is invested in choosing in which reduced form the original image should be presented. The gamma correction, or contrast selection, is part of the photographic repertoire used to adjust the reproduced image.
The term intensity refers strictly to the amount of light that is emitted per unit of time and per unit of surface, in units of lux. Note, however, that in many fields of science this quantity is called luminous emittance, as opposed to luminous intensity, which is a different quantity. These distinctions, however, are largely irrelevant to gamma compression, which is applicable to any sort of normalized linear intensity-like scale.
Luminance can mean several things even within the context of video and imaging:
Likewise, brightness is sometimes applied to various measures, including light levels, though it more properly applies to a subjective visual attribute.
Gamma correction is a type of power law function whose exponent is the Greek letter gamma (γ). It should not be confused with the mathematical Gamma function. The lower case gamma, γ, is a parameter of the former; the upper case letter, Γ, is the name of (and symbol used for) the latter (as in ""). To use the word "function" in conjunction with gamma correction, one may avoid confusion by saying "generalized power law function."
In lack of context, a given gamma value can be either the encoding or the decoding value. Caution must be taken to correctly interpreting the value as that to be applied-to-compensate or to be compensated-by-applying its inverse. In common parlance, in many occasions the decoding value (as 2.2) is employed as if it were the encoding value, instead of its inverse (1/2.2 in this case) which is the real value that must be applied to encode gamma.