Fractals/Mathematics/LIC


line Integral Convolution (LIC):

  • visualize dense flow fields by imaging its integral curves
  • "emulates what happens when an area of fine sand is blown by strong wind" ( Zhanping Liu)[1]

Method

  • vover domain with a input texture
  • blur (convolve) the input texture along the path lines using a specified filter kernel
  • smear out the texture along stream lines

Dictionary

edit
  • the integral curve of the vector field = field line of vector field = streamline of steady ( time independent) flow
  • In mathematics, convolution is a special type of binary operation on two functions. Here discrete convolution is used

elements

edit

input:

  • texture, usually stationary white noise ( random texture)
  • vector field: a stationary vector field defined by a map  

kernel:[2]

  • one dimensional matrix ( array) of weights
  • with an odd kernel size to ensure there is a valid integer (x, y)-coordinate at the center of the image
  • normalized. Normalization is defined as the division of each element in the kernel by the sum of all kernel elements, so that the sum of the elements of a normalized kernel is unity. This will ensure the average pixel in the modified image is as bright as the average pixel in the original image.
  • often simple box filter
  • often symmetric (isotropic) = the convolution kernel is symmetric across its zero point.

Convolution formula ( convolution is not matrix multiplication, when kernel matrix is used )


output image = Final LIC image of input vector field. It is a smeared version of the input texture , where the direction of smearing is determined by the vector field.


vector field

edit

Source

  • synthetic data
  • experimental data

Method

  • array of values
  • functions defining vector field

algorithm

edit

General steps for LIC image:

  • For each pixel of output 2D array compute it's color
  • save complete output array as 2D static image file


Substeps performed for each pixel of LIC image:

  • choose pixel   from output array
  • go to the Vector array
    • choose value at pixel  
    • find segment of local field line




dimensions

edit
  • all images ( textures, domains) have the same dimensions =


segment of field line

edit
  • The field lines are calculated on basis of a vector field
  • a segment of locations   where  
  • a segment of pixels intensities   of length 2L + 1


  


tuple

edit

In mathematics, a tuple is a finite ordered list (sequence) of elements.

Properties The general rule for the identity of two n-tuples is

  if and only if  .

Thus a tuple has properties that distinguish it from a set:

  1. A tuple may contain multiple instances of the same element, so
    tuple  ; but set  .
  2. Tuple elements are ordered: tuple  , but set  .
  3. A tuple has a finite number of elements, while a set or a multiset may have an infinite number of elements.


weighted mean

edit

Color of output pixel is computed using weighted mean

The weighted mean of a non-empty finite tuple of:

  • data  ,
  • corresponding non-negative weights  

is

 


Therefore, data elements with a high weight contribute more to the weighted mean than do elements with a low weight.

The weights cannot be negative. Some may be zero, but not all of them (since division by zero is not allowed).

versions

edit

line Integral Convolution (LIC)

  • Oriented Line Integral Convolution (OLIC)
    • Fast Rendering of Oriented Line Integral Convolution ( FROLIC)[3][4]

Implementation

edit

References

edit
  1. Lic by Zhanping Liu
  2. Kernel_(image_processing) in wikipedia
  3. Fast Oriented Line Integral Convolution for Vector Field Visualization via the Internet by Rainer Wegenkittl and Eduard Gr¨oller
  4. Java Exploration Tool for Dynamical Systems by R. Wegenkittl and E. Gröller.