haralickMatrix {EBImage} | R Documentation

## Co-occurrence matrices (GLCM) and Haralick texture features

### Description

A set of functions to compute the co-occurrence matrix (GLCM - gray level co-occurrence matrix) and haralick texture features of objects in an indexed image.

### Usage

      ## S4 method for signature 'IndexedImage, Image':
      haralickMatrix(x, ref, nc = 32, ...)
      ## S4 method for signature 'IndexedImage, Image':
      haralickFeatures(x, ref, nc = 32, ...)

### Arguments

`x` | An object of `IndexedImage` used as a mask.
`ref` | A `Grayscale` object of `Image-class`. The texture is calculated from the data in this image.
`nc` | A numeric value. Specifies the number of gray levels to separate `ref` into when calculating the co-occurrence matrix. Defaults to 32
`...` | Reserved.

### Details

`haralickMatrix` computes a co-occurrence matrix of dimension `nc * nc` for each object in an image. The co-occurrence matrix is constructed by assigning to element `[i,j]` the number of times a pixel of value `i` is adjacent to a pixel of value `j`.

In order to achieve rotational invariance the co-occurrence matrix is computed using four passes through each object. Thus each pixel is compared to four neighbours: right, below, diagonally down left and diagonally down right. In order to achieve symmetry in the co-occurrence matrix the reciprocal of each of these scores is also added. Thus for each pixel we have have a score for comparison with each of the surrounding pixels.

Finally the entire matrix is divided by the total number of comparisons, giving a probability for each of the possible combinations.

`haralickFeatures` computes for each object in an image 12 Haralick texture features, calculated from the co-occurrence matrix. The feature names carry a `t.` prefix (t for texture). The features and their calculations are:

`asm`
  Angular second moment: `sum[_i=1^nc] sum[_j=1^nc]p(i,j)^2`.
`con`
  Contrast: `sum[_i=2^(2*nc)] n^2 * sum[_i=1^nc] sum[_j=1^nc] p(i,j), for all i,j s.t ABS(i - j) = n`.
`cor`
  Correlation of GLCM: `sum[_i=1^nc] sum[_j=1^nc]((i * j) * p(i,j) - mu_x * mu_y) / sigma_x * sigma_y`.
`var`
  Variance: `sum[_i=1^nc] sum[_j=1^nc](i - mu)^2. * p(i,j)`.
`idm`
  Inverse difference moment: `sum[_i=1^nc] sum[_j=1^nc] p(i,j) / (1 + (i - j)^2)` .
`sav`
  Sum average: `sum[_i=2^(2*nc)] i * Px+y(i)`.
`sva`
  Sum variance: `sum[_i=2^(2*nc)] (i - sen)^2 * Px+y(i)`.
`sen`
  Sum entropy: `-sum[_i=2^(2*nc)] Px+y(i) * log( p(i,j) )`.
`ent`
  Entropy: `-sum[_i=1^nc] sum[_j=1^nc] p(i,j) * log( p(i,j) )`.
`dva`
  Difference variance: `sum[_i=0^(nc-1)] (i^2) * Px-y(i)`.
`den`
  Difference entropy: `sum[_i=0^(nc-1)] Px-y(i) * log( Px-y(i,j) )`.
`f12`
  Measure of correlation: `ABS(ent - HXY1) / HX`.
`f13`
  Measure of correlation: `sqrt( 1 - exp( -2 *(HXY2 - ent) ) )`.

Where:

`p(i,j)`
  The value in row i, column j of the co-occurrence matrix.
`Px(i)`
  Partial probability density function. Defined by `sum[_j=1^nc] p(i,j)` .
`Py(j)`
  Partial probability density function. Defined by `sum[_i=1^nc] p(i,j)` .
`mu_x, mu_y`
  Are the means of `Px` and `Px`, the partial probability density functions.
`sigma_x, sigma_y`
  Are the standard deviations of `Px` and `Py`.
`Px+y`
  Is the probability of the co-occurrence matrix co-ordinates summing to `x+y`. It is defined as `Px+y(k) = sum[_i=1^nc] sum[_j=1^nc] p(i,j), i + j = k and k = 2,3,...,2*nc`.
`Px-y`
  Is the probability of the absolute value of the difference between co-occurrence matrix co-ordinates being equal to `x-y`. It is defined as `Px-y(k) = sum[_i=1^nc] sum[_j=1^nc] p(i,j), ABS(i - j) = k and k = 2,3,...,2*nc`.
`HXY1`
  `-sum[_i=1^nc] sum[_j=1^nc] p(i,j) * log( Px(i),Py(j) )` .
`HXY2`
  `-sum[_i=1^nc] sum[_j=1^nc] Px(i)*Py(j) * log( Px(i),Py(j) )` .

### Value

For a single frame in `x` the result of `haralickMatrix` is an array of dimensions `nc` * `nc` * "the number of objects in the frame".
`haralickFeatures` returns a matrix of dimensions "number of objects in the frame" * 12.
For multiple frames a list of each of the above will be returned.

### Author(s)

Mike Smith, msmith@ebi.ac.uk; Oleg Sklyar, osklyar@ebi.ac.uk, 2007

### References

R. M. Haralick, K Shanmugam and Its'Hak Deinstein (1979). Textural Features for Image Classification. IEEE Transactions on Systems, Man and Cybernetics.

### See Also

`IndexedImage, watershed, propagate`

### Examples

      ## see example(getFeatures)

[Package EBImage version 2.6.0 Index]