dwww Home | Manual pages | Find package

Pamditherbw User Manual(1)  General Commands Manual  Pamditherbw User Manual(1)

NAME
       pamditherbw - dither grayscale image to black and white

SYNOPSIS
       pamditherbw

       [-floyd  |  -fs  |  -atkinson | -threshold | -hilbert | -dither8 | -d8 |
       -cluster3 | -c3 | -cluster4 | -c4 | -cluster8 | -c8]

       [-value val]

       [-clump size]

       [-randomseed=integer]

       [pamfile]

       All options can be abbreviated to their shortest unique prefix.

DESCRIPTION
       This program is part of Netpbm(1).

       pamditherbw dithers a grayscale image.   Dithering  means  turning  each
       shade of gray into a pattern of black and white pixels that, from a dis-
       tance, look the same as the gray.

       The  input should be a PGM image or a PAM image of tuple type GRAYSCALE.
       However, pamditherbw doesn't check, so if you feed it e.g. a PPM  image,
       it  will  produce  arbitrary  results (actually, it just takes the first
       channel of whatever you give it and treats it as if it represented  gray
       levels).

       The  output  is  a PAM with tuple type BLACKANDWHITE.  You can turn this
       into a PBM (if you need to use it with an older program that doesn't un-
       derstand PAM) with pamtopnm.

       To do the opposite of dithering, you can usually just  scale  the  image
       down  and  then back up again with pamscale, possibly smoothing or blur-
       ring the result with pnmsmooth or pnmconvol.  Or use  the  special  case
       program pbmtopgm.

       To  dither a color image (to reduce the number of pixel colors), use pp-
       mdither.

       Another way to convert a grayscale image to a black and white  image  is
       thresholding.   Thresholding  is  simply  replacing each grayscale pixel
       with a black or white pixel depending on whether its brightness is above
       or below a threshold.  That threshold might vary.   Simple  thresholding
       is  a  degenerate  case  of  dithering,  so pamditherbw does very simple
       thresholding with its -threshold option.  But pamthreshold does more so-
       phisticated thresholding.

       If all you want is to change a PGM image with maxval 1 to a  PBM  image,
       pamtopnm will do that.

OPTIONS
       In  addition  to  the  options common to all programs based on libnetpbm
       (most notably -quiet, see ]8;;index.html#commonoptions\ Common Options]8;;\ ), pamditherbw recognizes  the
       following command line options:

   Quantization Method
       The default quantization method is boustrophedonic Floyd-Steinberg error
       diffusion (-floyd or -fs).

       Also  available  are  simple  thresholding (-threshold); Bayer's ordered
       dither (-dither8) with a 16x16 matrix; ]8;;http://www.tinrocket.com/projects/programming/graphics/00158/\ Atkinson]8;;\ ; and  three  different
       sizes  of  45-degree  clustered-dot dither (-cluster3, -cluster4, -clus-
       ter8).

       A space filling curve halftoning method using the Hilbert curve is  also
       available (-hilbert).

       Floyd-Steinberg or Atkinson will almost always give the best looking re-
       sults; however, looking good is not always what you want.  For instance,
       you  can  use  thresholding  in a pipeline with the pnmconvol, for tasks
       such as edge and peak detection.  And clustered-dot  dithering  gives  a
       newspaper-ish look, a useful special effect.

       Floyd-Steinberg  is by far the more traditional, but ]8;;http://www.tinrocket.com/projects/programming/graphics/00158/\ some claim]8;;\  Atkin-
       son works better.

       The Hilbert curve method is useful for processing images before  display
       on  devices  that do not render individual pixels distinctly (like laser
       printers).  This dithering method  can  give  better  results  than  the
       dithering usually done by the laser printers themselves.  The -clump op-
       tion alters the number of pixels in a clump.  Typically a PGM image will
       have to be scaled to fit on a laser printer page (2400 x 3000 pixels for
       an  A4 300 dpi page), and then dithered to a PBM image before being con-
       verted to a postscript file.  A printing pipeline might  look  something
       like:

           pamscale -xysize 2400 3000 image.pgm | pamditherbw -hilbert |  \
             pamtopnm | pnmtops -scale 0.25 > image.ps

   Other Options
       -value This  option  alters  the thresholding value for Floyd-Steinberg,
              Atkinson, and simple thresholding.  It should be  a  real  number
              between  0 and 1.  Above 0.5 means darker images; below 0.5 means
              lighter.

       -clump This option alters the number of  pixels  in  a  clump  when  the
              Hilbert curve method is used.  This is usually an integer between
              2  and 100 (default 5).  Smaller clump sizes smear the image less
              and are less grainy, but seem to lose some grey scale linearity.

       -randomseed=integer
              The Floyd-Steiberg and Atkinson methods  use  random  numbers  to
              diffuse the error.  This is the seed for the random number gener-
              ator.   The other methods do not employ random numbers and ignore
              this option.

              Use this to ensure you get the same  image  on  separate  invoca-
              tions.

              By  default, pamditherbw uses a seed derived from the time of day
              and process ID, which gives you fairly  uncorrelated  results  in
              multiple invocations.

              This option was new in Netpbm 10.45 (December 2008).

REFERENCES
       The  only  reference  you need for this stuff is "Digital Halftoning" by
       Robert Ulichney, MIT Press, ISBN 0-262-21009-6.

       The Hilbert curve space filling method is taken from "Digital Halftoning
       with Space Filling Curves" by Luiz Velho, Computer Graphics  Volume  25,
       Number 4, proceedings of SIGRAPH '91, page 81. ISBN 0-89791-436-8

SEE ALSO
       pamtopnm(1),  pgmtopgm(1),  pbmtopgm(1),  pamthreshold(1), pbmreduce(1),
       pnmconvol(1), pamscale(1), pam(1), pnm(1),

HISTORY
       pamditherbw was new in Netpbm 10.23 (July 2004), but is essentially  the
       same  program  as pgmtopbm that has existed practically since the begin-
       ning.  pamditherbw differs from its predecessor in that it properly adds
       brightnesses (using gamma transformations; pgmtopbm just adds them  lin-
       early) and that it accepts PAM input in addition to PGM and PBM and pro-
       duces PAM output.

       pamditherbw obsoletes pgmtopbm.

       -atkinson was new in Netpbm 10.38 (March 2007).

AUTHOR
       Copyright (C) 1989 by Jef Poskanzer.

DOCUMENT SOURCE
       This  manual  page  was generated by the Netpbm tool 'makeman' from HTML
       source.  The master documentation is at

              http://netpbm.sourceforge.net/doc/pamditherbw.html

netpbm documentation              10 May 2010        Pamditherbw User Manual(1)

Generated by dwww version 1.16 on Tue Dec 16 05:03:49 CET 2025.