1Pamditherbw User Manual(0)                          Pamditherbw User Manual(0)
2
3
4

NAME

6       pamditherbw - dither grayscale image to black and white
7
8

SYNOPSIS

10       pamditherbw
11
12       [-floyd  |  -fs  | -atkinson | -threshold | -hilbert | -dither8 | -d8 |
13       -cluster3 | -c3 | -cluster4 | -c4 | -cluster8 | -c8]
14
15       [-value val]
16
17       [-clump size]
18
19       [-randomseed=integer]
20
21       [pamfile]
22
23       All options can be abbreviated to their shortest unique prefix.
24
25

DESCRIPTION

27       This program is part of Netpbm(1).
28
29       pamditherbw dithers a grayscale image.  Dithering  means  turning  each
30       shade  of  gray  into  a pattern of black and white pixels that, from a
31       distance, look the same as the gray.
32
33       The input should be a PGM image or a PAM image of tuple type GRAYSCALE.
34       However, pamditherbw doesn't check, so if you feed it e.g. a PPM image,
35       it will produce arbitrary results (actually, it just  takes  the  first
36       channel of whatever you give it and treats it as if it represented gray
37       levels).
38
39       The output is a PAM with tuple type BLACKANDWHITE.  You can  turn  this
40       into  a  PBM  (if you need to use it with an older program that doesn't
41       understand PAM) with pamtopnm.
42
43       To do the opposite of dithering, you can usually just scale  the  image
44       down  and then back up again with pamscale, possibly smoothing or blur‐
45       ring the result with pnmsmooth or pnmconvol.  Or use the  special  case
46       program pbmtopgm.
47
48       To  dither  a  color  image (to reduce the number of pixel colors), use
49       ppmdither.
50
51       Another way to convert a grayscale image to a black and white image  is
52       thresholding.   Thresholding  is  simply replacing each grayscale pixel
53       with a black or white pixel depending  on  whether  its  brightness  is
54       above or below a threshold.  That threshold might vary.  Simple thresh‐
55       olding is a degenerate case of dithering, so pamditherbw does very sim‐
56       ple  thresholding  with  its  -threshold option.  But pamthreshold does
57       more sophisticated thresholding.
58
59       If all you want is to change a PGM image with maxval 1 to a PBM  image,
60       pamtopnm will do that.
61
62
63

OPTIONS

65       The  default  quantization  method  is  boustrophedonic Floyd-Steinberg
66       error diffusion (-floyd or -fs).
67
68       Also available are simple thresholding  (-threshold);  Bayer's  ordered
69       dither (-dither8) with a 16x16 matrix;
70        Atkinson
71http://www.tinrocket.com/projects/programming/graphics/00158/⟩  ;  and
72       three  different  sizes  of  45-degree clustered-dot dither (-cluster3,
73       -cluster4, -cluster8).
74
75       A space filling curve halftoning method using the Hilbert curve is also
76       available (-hilbert).
77
78       Floyd-Steinberg  or  Atkinson  will almost always give the best looking
79       results; however, looking good  is  not  always  what  you  want.   For
80       instance,  you  can  use thresholding in a pipeline with the pnmconvol,
81       for tasks such as edge and peak detection.  And clustered-dot dithering
82       gives a newspaper-ish look, a useful special effect.
83
84       Floyd-Steinberg is by far the more traditional, but
85        some                                                             claim
86http://www.tinrocket.com/projects/programming/graphics/00158/⟩  Atkin‐
87       son works better.
88
89       The Hilbert curve method is useful for processing images before display
90       on devices that do not render individual pixels distinctly (like  laser
91       printers).   This  dithering  method  can  give better results than the
92       dithering usually done by the laser printers  themselves.   The  -clump
93       option  alters  the number of pixels in a clump.  Typically a PGM image
94       will have to be scaled to fit on a laser printer page (2400 x 3000 pix‐
95       els  for  an  A4 300 dpi page), and then dithered to a PBM image before
96       being converted to a postscript file.  A printing pipeline  might  look
97       something like:
98
99           pamscale -xysize 2400 3000 image.pgm | pamditherbw -hilbert |  \
100             pamtopnm | pnmtops -scale 0.25 > image.ps
101
102
103
104
105       -value This  option  alters the thresholding value for Floyd-Steinberg,
106              Atkinson, and simple thresholding.  It should be a  real  number
107              between 0 and 1.  Above 0.5 means darker images; below 0.5 means
108              lighter.
109
110
111       -clump This option alters the number of pixels in  a  clump.   This  is
112              usually an integer between 2 and 100 (default 5).  Smaller clump
113              sizes smear the image less and are less grainy, but seem to lose
114              some grey scale linearity.
115
116
117       -randomseed=integer
118              This  is the seed for the random number generator that generates
119              the pixels.
120
121              Use this to ensure you get the same image  on  separate  invoca‐
122              tions.
123
124              By  default,  pgmnoise  uses a seed derived from the time of day
125              and process ID, which gives you fairly uncorrelated  results  in
126              multiple invocations.
127
128              This option was new in Netpbm 10.45 (December 2008).
129
130
131
132
133

REFERENCES

135       The  only  reference you need for this stuff is "Digital Halftoning" by
136       Robert Ulichney, MIT Press, ISBN 0-262-21009-6.
137
138       The Hilbert curve space filling method is taken from "Digital  Halfton‐
139       ing  with Space Filling Curves" by Luiz Velho, Computer Graphics Volume
140       25, Number 4, proceedings of SIGRAPH '91, page 81. ISBN 0-89791-436-8
141
142

SEE ALSO

144       pamtopnm(1), pgmtopgm(1), pbmtopgm(1),  pamthreshold(1),  pbmreduce(1),
145       pnmconvol(1), pamscale(1), pam(1), pnm(1),
146
147

HISTORY

149       pamditherbw was new in Netpbm 10.23 (July 2004), but is essentially the
150       same program as pgmtopbm that has existed practically since the  begin‐
151       ning.   pamditherbw  differs  from  its predecessor in that it properly
152       adds brightnesses (using gamma transformations; pgmtopbm just adds them
153       linearly)  and that it accepts PAM input in addition to PGM and PBM and
154       produces PAM output.
155
156       pamditherbw obsoletes pgmtopbm.
157
158       -atkinson was new in Netpbm 10.38 (March 2007).
159
160

AUTHOR

162       Copyright (C) 1989 by Jef Poskanzer.
163

DOCUMENT SOURCE

165       This manual page was generated by the Netpbm tool 'makeman'  from  HTML
166       source.  The master documentation is at
167
168              http://netpbm.sourceforge.net/doc/pamditherbw.html
169
170netpbm documentation              10 May 2010       Pamditherbw User Manual(0)
Impressum