pgmtopbm
convert a portable graymap into a portable bitmap
see also :
pbmreduce - pnmconvol - pnmscale - pnmtops
Synopsis
pgmtopbm
[-floyd|-fs|-threshold |-hilbert
|-dither8|-d8|-cluster3
|-c3|-cluster4|-c4
|-cluster8|-c8] [-value val]
[-clump size] [pgmfile]
add an example, a script, a trick and tips
examples
source
ppmtopgm ${1}001.ppm | pgmtopbm
> $1.pbm
pnmtotiff -g4 $1.pbm > $1.tif
rm ${1}001.ppm
rm $1.pbm
echo 'Hit ENTER to
generate box file'
source
pngtopnm _png | ppmtopgm | pgmtopbm -threshold
>"$2"
rm -f _gvp _png
source
POST="pgmtopbm | pbmtolj -resolution $PRES | lpr
-Praw"
fi
scanimage -d $DEV \
-x $SCANWIDTH\"
-y $SCANHEIGHT\"
-l $LMARGIN\" -t
$TMARGIN\"
\
description
Reads a
portable graymap as input. Produces a portable bitmap as
output.
Note that there
is no pbmtopgm converter. Any program that uses the Netpbm
libraries to read PGM files, including virtually all
programs in the Netpbm package, will read a PBM file
automatically as if it were a PGM file.
If you are
using a less intelligent program that expects PGM input, use
pnmdepth to convert the PBM file to PGM. As long as
the depth is greater than 1, pnmdepth will generate
PGM. This less intelligent program quite probably is also
not intelligent enough to deal with general maxvals, so you
should specify a depth of 255.
options
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; 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
will almost always give the best looking results; however,
looking good is not always what you want. For instance,
thresholding can be used in a pipeline with the
pnmconvol tool, for tasks like edge and peak
detection. And clustered-dot dithering gives a newspaper-ish
look, a useful special effect.
The
-value flag alters the thresholding value for
Floyd-Steinberg and simple thresholding. It should be a real
number between 0 and 1. Above 0.5 means darker images; below
0.5 means lighter.
The Hilbert
curve method is useful for processing images before display
on devices that do not render individual pixels distinctly
(like laser printers). This dithering method can give better
results than the dithering usually done by the laser
printers themselves. The -clump flag alters the
number of pixels in a clump. 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 loose some grey
scale linearity. 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: pnmscale -xysize 2400
3000 image.pgm | pgmtopbm -hil | pnmtops -scale 0.25 >
image.ps
All flags can
be abbreviated to their shortest unique prefix.
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
pbmreduce ,
pgm, pbm, pnmconvol , pnmscale , pnmtops
author
Copyright (C)
1989 by Jef Poskanzer.