
FILTERS(9.1) FILTERS(9.1)
NAME
adapt, ahe, crispen, laplace, edge, edge2, edge3, extremum, median, nonoise, smooth,
shadepic  image neighborhood operators
SYNOPSIS
fb/adapt [ input ]
fb/ahe [ input ]
fb/crispen [ input ]
fb/laplace [ input ]
fb/edge [ input ]
fb/edge2 [ input ]
fb/edge3 [ input ]
fb/extremum [ input ]
fb/median [ input ]
fb/nonoise [ input ]
fb/smooth [ input ]
fb/shadepic [ lx y z ] [ input ]
DESCRIPTION
Gathered here are descriptions of programs that compute the pixels of an output image by
performing some operation on a neighborhood of each pixel of their input image (default
standard input). Each program writes the output image on standard output. The programs
process multichannel inputs by treating each channel independently.
Adapt performs adaptive contrast enhancement by examining the 7x7 region centered on each
input pixel, remapping the center pixel linearly in a way that would send the neighbor
hood's maximum value to 255 and its minimum to 0. To avoid divide checks, no mapping is
done if all pixels in the region have the same value.
Ahe performs adaptive histogram equalization by examining the 17x17 region centered on
each input pixel, counting the number of pixels whose value is less than the center pixel.
(It counts 1/2 for each pixel equal to the center value.) Output pixel values are 255
times the count divided by the window size.
Crispen examines the 3x3 region surrounding each input pixel, computing 9 times the center
pixel minus the sum of its eight neighbors. This is a fairly extreme highpass filter and
sharpens edges substantially.
Laplace computes 5 times the center pixel minus the sum of its four vertical and horizon
tal neighbors. This adds a 3x3 discrete Laplacian to the original image, and is a less
extreme highpass filter than crispen.
Edge, edge2, and edge3 detect edges in various ways. Edge examines the 3x3 region sur
rounding each input pixel, outputting 8 times the center value minus the sum of its eight
neighbors.
Edge2 applies a Sobel operator to the input image. It approximates the image's gradient
by finite differences on a 3x3 neighborhood, outputting the vector length of the gradient
approximation.
Edge3 likewise approximates the gradient of the input image. The output is roughly the
phase angle of the gradient approximation, scaled between 0 and 255.
Extremum examines the 3x3 region surrounding each input pixel, outputting the value that
differs most from the center value. In case of a tie, the larger candidate is chosen.
Median does noise reduction by replacing each pixel of the input image by the median of
the 3x3 region surrounding it.
Nonoise implements the BayerPowell noise reduction filter. It computes the average value
of the eight neighbors of each pixel of the input image, and substitutes it for the pixel
value if the two differ by more than 64.
Smooth lowpass filters its input image by convolution with a Bartlett window.
Shadepic treats its input image as an array of elevations. At each pixel it approximates
the normal vector to the heightfield by finite differences on a 3x3 neighborhood and out
puts 255 times its dot product with the unit vector in the lightsource direction speci
fied by option l (default 1,1,1). If the dot product is negative, it is clamped at
zero. (This computation is just Lambertian diffuse reflection.)
SOURCE
/sys/src/fb
SEE ALSO
picfile(9.6)
BUGS
There are too many weird wiredin sizes.
FILTERS(9.1) 
