SYNOPSIS
pnmgamma [-ungamma] [-cieramp|-srgbramp] [value [pnmfile]]pnmgamma [-ungamma] [-cieramp|-srgbramp] redgamma greengamma bluegamma [pnmfile]
DESCRIPTION
Performs gamma correction on pseudo-PNM images.PARAMETERS
The only parameters are the specification of the input image file and the gamma values. Every gamma transfer function pnmgamma uses contains an exponent, which is the gamma value, and you can choose that value.
Furthermore, you can choose different values for each of the three RGB components. If you specify only one gamma value, pnmgamma uses that value for all three RGB components.
If you don't specify any gamma parameters, pnmgamma chooses a default. For the transfer functions defined by standards, the default is the value defined by the standard. If you specify anything else, you will be varying from the standard. For the simple power function transfer function, the default gamma is 1/.45.
OPTIONS
- -ungamma
- Apply the inverse of the specified transfer function (i.e. go from gamma-corrected nonlinear intensities to linear intensities).
- -cieramp
-
Use the CIE Rec. 709 gamma transfer function. Note that it is true
CIE Rec. 709 only if you use the default gamma value (i.e. don't
specify any gamma parameters). This transfer function is a power
function modified with a linear ramp near black.
If you specify neither -cieramp nor -srgbramp, the transfer function defaults to a simple power function.
- -srgbramp
-
Use the Internation Electrotechnical Commission (IEC) SRGB gamma
transfer function (as specified in the standard IEC 61966-2-1). Note
that it is true SRGB only if you use the default gamma value
(i.e. don't specify any gamma parameters). This transfer function is
like the one selected by
-cieramp,
but with different constants in it.
Note that SRGB is often spelled "sRGB". In this document, we use standard English typography, though, which doesn't allow for that kind of capitalization.
If you specify neither -cieramp nor -srgbramp, the transfer function defaults to a simple power function.
WHAT IS GAMMA?
A good explanation of gamma is in Charles Poynton's GammaFAQ at <http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html> and ColorFAQ at <http://www.poynton.com/notes/colour_and_gamma/GammaFAQ.html>
In brief: The simplest way to code an image is by using sample values that are directly proportional to the intensity of the color components. But that wastes the sample space because the human eye can't discern differences between low-intensity colors as well as it can between high-intensity colors. So instead, we pass the light intensity values through a transfer function that makes it so that changing a sample value by 1 causes the same level of perceived color change anywhere in the sample range. We store those resulting values in the image file. That transfer function is called the gamma transfer function and the transformation is called gamma correcting.
Virtually all image formats, either specified or de facto, use gamma-corrected values for their sample values.
What's really nice about gamma is that by coincidence, the inverse function that you have to do to convert the gamma-corrected values back to real light intensities is done automatically by CRTs. You just apply a voltage to the CRT's electron gun that is proportional to the gamma-corrected sample value, and the intensity of light that comes out of the screen is close to the intensity value you had before you applied the gamma transfer function!
And when you consider that computer video devices usually want you to store in video memory a value proportional to the signal voltage you want to go to the monitor, which the monitor turns into a proportional drive voltage on the electron gun, it is really convenient to work with gamma-corrected sample values.
