Lacunarity

From Infogalactic: the planetary knowledge core
Jump to: navigation, search
File:Rotational Invariance Example.gif
Figure 1. Basic fractal patterns increasing in lacunarity from left to right.
File:Rotational Invariance rotated.gif
The same images as above, rotated 90°. Whereas the first two images appear essentially the same as they do above, the third looks different from its unrotated original. This feature is captured in measures of lacunarity listed across the top of the figures, as calculated using standard biological imaging box counting software ImageJ (FracLac plugin).

Lacunarity, from the Latin lacuna meaning "gap" or "lake", is a specialized term in geometry referring to a measure of how patterns, especially fractals, fill space, where patterns having more or larger gaps generally have higher lacunarity. Beyond being an intuitive measure of gappiness, lacunarity can quantify additional features of patterns such as "rotational invariance" and more generally, heterogeneity.[1][2][3] This is illustrated in Figure 1 showing three fractal patterns. When rotated 90°, the first two fairly homogeneous patterns do not appear to change, but the third more heterogeneous figure does change and has correspondingly higher lacunarity. The earliest reference to the term in geometry is usually attributed to Mandelbrot, who, in 1983 or perhaps as early as 1977, introduced it as, in essence, an adjunct to fractal analysis.[4] Lacunarity analysis is now used to characterize patterns in a wide variety of fields and has application in multifractal analysis[5][6] in particular (see Applications).

Measuring lacunarity

In many patterns or data sets, lacunarity is not readily perceivable or quantifiable, so computer-aided methods have been developed to calculate it. As a measurable quantity, lacunarity is often denoted in scientific literature by the Greek letters \Lambda or \lambda but it is important to note that there is no single standard and several different methods exist to assess and interpret lacunarity.

Box counting lacunarity

File:Fixedstack.gif
Figure 2a. Boxes laid over an image as a fixed grid.
File:Slidestack.gif
Figure 2b. Boxes slid over an image in an overlapping pattern.

One well-known method of determining lacunarity for patterns extracted from digital images uses box counting, the same essential algorithm typically used for some types of fractal analysis.[1][4] Similar to looking at a slide through a microscope with changing levels of magnification, box counting algorithms look at a digital image from many levels of resolution to examine how certain features change with the size of the element used to inspect the image. Basically, the arrangement of pixels is measured using traditionally square (i.e., box-shaped) elements from an arbitrary set of \Epsilon sizes, conventionally denoted \epsilons. For each \epsilon, the box is placed successively over the entire image, and each time it is laid down, the number of pixels that fall within the box is recorded.[note 1] In standard box counting, the box for each \epsilon in \Epsilon is placed as though it were part of a grid overlaid on the image so that the box does not overlap itself, but in sliding box algorithms the box is slid over the image so that it overlaps itself and the "Sliding Box Lacunarity" or SLac is calculated.[3][7] Figure 2 illustrates both types of box counting.

Calculations from box counting

The data gathered for each \epsilon are manipulated to calculate lacunarity. One measure, denoted here as \lambda_{\epsilon}, is found from the coefficient of variation (\mathit{CV}), calculated as the standard deviation (\sigma) divided by the mean (\mu), for pixels per box.[1][3][6] Because the way an image is sampled will depend on the arbitrary starting location, for any image sampled at any \epsilon there will be some number (\mathit{G}) of possible orientations, each denoted here by \mathit{g}, that the data can be gathered over, which can have varying effects on the measured distribution of pixels.[5][note 2] Equation 1 shows the basic method of calculating \lambda_{\epsilon,g}:

\lambda_{\epsilon,g} = (CV_{\epsilon,g})^2 = \left( \frac  {\sigma_{\epsilon,g}}   {\mu_{\epsilon,g}}  \right)^2

 

 

 

 

(1)

Probability distributions

Alternatively, some methods sort the numbers of pixels counted into a probability distribution having B bins, and use the bin sizes (masses, m) and their corresponding probabilities (p) to calculate \lambda_{\epsilon,g} according to Equations 2 through 5:

\mu_{\epsilon}=\sum_{i=1}^{B} {m_{i,\epsilon} p_{i,\epsilon}}

 

 

 

 

(2)

\mathit{v}_{\epsilon}=\sum_{i-1}^{B} {\left( m_{i,\epsilon} - \mu_{\epsilon} \right ) ^2 p_{i,\epsilon}}

 

 

 

 

(3)

\sigma_{\epsilon}=\sqrt{\mathit{v}_{\epsilon}}=\sum_{i=1}^{B} {m_{i,\epsilon}^2 p_{i,\epsilon}-\mu_{\epsilon}^2}

 

 

 

 

(4)

\lambda_{\epsilon}= \frac{\sum_{i=1}^{B} {m_{i,\epsilon}^2 p_{i,\epsilon}-\mu_{\epsilon}^2}}{\mu_{\epsilon}^2} = \frac{\sigma_{\epsilon}^2}{\mu_{\epsilon}^2}

 

 

 

 

(5)

Interpreting \lambda

Lacunarity based on \lambda_{\epsilon,g} has been assessed in several ways including by using the variation in or the average value of \lambda_{\epsilon,g} for each \epsilon (see Equation 6) and by using the variation in or average over all grids (see Equation 7).[1][5][7][8]

