STANNIX Community


Manual: pamditherbw

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 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  what‐
       ever 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 understand PAM) with pamtopnm.

       To do the opposite of dithering, you can usually just scale the image down and then back up again with pamscale, pos‐
       sibly smoothing or blurring 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 ppmdither.

       Another	way to convert a grayscale image to a black and white image is thresholding.  Thresholding is simply replac‐
       ing each grayscale pixel with a black or white pixel depending on whether its brightness is above or below a  thresh‐
       old.   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 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	  Common Options  ),
       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;  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 Hilbert curve method is useful for processing images before display on devices that do not render individual pix‐
       els  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.  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 > 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 generator.	The other methods do not employ random numbers and ignore this option.

	      Use this to ensure you get the same image on separate invocations.

	      By default, pamditherbw uses a seed derived from the time of day and process ID, which gives you fairly uncor‐
	      related 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 beginning.	 pamditherbw differs from its predecessor in that it properly adds brightnesses (us‐
       ing 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).

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)