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       [pamfile]
20
21       All options can be abbreviated to their shortest unique prefix.
22
23

DESCRIPTION

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

OPTIONS

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
69http://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
84http://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

REFERENCES

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

SEE ALSO

117       pamtopnm(1), pgmtopgm(1), pbmtopgm(1),  pamthreshold(1),  pbmreduce(1),
118       pnmconvol(1), pamscale(1), pam(1), pnm(1),
119
120

HISTORY

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

AUTHOR

135       Copyright (C) 1989 by Jef Poskanzer.
136
137
138
139netpbm documentation              10 May 2010       Pamditherbw User Manual(0)
Impressum