fbgamma — load a gamma correcting colormap
fbgamma loads a gamma correcting colormap into a framebuffer. If a single value is given, that number is used for all three color channels. If three values are specified, they will be applied to the red, green, and blue channels respectively.
Gamma values larger than one will boost dim pixels with respect to bright ones. Values less than one will exaggerate the difference in brightness. The former has the effect of desaturating the displayed colors ("washing them out"), the latter will saturate the colors. An uncorrected monitor is usually too saturated.
Note that since this program is intended for gamma correction, the exponent to which pixel values are raised is the inverse of the given value. To linearize a display then, the given value will be equal to the gamma of the display (typically 2.0-3.0, see below). If you wish to directly apply an exponent to a picture (rather than its inverse), this can be done by giving a negative value (which means reciprocal in the usual mathematical sense).
By default, this program will "correct to linear", that is to say,
it will apply correction to a standard linear ramp. If you
wish to "correct" some other colormap, e.g. an inverse video
overlay option can be used. This will read whatever colormap
is currently in the framebuffer and operate on it. One useful
result of this is the ability saturate or desaturate an arbitrary
By default, the display is assumed to be 512x512 pixels;
flag is specified, the size is changed to 1024x1024.
This size distinction is important for devices like the Adage
framebuffers which have different operating modes based on the
manipulates the RGB color maps in the graphics hardware, and
has an effect on the entire screen, not just the portion containing
the current framebuffer display.
As such, there is no need to match the display size on the
A framebuffer may be explicitly selected with the
option, followed by the name of the desired framebuffer.
option requests that a standard gamma calibration image be displayed on the
This image consists of intensity ramps with
patches of solid color, and vertically adjacent patches containing
alternating black and colored scanlines.
When using gamma to compensate for non-linearity of a display, the gamma
values should be adjusted until vertically adjacent ramps of the same color
appear equal in intensity for all patches.
The response of a typical monitor is non-linear with respect to input voltage. To a fairly high degree of accuracy, the response can be expressed as:
display_intensity = input_voltage ^ gamma,
where gamma will usually lie in the 2.0 to 3.0 range (2.2 is the NTSC standard gamma, 2.5 is a commonly used "typical" value). Most of the time, pixel values of images have been computed assuming a linear mapping between pixel value and displayed intensity. This linear mapping can be approximated by loading a colormap into the display which raises the pixel values to the inverse gamma power.
It should be noted that getting the gamma values "right" involves careful calibration and measurement or your display device. The values are likely to be different for each color channel, and will depend on the brightness setting, etc. (increasing the monitor brightness often lowers the gammas, due to overdriving the high end of the display). Also note that getting the correct colors from a display requires knowledge of the phosphor chromaticities.
If possible one should gamma correct a picture before loading it into a display or saving it as eight bit linear data. This is because the response of the human visual system to brightness is also exponential in nature, and thus having "smaller steps" at the dark end of the display, and larger ones near full bright (as an uncorrected display will have), fits this response well. Gamma correction via the colormap cannot exploit this.
A gamma value greater than unity will saturate colors by pushing them away from the white point and closer to the primaries (as viewed on a chromaticity diagram). A gamma less than unity will desaturate colors by moving them closer to the white point.
This software is Copyright (c) 1987-2016 by the United States Government as represented by U.S. Army Research Laboratory.