NAME¶
pnmconvol - general MxN convolution on a portable anymap
SYNOPSIS¶
pnmconvol convolutionfile [
pnmfile]
DESCRIPTION¶
Reads two portable anymaps as input. Convolves the second using the first, and
writes a portable anymap as output.
Convolution means replacing each pixel with a weighted average of the nearby
pixels. The weights and the area to average are determined by the convolution
matrix. The unsigned numbers in the convolution file are offset by -maxval/2
to make signed numbers, and then normalized, so the actual values in the
convolution file are only relative.
Here is a sample convolution file; it does a simple average of the nine
immediate neighbors, resulting in a smoothed image:
P2
3 3
18
10 10 10
10 10 10
10 10 10
To see how this works, do the above-mentioned offset: 10 - 18/2 gives 1. The
possible range of values is from 0 to 18, and after the offset that's -9 to 9.
The normalization step makes the range -1 to 1, and the values get scaled
correspondingly so they become 1/9 - exactly what you want. The equivalent
matrix for 5x5 smoothing would have maxval 50 and be filled with 26.
The convolution file will usually be a graymap, so that the same convolution
gets applied to each color component. However, if you want to use a pixmap and
do a different convolution to different colors, you can certainly do that.
At the edges of the convolved image, where the convolution matrix would extend
over the edge of the image,
pnmconvol just copies the input pixels
directly to the output.
SEE ALSO¶
pnmsmooth(1),
pnm(5)
AUTHORS¶
Copyright (C) 1989, 1991 by Jef Poskanzer.
Modified 26 November 1994 by Mike Burns, burns@chem.psu.edu