  Color correction for pnm2ppa
  The pnm2ppa project team ppa-rpms@users.sourceforge.net
  v0.6, October 28,  2000

  Information and instructions for color correction of pnm2ppa color
  printing.  http://sourceforge.net/projects/pnm2ppa (Updated for
  pnm2ppa-1.0 and later.)

   Overview of Color correction.

  Color Pixmap input to pnm2ppa (ppm format, produced by the ghostscript
  output devices ppmraw or ppm) specifies the color of a pixel  as three
  coordinates (Red, Green, Blue) in the range 0-255.   The program
  pnm2ppa converts these to relative amounts of Cyan, Magenta and Yellow
  ink drops printed on the page.

  Color correction allows the user to attempt to match the printed
  colors to some reference colors, such as those displayed on the
  terminal, or those printed on a different printer,  or those printed
  on the same printer  with a different driver (such as the Win9x
  drivers supplied by HP with their PPA printers).


  The color output from pnm2ppa can be controlled in two ways:

  o  by a color correction "gamma" file, if it is installed.  By
     default this file is /usr/pkg/etc/pnm2ppa.gamma, but it may also be
     specified with the pnm2ppa option
      pnm2ppa ... -F gammafile ... .

  o  if there is no gamma file,  by  three values specified by keywords
     ( either GammaR, GammaG, GammaB or RedGammaIdx, BlueGammaIdx,
     GreenGammaIdx) in the pnm2ppa configuration file.


  pnm2ppa will carry out  "color correction", unless it is called with
  the --noGamma command line option.  However, unless you set up a color
  correction scheme, the default color correction does not change any
  colors.


  Color correction is specified by three color intensity functions
  (curves), one for each of Red, Green, and Blue.    In their simplest
  form, these curves have a standard form controlled by a single "gamma"
  parameter such as GammaR.  The more sophisticated correction, in the
  file pnm2ppa.gamma, specifies these curves more generally as a table
  of numbers that translate each possible color intensity value to a new
  value.



  Note that, in principle, different color corrections are needed for
  different print quality settings, and for different brands and
  qualities of paper!

  At present the methods for constructing a  color correction for
  pnm2ppa are not very user-friendly.  If you can improve them, please
  help!.

  Color correction with "gamma" values in the configuration file.

  The PixMap (ppa) format specifies colors by an intensity for each
  primary color, Red, Green and Blue, in the range 0-255, so (0,0,0) is
  black, and (255,255,255) is white.  The standard color intensity
  enhancement function replaces the ppm intensity i of each  primary
  color by
   Enh(i)  which is the closest integer to  ( i / 256)  raised to the
  power Gamma, times 256.


  You can specify the Gamma values in the configuration file as decimal
  numbers GammaR, GammaG, GammaB, but how do you find out what values to
  choose?.   Perhaps by experimenting with changing the Gamma values.

  A source of information on Gamma color correction  is
  www.cgsd.com/papers/gamma.html


  One method for constructing a Gamma correction has been built into
  pnm2ppa, but it wastes quite a lot of ink, and many users find it less
  effective than producing a customized color correction curve as
  described in the next section.


  You must first use pnm2ppa to print a color test page, and then
  generate a file gamma.ppm to compare to it.  To do this, type


       pnm2ppa -g -i - -o /dev/lp0



  (replace /dev/lp0 by whatever printer device your PPA printer uses, or
  use  ... -o - | lpr -l , etc.).   Note also that as pnm2ppa is not
  receiving any ghostscript input to tell it the paper size, this must
  be correctly specified by a configuration file entry or, e.g., a   -s
  a4  option, if the default US Letter paper is not being used.   This
  procedure will print a color calibration page.

  The printed output is an array of sets of three colored bands, red,
  blue and green, each of which increases in brightness from left to
  right.   The topmost set of bands should be referrred to as bands "0",
  the next ones as "1", etc.

  Next, run the extra program calibrate_ppa which will produce a (large,
  10MB) PixMap (ppm) file:


       calibrate_ppa -g -o gamma.ppm



  This will produce the PixMap file as gamma.ppm in the current direc-
  tory.

  To color-correct the printer so that its colors match those on the
  terminal screen, you should now attempt to view the file gamma.ppm
  using some application (such as the GNU image manipulation program
  gimp, or xv) that can view .ppm files.    For each color, identify the
  printed band (0, 1, 2, ... etc) that most closely corresponds to the
  brightness profile shown on the screen.    The default values are now:


       RedGammaIdx 0
       GreenGammaIdx 0
       BlueGammaIdx 0



  (i.e., no color correction).  Enter your modified values for these in
  the pnm2ppa configuration file (usually /usr/pkg/etc/pnm2ppa.conf).

  The actual Gamma value is then  1.0 - 0.033*(Color)GammaIdx ;

  To color-correct with respect to another printer (or the Win9x
  drivers), you must manage to print gamma.ppm on that other device,
  then make the comparison.  (Or print the output of pnm2ppa -g on that
  device; the top line is  the same uncorrected color data as
  gamma.ppm.)

  Color correction using a "gamma file".

  A "gamma correction file" is a binary file containing 3 x 256 numbers,
  which are lookup tables of corrected  red green and blue color
  intensities.

  The program pnm2ppa will use a default correction file
  /usr/pkg/etc/pnm2ppa.gamma if it exists, unless the --noGamma  option is used.
  The default correction file location can be changed by using the
  pnm2ppa option  -F gammafile , where "gammafile" is the name
  (including the full path) of the gamma correction file to be used.


  Currently, there are two available tools for constructing a gamma
  correction file:

  o  A graphical utility ppagammacorrect is available in the PPA Color
     Correction Utilities section of the pnm2ppa web page
     http://sourceforge.net/projects/pnm2ppa, (but at the time of
     writing, this appears to be frozen in early stages of development,
     with little documentation, and may not be fully functional).

  o  A working procedure is given in
     http://download.sourceforge.net/pnm2ppa/color-calibrate-1.0.tar.gz,
     which is made available by Klamer Schutte.  This is the method
     recommended by many users.



