Class TextureAnalysis

java.lang.Object
net.sourceforge.jiu.ops.Operation
net.sourceforge.jiu.color.analysis.TextureAnalysis

public class TextureAnalysis extends Operation
This class determines a number of properties for a given co-occurrence matrix. The only input parameter is a mandatory co-occurrence matrix object to be specified using setMatrix(net.sourceforge.jiu.color.data.CoOccurrenceMatrix). Then process() must be called. After that, the various properties can be retrieved using the corresponding get methods, e.g. getContrast(), getEnergy() etc.

Static convenience methods compute(CoOccurrenceMatrix) and compute(IntegerImage, int) exist for simplified usage. You may need to cast your PixelImage to IntegerImage first.

Usage example

Use like that:
GrayIntegerImage img = ...;
TextureAnalysis op = TextureAnalysis.compute(img);
System.out.println("Entropy=" + op.getEntropy());
Use the compute method that takes a CoOccurrenceFrequencyMatrix if you want to reuse a matrix object.

Caveat: memory consumption

Will not work with 16 bit image objects because MemoryCoOccurrenceMatrix is rather unsophisticated, trying to allocate 4 * 65536 * 65536 bytes (16 GB). Solution is an implementation of CoOccurrenceMatrix which creates element counters on demand. The following resources were helpful when creating this class:

Since:
0.7.0
Author:
Marco Schmidt
  • Field Details

    • matrix

      private CoOccurrenceMatrix matrix
    • contrast

      private int contrast
    • correlation

      private double correlation
    • dissimilarity

      private int dissimilarity
    • energy

      private int energy
    • entropy

      private double entropy
    • homogeneity

      private double homogeneity
    • sum

      private int sum
    • symmetry

      private boolean symmetry
  • Constructor Details

    • TextureAnalysis

      public TextureAnalysis()
  • Method Details

    • compute

      public static TextureAnalysis compute(CoOccurrenceMatrix matrix) throws MissingParameterException
      Create a TextureAnalysis operation with the results computed from a given matrix.
      Parameters:
      matrix - co-occurrence matrix to use for texture analysis
      Returns:
      TextureAnalysis object with all attributes computed
      Throws:
      MissingParameterException - if matrix is null
      Since:
      0.14.2
    • compute

      public static TextureAnalysis compute(IntegerImage image, int channelIndex) throws MissingParameterException
      For one channel of the argument image, create a TextureAnalysis operation with all attributes
      Parameters:
      image - the IntegerImage for which the texture analysis is being done
      channelIndex - zero-based index of channel to work on
      Returns:
      TextureAnalysis object with all attributes computed
      Throws:
      MissingParameterException - if matrix is null
      Since:
      0.14.2
    • getContrast

      public int getContrast()
      Returns the contrast value determined in process(). Also called inertia.
    • getCorrelation

      public double getCorrelation()
      Returns the correlation determined in process().
    • getDissimilarity

      public int getDissimilarity()
      Returns the dissimilarity value determined in process().
    • getEnergy

      public int getEnergy()
      Returns the energy value determined in process().
    • getEntropy

      public double getEntropy()
      Returns the entropy value determined in process().
    • getHomogeneity

      public double getHomogeneity()
      Returns the homogeneity value determined in process(). Also called inverse difference moment.
    • getSum

      public int getSum()
      Returns the sum of all entries in the matrix.
    • isSymmetrical

      public boolean isSymmetrical()
    • process

      public void process() throws MissingParameterException
      Run over the input matrix and determine contrast, energy, entropy and homogeneity of that matrix.
      Overrides:
      process in class Operation
      Throws:
      MissingParameterException - if no co-occurrence matrix was provided using setMatrix(net.sourceforge.jiu.color.data.CoOccurrenceMatrix)
    • setMatrix

      public void setMatrix(CoOccurrenceMatrix m)
      Sets the matrix to be used by this operation to the argument value.
      Parameters:
      m - the matrix for which the various properties will be computed