Class TextureAnalysis
java.lang.Object
net.sourceforge.jiu.ops.Operation
net.sourceforge.jiu.color.analysis.TextureAnalysis
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:
- Article Suchen ohne Worte by Henning Müller in German computer magazine c't 15 / 2001, p. 162ff.
- GLCM Texture: A Tutorial by Mryka Hall-Beyer.
- Texture Mapping of Neurological Magnetic Resonance Images by J.H.P. Burrill
- Since:
- 0.7.0
- Author:
- Marco Schmidt
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate int
private double
private int
private int
private double
private double
private CoOccurrenceMatrix
private int
private boolean
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic TextureAnalysis
compute
(CoOccurrenceMatrix matrix) Create a TextureAnalysis operation with the results computed from a given matrix.static TextureAnalysis
compute
(IntegerImage image, int channelIndex) For one channel of the argument image, create a TextureAnalysis operation with all attributesint
Returns the contrast value determined inprocess()
.double
Returns the correlation determined inprocess()
.int
Returns the dissimilarity value determined inprocess()
.int
Returns the energy value determined inprocess()
.double
Returns the entropy value determined inprocess()
.double
Returns the homogeneity value determined inprocess()
.int
getSum()
Returns the sum of all entries in the matrix.boolean
void
process()
Run over the input matrix and determine contrast, energy, entropy and homogeneity of that matrix.void
Sets the matrix to be used by this operation to the argument value.Methods inherited from class net.sourceforge.jiu.ops.Operation
addProgressListener, addProgressListeners, getAbort, removeProgressListener, setAbort, setProgress, setProgress
-
Field Details
-
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
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 donechannelIndex
- 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 inprocess()
. Also called inertia. -
getCorrelation
public double getCorrelation()Returns the correlation determined inprocess()
. -
getDissimilarity
public int getDissimilarity()Returns the dissimilarity value determined inprocess()
. -
getEnergy
public int getEnergy()Returns the energy value determined inprocess()
. -
getEntropy
public double getEntropy()Returns the entropy value determined inprocess()
. -
getHomogeneity
public double getHomogeneity()Returns the homogeneity value determined inprocess()
. Also called inverse difference moment. -
getSum
public int getSum()Returns the sum of all entries in the matrix. -
isSymmetrical
public boolean isSymmetrical() -
process
Run over the input matrix and determine contrast, energy, entropy and homogeneity of that matrix.- Overrides:
process
in classOperation
- Throws:
MissingParameterException
- if no co-occurrence matrix was provided usingsetMatrix(net.sourceforge.jiu.color.data.CoOccurrenceMatrix)
-
setMatrix
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
-