Pnmhisteq User Manual(0) Pnmhisteq User Manual(0)
pnmhisteq - histogram equalize a PNM image
You can abbreviate any option to its shortest unique prefix.
This program is part of Netpbm(1).
pnmhisteq increases the contrast of a PGM or PPM image through the
technique of ’histogram equalization.’
pnmhisteq computes a histogram of the luminosity of the pixels in the
image. It then calculates a mapping between each luminosity and a new
luminosity such that it spreads out intensity levels around histogram
peaks and compresses them at troughs. It applies that mapping to the
input image to produce the output image. The effect of this is that
the image uses the available levels of intensity more efficiently and
thereby has more visible detail.
Mathematically, the luminosity mapping is this: Assume the pixels are
sorted by luminosity into B buckets numbered from 0 (lowest luminosity)
to B-1. N[i] is the number of pixels in bucket i. T is the total num-
ber of pixels (sum of N[i] over all i). W is the luminosity of white.
pnmhisteq replaces an input pixel whose luminosity falls into bucket j
with one whose luminosity is:
> (N[i] / T) * W
Considering a grayscale image for simplicity, this means that pixels in
the most luminous bucket become white. Pixels in the 10th per centile
of luminosity become 10% of white.
If you’re processing a related set of images, for example frames of an
animation, it’s generally best to apply the same luminosity mapping to
every frame, since otherwise you’ll get distracting frame-to-frame
changes in the brightness of objects. pnmhisteq’s -wmap option allows
you to save, as a PGM image, the luminosity map it computes from an
image. The -rmap option causes pnmisteq to use such an image as its
So you can run pnmhisteq with -wmap on a composite you created with
pnmcat of the images you intend to process. Then, you can run pnmisteq
with -rmap on each of the individual images, using the luminosity map
you generated from the composite.
-gray When processing a pixmap, only gray pixels (those with identical
red, green, and blue values) are included in the histogram and
modified in the output image. This is a special purpose option
intended for images where the actual data are gray scale, with
color annotations you don’t want modified. Weather satellite
images that show continent outlines in color are best processed
using this option. The option has no effect when the input is a
Process the image using the luminosity map specified by the PGM
The PGM image, usually created by an earlier run of pnmhisteq
with the -wmap option, contains a single row with number of
columns equal to the maxval (greatest intensity value) of the
image plus one. Each pixel in the image is transformed by look-
ing up its luminosity in the corresponding column in the map
file (column number = luminosity) and changing it to the value
given by that column.
Creates a PGM file mapfile, containing the luminosity map com-
puted from the histogram of the input image. This map file can
be read on subsequent runs of pnmhisteq with the -rmap option,
allowing a group of images to be processed with an identical
Prints the histogram and luminosity map on Standard Error.
Histogram equalization is effective for increasing the visible detail
in scientific imagery and in some continuous-tone pictures. It is
often too drastic, however, for scanned halftone images, where it does
an excellent job of making halftone artifacts apparent. You might want
to experiment with pnmnorm and pnmgamma for more subtle contrast
The luminosity map file supplied by the -rmap option must have the same
maxval as the input image. This is always the case when the map file
was created by the -wmap option of pnmhisteq. If this restriction
causes a problem, simply adjust the maxval of the map with pnmdepth to
agree with the input image.
If the input is a PBM file (on which histogram equalization is an iden-
tity operation), the only effect of passing the file through pnmhisteq
will be the passage of time.
pnmnorm(1), pnmcat(1), pnmdepth(1), pnmgamma(1), pnm(1),
 Russ, John C. The Image Processing Handbook. Boca Raton: CRC
Press, 1992. Pages 105-110.
Copyright (C) 1995 by John Walker (firstname.lastname@example.org). WWW home
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, with-
out any conditions or restrictions. This software is provided ’as is’
without express or implied warranty.
netpbm documentation 10 September 2005 Pnmhisteq User Manual(0)
Man(1) output converted with