Line Integral Convolution
Line integral convolution smears a noise texture along a vector field, producing a dense image where every pixel shows flow direction.
Dense flow without seeds
Streamlines and glyphs sample a vector field at chosen locations, leaving gaps and inviting seeding bias. Line integral convolution (LIC) instead produces a dense representation: it starts from a white-noise texture and, at each pixel, averages the noise along the streamline passing through it. The result is a texture whose grain aligns with the field everywhere.
How it works
- Generate a noise image over the domain.
- For each pixel, trace the streamline forward and backward a short length.
- Convolve (average) the noise sampled along that path.
- The averaged value becomes the pixel, so texture streaks follow the field.
Reading LIC images
The eye follows the streaks to perceive flow orientation continuously, without the clutter of arrows or the arbitrariness of seed points. Speed can be added as an overlaid color, since LIC alone shows direction (and by streak contrast, some structure) but not magnitude.
Variants and limits
Oriented and animated LIC show flow sense (which way along the line), which basic LIC omits. LIC is best in two dimensions or on surfaces; in a 3D volume it occludes itself and needs slicing or transparency. It excels at revealing critical points such as sources, sinks, and saddles.
# per pixel: average noise along the local streamline
# out[p] = mean( noise[trace(p, +L)] + noise[trace(p, -L)] )
Kronos use
LIC renders simulated 2D field slices where a continuous, seed-free view of structure is clearer than discrete streamlines or glyphs.