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
58

OPTIONS

60       The default  quantization  method  is  boustrophedonic  Floyd-Steinberg
61       error diffusion (-floyd or -fs).
62
63       Also  available  are  simple thresholding (-threshold); Bayer's ordered
64       dither (-dither8) with a 16x16 matrix;
65        Atkinson
66http://www.tinrocket.com/projects/programming/graphics/00158/⟩  ;  and
67       three different sizes of  45-degree  clustered-dot  dither  (-cluster3,
68       -cluster4, -cluster8).
69
70       A space filling curve halftoning method using the Hilbert curve is also
71       available (-hilbert).
72
73       Floyd-Steinberg or Atkinson will almost always give  the  best  looking
74       results;  however,  looking  good  is  not  always  what you want.  For
75       instance, you can use thresholding in a pipeline  with  the  pnmconvol,
76       for tasks such as edge and peak detection.  And clustered-dot dithering
77       gives a newspaper-ish look, a useful special effect.
78
79       Floyd-Steinberg is by far the more traditional, but
80        some                                                             claim
81http://www.tinrocket.com/projects/programming/graphics/00158/⟩  Atkin‐
82       son works better.
83
84       The -value option alters the thresholding  value  for  Floyd-Steinberg,
85       Atkinson,  and simple thresholding.  It should be a real number between
86       0 and 1.  Above 0.5 means darker images; below 0.5 means lighter.
87
88       The Hilbert curve method is useful for processing images before display
89       on  devices that do not render individual pixels distinctly (like laser
90       printers).  This dithering method can  give  better  results  than  the
91       dithering  usually  done  by the laser printers themselves.  The -clump
92       option alters the number of pixels in a  clump.   This  is  usually  an
93       integer  between  2 and 100 (default 5).  Smaller clump sizes smear the
94       image less and are less grainy, but seem to lose some grey  scale  lin‐
95       earity.  Typically a PGM image will have to be scaled to fit on a laser
96       printer page (2400 x 3000 pixels for an A4  300  dpi  page),  and  then
97       dithered to a PBM image before being converted to a postscript file.  A
98       printing pipeline might look something like:
99
100           pamscale -xysize 2400 3000 image.pgm | pamditherbw -hilbert |  \
101             pamtopnm | pnmtops -scale 0.25 > image.ps
102
103

REFERENCES

105       The only reference you need for this stuff is 'Digital  Halftoning'  by
106       Robert Ulichney, MIT Press, ISBN 0-262-21009-6.
107
108       The  Hilbert curve space filling method is taken from 'Digital Halfton‐
109       ing with Space Filling Curves' by Luiz Velho, Computer Graphics  Volume
110       25, Number 4, proceedings of SIGRAPH '91, page 81. ISBN 0-89791-436-8
111
112

SEE ALSO

114       pamtopnm(1),  pgmtopgm(1),  pbmtopgm(1), pamthreshold(1), pbmreduce(1),
115       pnmconvol(1), pamscale(1), pam(1), pnm(1),
116
117

HISTORY

119       pamditherbw was new in Netpbm 10.23 (July 2004), but is essentially the
120       same  program as pgmtopbm that has existed practically since the begin‐
121       ning.  pamditherbw differs from its predecessor  in  that  it  properly
122       adds brightnesses (using gamma transformations; pgmtopbm just adds them
123       linearly) and that it accepts PAM input in addition to PGM and PBM  and
124       produces PAM output.
125
126       pamditherbw obsoletes pgmtopbm.
127
128       -atkinson was new in Netpbm 10.38 (March 2007).
129
130

AUTHOR

132       Copyright (C) 1989 by Jef Poskanzer.
133
134
135
136netpbm documentation             03 March 2007      Pamditherbw User Manual(0)
Impressum