pnmgamma(1)pnmgamma(1)NAMEpnmgamma - perform gamma correction on a PNM image
SYNOPSISpnmgamma [-ungamma] [-cieramp|-srgbramp] [value [pnmfile]]
pnmgamma [-ungamma] [-cieramp|-srgbramp] redgamma
greengamma bluegamma [pnmfile]
DESCRIPTION
Performs gamma correction on pseudo-PNM images.
The PPM format specification specify that certain sample
values in a file represent certain light intensities in an
image. In particular, they specify that the sample values
are directly proportional to gamma-corrected intensity
values. The gamma correction they specify is CIE Rec.
709.
However, people sometimes work with approximations of PPM
and PGM where the relationship between the image intensi
ties and the sample values are something else. For exam
ple, the sample value might be directly proportional to
the intensity with no gamma correction (often called "lin
ear intensity"). Or a different gamma transfer function
may be used.
pnmgamma allows you to manipulate the transfer function,
thus working with and/or creating pseudo-PPM files that
are useful for various things.
For example, if you feed a true PPM to pnmgamma-cieramp
-ungamma, you get as output a file which is PPM in every
respect except that the sample values are directly propor
tional to the light intensities in the image. If you feed
such a file to pnmgamma-cieramp, you get out a true PPM.
The situation for PGM images is analogous. And pnmgamma
treats PBM images as PGM images.
When you feed a linear PPM image to a display program that
expects a true PPM, the display appears darker than it
should, so pnmgamma has the effect of lightening the
image. When you feed a true PPM to a display program that
expects linear sample values, and therefore does a gamma
correction of its own on them, the display appears lighter
than it should, so pnmgamma with a gamma value less than
one (the multiplicative inverse of whatever gamma value
the display program uses) has the effect of darkening the
image.
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 stan
dard. 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 func
tion (i.e. go from gamma-corrected nonlinear inten
sities 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 func
tion.
-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 capi
talization.
If you specify neither -cieramp nor -srgbramp, the
transfer function defaults to a simple power func
tion.
WHAT IS GAMMA?
A good explanation of gamma is in Charles Poynton's Gam
maFAQ at <http://www.inforamp.net/~poynton/ColorFAQ.html>
and ColorFAQ at <http://www.inforamp.net/~poynton/Gam
maFAQ.html>
In brief: The simplest way to code an image is by using
sample values that are directly proportional to the inten
sity 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-cor
rected 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.
SEE ALSOpnm(5)AUTHOR
Copyright (C) 1991 by Bill Davidson and Jef Poskanzer.
11 June 2001 pnmgamma(1)