Fractals/Mathematics/LIC: Difference between revisions

From testwiki
Jump to navigation Jump to search
imported>Soul windsurfer
Implementation: https://github.com/drufat/licpy
 
(No difference)

Latest revision as of 15:40, 21 May 2023


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

  • 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

input:

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

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

Source

  • synthetic data
  • experimental data

Method

  • array of values
  • functions defining vector field

algorithm

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 p0(x,y) from output array
  • go to the Vector array
    • choose value at pixel p0(x,y)
    • find segment of local field line




dimensions

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


segment of field line

  • The field lines are calculated on basis of a vector field
  • a segment of locations l(s)=(i,j)+sV(i,j) where s{L,L+1,...,0,...,L1,L}
  • a segment of pixels intensities I(l(s)) of length 2L + 1


 I(i,j)O(i,j)


tuple

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

Properties The general rule for the identity of two Template:Math-tuples is

(a1,a2,,an)=(b1,b2,,bn) if and only if a1=b1, a2=b2, , an=bn.

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

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


weighted mean

Color of output pixel is computed using weighted mean

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

  • data (x1,x2,,xn),
  • corresponding non-negative weights (w1,w2,,wn)

is

x¯=i=1nwixii=1nwi=w1x1+w2x2++wnxnw1+w2++wn


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

line Integral Convolution (LIC)

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

Implementation

References

Template:BookCat