1Pamditherbw User Manual(0) Pamditherbw User Manual(0)
2
3
4
6 pamditherbw - dither grayscale image to black and white
7
8
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 [pamfile]
20
21 All options can be abbreviated to their shortest unique prefix.
22
23
25 This program is part of Netpbm(1).
26
27 pamditherbw dithers a grayscale image. Dithering means turning each
28 shade of gray into a pattern of black and white pixels that, from a
29 distance, look the same as the gray.
30
31 The input should be a PGM image or a PAM image of tuple type GRAYSCALE.
32 However, pamditherbw doesn't check, so if you feed it e.g. a PPM image,
33 it will produce arbitrary results (actually, it just takes the first
34 channel of whatever you give it and treats it as if it represented gray
35 levels).
36
37 The output is a PAM with tuple type BLACKANDWHITE. You can turn this
38 into a PBM (if you need to use it with an older program doesn't under‐
39 stand PAM) with pamtopnm.
40
41 To do the opposite of dithering, you can usually just scale the image
42 down and then back up again with pamscale, possibly smoothing or blur‐
43 ring the result with pnmsmooth or pnmconvol. Or use the special case
44 program pbmtopgm.
45
46 To dither a color image (to reduce the number of pixel colors), use
47 ppmdither.
48
49 Another way to convert a grayscale image to a black and white image is
50 thresholding. Thresholding is simply replacing each grayscale pixel
51 with a black or white pixel depending on whether its brightness is
52 above or below a threshold. That threshold might vary. Simple thresh‐
53 olding is a degenerate case of dithering, so pamditherbw does very sim‐
54 ple thresholding with its -threshold option. But pamthreshold does
55 more sophisticated thresholding.
56
57 If all you want is to change a PGM image with maxval 1 to a PBM image,
58 pamtopnm will do that.
59
60
61
63 The default quantization method is boustrophedonic Floyd-Steinberg
64 error diffusion (-floyd or -fs).
65
66 Also available are simple thresholding (-threshold); Bayer's ordered
67 dither (-dither8) with a 16x16 matrix;
68 Atkinson
69 ⟨http://www.tinrocket.com/projects/programming/graphics/00158/⟩ ; and
70 three different sizes of 45-degree clustered-dot dither (-cluster3,
71 -cluster4, -cluster8).
72
73 A space filling curve halftoning method using the Hilbert curve is also
74 available (-hilbert).
75
76 Floyd-Steinberg or Atkinson will almost always give the best looking
77 results; however, looking good is not always what you want. For
78 instance, you can use thresholding in a pipeline with the pnmconvol,
79 for tasks such as edge and peak detection. And clustered-dot dithering
80 gives a newspaper-ish look, a useful special effect.
81
82 Floyd-Steinberg is by far the more traditional, but
83 some claim
84 ⟨http://www.tinrocket.com/projects/programming/graphics/00158/⟩ Atkin‐
85 son works better.
86
87 The -value option alters the thresholding value for Floyd-Steinberg,
88 Atkinson, and simple thresholding. It should be a real number between
89 0 and 1. Above 0.5 means darker images; below 0.5 means lighter.
90
91 The Hilbert curve method is useful for processing images before display
92 on devices that do not render individual pixels distinctly (like laser
93 printers). This dithering method can give better results than the
94 dithering usually done by the laser printers themselves. The -clump
95 option alters the number of pixels in a clump. This is usually an
96 integer between 2 and 100 (default 5). Smaller clump sizes smear the
97 image less and are less grainy, but seem to lose some grey scale lin‐
98 earity. Typically a PGM image will have to be scaled to fit on a laser
99 printer page (2400 x 3000 pixels for an A4 300 dpi page), and then
100 dithered to a PBM image before being converted to a postscript file. A
101 printing pipeline might look something like:
102
103 pamscale -xysize 2400 3000 image.pgm | pamditherbw -hilbert | \
104 pamtopnm | pnmtops -scale 0.25 > image.ps
105
106
108 The only reference you need for this stuff is 'Digital Halftoning' by
109 Robert Ulichney, MIT Press, ISBN 0-262-21009-6.
110
111 The Hilbert curve space filling method is taken from 'Digital Halfton‐
112 ing with Space Filling Curves' by Luiz Velho, Computer Graphics Volume
113 25, Number 4, proceedings of SIGRAPH '91, page 81. ISBN 0-89791-436-8
114
115
117 pamtopnm(1), pgmtopgm(1), pbmtopgm(1), pamthreshold(1), pbmreduce(1),
118 pnmconvol(1), pamscale(1), pam(1), pnm(1),
119
120
122 pamditherbw was new in Netpbm 10.23 (July 2004), but is essentially the
123 same program as pgmtopbm that has existed practically since the begin‐
124 ning. pamditherbw differs from its predecessor in that it properly
125 adds brightnesses (using gamma transformations; pgmtopbm just adds them
126 linearly) and that it accepts PAM input in addition to PGM and PBM and
127 produces PAM output.
128
129 pamditherbw obsoletes pgmtopbm.
130
131 -atkinson was new in Netpbm 10.38 (March 2007).
132
133
135 Copyright (C) 1989 by Jef Poskanzer.
136
137
138
139netpbm documentation 10 May 2010 Pamditherbw User Manual(0)