Man Pages

pamditherbw(1) - phpMan pamditherbw(1) - phpMan

Command: man perldoc info search(apropos)  

Pamditherbw User Manual(0)                          Pamditherbw User Manual(0)

       pamditherbw - dither grayscale image to black and white


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

       [-value val]

       [-clump size]


       All options can be abbreviated to their shortest unique prefix.

       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 distance, 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 doesn't understand PAM) with pamtopnm.

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

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

       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 sophisticated

       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;
        Atkinson ; and three different sizes of 45-degree clustered-dot dither (-cluster3, -cluster4, -cluster8).

       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 results;  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
        some claim  Atkinson works better.

       The -value 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.

       The  Hilbert curve method is useful for processing images before display on devices that do not render individ-
       ual pixels distinctly (like laser printers).  This dithering method can give better results than the  dithering
       usually done by the laser printers themselves.  The -clump option alters the number of pixels in a clump.  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. 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
       converted to a postscript file.  A printing pipeline might look something like:

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

       The  only  reference  you  need  for  this  stuff  is  'Digital Halftoning' by Robert Ulichney, MIT Press, ISBN

       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

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

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

       pamditherbw obsoletes pgmtopbm.

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

       Copyright (C) 1989 by Jef Poskanzer.

netpbm documentation             03 March 2007      Pamditherbw User Manual(0)