pnmgamma
Updated: 11 June 2001
Table Of Contents
NAME
pnmgamma - perform gamma correction on a PNM image
SYNOPSIS
pnmgamma [-ungamma] [-cieramp|-srgbramp] [value [pnmfile]]
pnmgamma [-ungamma] [-cieramp|-srgbramp] redgamma greengamma
bluegamma
[pnmfile]
DESCRIPTION
This program is part of Netpbm.
Pnmgamma performs gamma correction on pseudo-PNM images.
The PPM format specification specifies that certain sample
values in a file
represent certain light intensities in an image. In particu-
lar, 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 intensities and the sample
values are
something else. For example, the sample value might be direct-
ly 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 proportional to the light intensities in the im-
age. 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 ex-
pects 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 cor-
rection 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 what-
ever 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 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 inten-
sities).
-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 con-
stants in it.
Note that SRGB is often spelled "sRGB". In this docu-
ment, we use
standard English typography, though, which doesn't al-
low 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 Gam-
ma FAQ at
http://www.poynton.com/GammaFAQ.html and Color
FAQ at
http://www.poynton.com/ColorFAQ.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 compo-
nents. 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 in-
verse 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.
SEE ALSO
pnm
AUTHOR
Copyright (C) 1991 by Bill Davidson and Jef Poskanzer.
_________________________________________________________________
Table Of Contents
* NAME
* SYNOPSIS
* DESCRIPTION
* PARAMETERS
* OPTIONS
* WHAT IS GAMMA?
* SEE ALSO
* AUTHOR
UNIX/Linux commands referenced on this page:
- as
- file
- which
- true
- display
- less
- nice
- convert