pnmnlfilt

NAME SYNOPSIS DESCRIPTION Alpha trimmed mean filter. (0.0 Optimal estimation smoothing. (1.0 Edge enhancement. (-0.1 Combination use. References: SEE ALSO BUGS AUTHOR

pnmnlfilt - non-linear filters: smooth, alpha trim mean, optimal estimation smoothing, edge enhancement.

**pnmnlfilt** alpha radius __[''pnmfile''__?

This is something of a swiss army knife filter. It has 3 distinct operating modes. In all of the modes each pixel in the image is examined and processed according to it and its surrounding pixels values. Rather than using the 9 pixels in a 3x3 block, 7 hexagonal area samples are taken, the size of the hexagons being controlled by the radius parameter. A radius value of 0.3333 means that the 7 hexagons exactly fit into the center pixel (ie. there will be no filtering effect). A radius value of 1.0 means that the 7 hexagons exactly fit a 3x3 pixel array.

The value of the center pixel will be replaced by the mean of the 7 hexagon values, but the 7 values are sorted by size and the top and bottom alpha portion of the 7 are excluded from the mean. This implies that an alpha value of 0.0 gives the same sort of output as a normal convolution (ie. averaging or smoothing filter), where radius will determine the

An alpha value of 0.5 will cause the median value of the 7 hexagons to be used to replace the center pixel value. This sort of filter is good for eliminating

This type of filter applies a smoothing filter adaptively over the image. For each pixel the variance of the surrounding hexagon values is calculated, and the amount of smoothing is made inversely proportional to it. The idea is that if the variance is small then it is due to noise in the image, while if the variance is large, it is because of

This is the opposite type of filter to the smoothing filter. It enhances edges. The alpha parameter controls the amount of edge enhancement, from subtle (-0.1) to blatant (-0.9). The radius parameter controls the effective radius as usual, but useful values are between 0.5 and 0.9. Try starting with values of alpha = 0.3, radius = 0.8

The various modes of **pnmnlfilt** can be used one after
the other to get the desired result. For instance to turn a
monochrome dithered image into a grayscale image you could
try one or two passes of the smoothing filter, followed by a
pass of the optimal estimation filter, then some subtle edge
enhancement. Note that using edge enhancement is only likely
to be useful after one of the non-linear filters (alpha
trimmed mean or optimal estimation filter), as edge
enhancement is the direct opposite of
smoothing.

For reducing color quantization noise in images (ie. turning .gif files back into 24 bit files) you could try a pass of the optimal estimation filter (alpha 1.2, radius 1.0), a pass of the median filter (alpha 0.5, radius 0.55), and possibly a pass of the edge enhancement filter. Several passes of the optimal estimation filter with declining alpha values are more effective than a single pass with a large alpha value. As usual, there is a tradeoff between filtering effectiveness and loosing detail. Experimentation is encouraged.

The alpha-trimmed mean filter is based on the description in IEEE CG

The optimal estimation filter is taken from an article

The edge enhancement details are from pgmenhance(1), which is taken from Philip R. Thompson's

pgmenhance(1), pnmconvol(1), pnm(5)

Integers and tables may overflow if PPM_MAXMAXVAL is greater than 255.

Graeme W. Gill graeme@labtam.oz.au

3 pages link to pnmnlfilt(1):

This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.