Class MemoryCoOccurrenceMatrix

java.lang.Object
net.sourceforge.jiu.color.data.MemoryCoOccurrenceMatrix
All Implemented Interfaces:
CoOccurrenceMatrix

public class MemoryCoOccurrenceMatrix extends Object implements CoOccurrenceMatrix
This class stores a co-occurrence matrix, a two-dimensional array of int counters. The dimension is given to the constructor which allocates a corresponding array.

Caveat

Does not (realistically) work with 16 bit channels because it allocates dimension times dimension int values, resulting in an attempt to allocate 16 GB with 16 bit images (dimension=65,536). TODO: Implement more sophisticated class, creating counters on-demand.
Author:
Marco Schmidt
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final int[]
     
    private final int
     
    private final int
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    MemoryCoOccurrenceMatrix(int dimension)
    Creates a new matrix that stores dimension times dimension int values in memory.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Sets all counters to zero.
    int
    Returns the dimension of this matrix.
    int
    getValue(int i, int j)
    Returns the matrix value at a given position.
    void
    incValue(int i, int j)
    Increases the counter for pair (i, j) by one.
    void
    setValue(int i, int j, int newValue)
    Sets the counter for pair (i, j) to a new value.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • dimension

      private final int dimension
    • dimSquare

      private final int dimSquare
    • data

      private final int[] data
  • Constructor Details

    • MemoryCoOccurrenceMatrix

      public MemoryCoOccurrenceMatrix(int dimension)
      Creates a new matrix that stores dimension times dimension int values in memory. Given that array index values are of type int, this limits dimension to about 46000 (sqrt(Integer.MAX_VALUE). In practice, dimension leads to dimension times dimenstion times 4 bytes being allocated, so that memory available to the JVM may become a decisive factor.
      Parameters:
      dimension - the matrix' dimension, which is both the number of rows and columns
  • Method Details