Accurate control of streamline density is key to producing several effective forms of visualization of 2-dimensional vector fields. We introduce a technique that uses an energy function to guide the placement of streamlines at a specified density. This energy function uses a low-pass filtered version of the image to measure the difference between the current image and the desired visual density. We reduce the energy (and thereby improve the placement of streamlines) by (1) changing the positions and lengths of streamlines, (2) joining streamlines that nearly abut, and (3) creating new streamlines to fill sufficiently large gaps. The entire process is iterated to produce streamlines that are neither too crowded nor too sparse. The resulting streamlines manifest a more hand-placed appearance than do regularly- or randomly-placed streamlines. Arrows can be added to the streamlines to disambiguate flow direction, and flow magnitude can be represented by the thickness, density, or intensity of the lines.
Here is a public-domain version of our streamline optimization code:
Streamline Package (228 Kbytes, gzip compressed).
Here are Postscript versions of the paper:
Paper, no figures (145 Kbytes)
Paper, with figures (2.3 Mbtyes)
Here are some images from the paper:
Wind patterns over Australia.
Original pear image.
Multi-resolution streamline illustration.
Hand-illustrated vortex street.
Low-pass filtered tufts.
Grid-seeded streamlines (top) and optimized placement (bottom).
High magnitude locations shown by thick, light, widely-spaced streamlines.
Go to Greg Turk's Home Page.