\overline{\lambda_{\epsilon,g}}=\frac{\sum_{\epsilon=1}^\Epsilon \lambda_{\epsilon,g}}{\Epsilon}

 

 

 

 

(6)

\Lambda_{\mathit{g}}=\frac{\sum_{\mathit{g}=1}^\mathit{G} \overline{\lambda_{\epsilon,g}}}{\mathit{G}}

 

 

 

 

(7)

Relationship to the fractal dimension

Lacunarity analyses using the types of values discussed above have shown that data sets extracted from dense fractals, from patterns that change little when rotated, or from patterns that are homogeneous, have low lacunarity, but as these features increase,[clarification needed] so generally does lacunarity. In some instances, it has been demonstrated that fractal dimensions and values of lacunarity were correlated,[1] but more recent research has shown that this relationship does not hold for all types of patterns and measures of lacunarity.[5] Indeed, as Mandelbrot originally proposed, lacunarity has been shown to be useful in discerning amongst patterns (e.g., fractals, textures, etc.) that share or have similar fractal dimensions in a variety of scientific fields including neuroscience.[8]

Graphical lacunarity

Other methods of assessing lacunarity from box counting data use the relationship between values of lacunarity (e.g., \lambda_{\epsilon,g}) and \epsilon in different ways from the ones noted above. One such method looks at the ln vs ln plot of these values. According to this method, the curve itself can be analyzed visually, or the slope at \mathit{g} can be calculated from the ln vs ln regression line.[3][7] Because they tend to behave in certain ways for respectively mono-, multi-, and non-fractal patterns, ln vs ln lacunarity plots have been used to supplement methods of classifying such patterns.[5][8]

To make the plots for this type of analysis, the data from box counting first have to be transformed as in Equation 9:

f \lambda_{\epsilon,g}=\lambda_{\epsilon,g}+\mathit{1}

 

 

 

 

(9)

This transformation avoids undefined values, which is important because homogeneous images will have \sigma at some \epsilon equal to 0 so that the slope of the ln vs ln regression line would be impossible to find. With f \lambda_{\epsilon,g}, homogeneous images have a slope of 0, corresponding intuitively to the idea of no rotational or translational invariance and no gaps.[9]

One box counting technique using a "gliding" box calculates lacunarity according to:


\mathcal{L}(r) = \frac{\sum_{i=1}^{r^2} S_i^2 Q(S_i,r)}{ \left( \sum_{i=1}^{r^2}  S_i Q(S_i,r) \right)^2 }.

 

 

 

 

(10)

S_i is the number of filled data points in the box and Q(S_i,r) the normalized frequency distribution of S_i for different box sizes.

Prefactor lacunarity

Another proposed way of assessing lacunarity using box counting, the Prefactor method, is based on the value obtained from box counting for the fractal dimension (D_B). This statistic uses the variable A from the scaling rule N = A \epsilon^{D_B}, where A is calculated from the y-intercept (\mathit{y}) of the ln-ln regression line for \epsilon and either the count (N) of boxes that had any pixels at all in them or else m at g. A is particularly affected by image size and the way data are gathered, especially by the lower limit of \epsilons used. The final measure is calculated as shown in Equations 11 through 13:[1][4]

A_g = \frac{1}{e^{\mathit{y}_g}}

 

 

 

 

(11)

\overline{A} = \frac{\sum_{g=1}^G A_g}{G}

 

 

 

 

(12)

P \Lambda = \frac {  \sum_{g=1}^G { \left ( {\frac{A_g}{\overline A}}-1   \right ) ^2}}{G}

 

 

 

 

(13)

Applications

Below is a list of some fields where lacunarity plays an important role, along with links to relevant research illustrating practical uses of lacunarity.

Notes

  1. This contrasts with box counting fractal analysis where the total number of boxes that contained any pixels is counted to determine a fractal dimension.
  2. See http://rsb.info.nih.gov/ij/plugins/fraclac/FLHelp/BoxCounting.htm#gridlocation for an explanation of methods to address variation with grid location

References

  1. 1.0 1.1 1.2 1.3 1.4 1.5 Lua error in package.lua at line 80: module 'strict' not found.
  2. 2.0 2.1 Lua error in package.lua at line 80: module 'strict' not found.
  3. 3.0 3.1 3.2 3.3 Lua error in package.lua at line 80: module 'strict' not found.
  4. 4.0 4.1 4.2 Lua error in package.lua at line 80: module 'strict' not found.
  5. 5.0 5.1 5.2 5.3 5.4 Lua error in package.lua at line 80: module 'strict' not found.
  6. 6.0 6.1 6.2 Lua error in package.lua at line 80: module 'strict' not found.
  7. 7.0 7.1 7.2 Lua error in package.lua at line 80: module 'strict' not found.
  8. 8.0 8.1 8.2 Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found.
  11. Lua error in package.lua at line 80: module 'strict' not found.
  12. Lua error in package.lua at line 80: module 'strict' not found.
  13. Lua error in package.lua at line 80: module 'strict' not found.
  14. Lua error in package.lua at line 80: module 'strict' not found.
  15. Lua error in package.lua at line 80: module 'strict' not found.
  16. Lua error in package.lua at line 80: module 'strict' not found.
  17. Lua error in package.lua at line 80: module 'strict' not found.

External links