man-pages/man1/pnmgamma.1.html
2021-03-31 01:06:50 +01:00

242 lines
7.3 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML><HEAD><TITLE>Man page of pnmgamma</TITLE>
</HEAD><BODY>
<H1>pnmgamma</H1>
Section: User Commands (1)<BR>Updated: 11 June 2001<BR><A HREF="#index">Index</A>
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
<A NAME="ixAAB"></A>
<A NAME="lbAB">&nbsp;</A>
<H2>NAME</H2>
pnmgamma - perform gamma correction on a portable anymap
<P>
<A NAME="lbAC">&nbsp;</A>
<H2>SYNOPSIS</H2>
<B>pnmgamma </B>
[<B>-ungamma</B>]
[<B>-cieramp</B>|<B>-srgbramp</B>]
[<I>value</I>
[<I>pnmfile</I>]]
<BR>
<B>pnmgamma</B>
[<B>-ungamma</B>]
[<B>-cieramp</B>|<B>-srgbramp</B>]
<I>redgamma greengamma bluegamma</I>
[<I>pnmfile</I>]
<P>
<A NAME="lbAD">&nbsp;</A>
<H2>DESCRIPTION</H2>
Performs gamma correction on pseudo-PNM images.
<A NAME="ixAAC"></A>
<P>
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.
<P>
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
directly proportional to the intensity with no gamma correction (often
called &quot;linear intensity&quot;). Or a different gamma transfer function
may be used.
<P>
<B>pnmgamma</B>
allows you to manipulate the transfer function, thus working with
and/or creating pseudo-PPM files that are useful for various things.
<P>
For example, if you feed a true PPM to
<B>pnmgamma -cieramp -ungamma</B>,
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
image. If you feed such a file to
<B>pnmgamma -cieramp</B>,
you get out a true PPM.
<P>
The situation for PGM images is analogous. And
<B>pnmgamma</B>
treats PBM images as PGM images.
<P>
When you feed a linear PPM image to a display program that expects a
true PPM, the display appears darker than it should, so
<B>pnmgamma</B>
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
<B>pnmgamma</B>
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.
<P>
<A NAME="lbAE">&nbsp;</A>
<H2>PARAMETERS</H2>
<P>
The only parameters are the specification of the input image file and
the gamma values. Every gamma transfer function
<B>pnmgamma</B>
uses contains an exponent, which is the gamma value, and you can choose
that value.
<P>
Furthermore, you can choose different values for each of the three RGB
components. If you specify only one gamma value,
<B>pnmgamma</B>
uses that value for all three RGB components.
<P>
If you don't specify any gamma parameters,
<B>pnmgamma</B>
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.
<P>
<A NAME="lbAF">&nbsp;</A>
<H2>OPTIONS</H2>
<DL COMPACT>
<DT id="1"><B>-ungamma</B>
<DD>
Apply the inverse of the specified transfer function (i.e. go from
gamma-corrected nonlinear intensities to linear intensities).
<P>
<DT id="2"><B>-cieramp</B>
<DD>
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.
<P>
If you specify neither
<B>-cieramp</B>
nor
<B>-srgbramp</B>,
the transfer function defaults to a simple power function.
<DT id="3"><B>-srgbramp </B>
<DD>
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
<B>-cieramp</B>,
but with different constants in it.
<P>
Note that SRGB is often spelled &quot;sRGB&quot;. In this document, we use
standard English typography, though, which doesn't allow for that kind of
capitalization.
<P>
If you specify neither
<B>-cieramp</B>
nor
<B>-srgbramp</B>,
the transfer function defaults to a simple power function.
<P>
</DL>
<A NAME="lbAG">&nbsp;</A>
<H2>WHAT IS GAMMA?</H2>
<P>
A good explanation of gamma is in Charles Poynton's
GammaFAQ at &lt;<A HREF="http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html">http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html</A>&gt;
and ColorFAQ at &lt;<A HREF="http://www.poynton.com/notes/colour_and_gamma/GammaFAQ.html">http://www.poynton.com/notes/colour_and_gamma/GammaFAQ.html</A>&gt;
<P>
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.
<P>
Virtually all image formats, either specified or de facto, use
gamma-corrected values for their sample values.
<P>
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!
<P>
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.
<P>
<P>
<A NAME="lbAH">&nbsp;</A>
<H2>SEE ALSO</H2>
<B><A HREF="/cgi-bin/man/man2html?5+pnm">pnm</A></B>(5)
<P>
<A NAME="lbAI">&nbsp;</A>
<H2>AUTHOR</H2>
Copyright (C) 1991 by Bill Davidson and Jef Poskanzer.
<P>
<HR>
<A NAME="index">&nbsp;</A><H2>Index</H2>
<DL>
<DT id="4"><A HREF="#lbAB">NAME</A><DD>
<DT id="5"><A HREF="#lbAC">SYNOPSIS</A><DD>
<DT id="6"><A HREF="#lbAD">DESCRIPTION</A><DD>
<DT id="7"><A HREF="#lbAE">PARAMETERS</A><DD>
<DT id="8"><A HREF="#lbAF">OPTIONS</A><DD>
<DT id="9"><A HREF="#lbAG">WHAT IS GAMMA?</A><DD>
<DT id="10"><A HREF="#lbAH">SEE ALSO</A><DD>
<DT id="11"><A HREF="#lbAI">AUTHOR</A><DD>
</DL>
<HR>
This document was created by
<A HREF="/cgi-bin/man/man2html">man2html</A>,
using the manual pages.<BR>
Time: 00:05:24 GMT, March 31, 2021
</BODY>
</HTML>