Class NaiveHistogram3D

java.lang.Object
net.sourceforge.jiu.color.data.NaiveHistogram3D
All Implemented Interfaces:
Histogram3D

public class NaiveHistogram3D extends Object implements Histogram3D
A class for a three-dimensional histogram that allocates one int value per counter at construction time. This means that a histogram with 8 bits for each channel will have 28 + 8 + 8 = 224 = 16,777,216 int values, making it 64 MB large.
Author:
Marco Schmidt
  • Field Summary

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

    Constructors
    Constructor
    Description
    NaiveHistogram3D(int numValues)
    Creates a histogram with the same number of values for all three dimensions.
    NaiveHistogram3D(int numValuesLevel1, int numValuesLevel2, int numValuesLevel3)
    Creates a histogram
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Sets all counters to zero.
    int
    getEntry(int index1, int index2, int index3)
    Returns the counter value of (index1, index2, index3).
    int
    getMaxValue(int index)
    Returns the maximum index value for one of the three indexes.
    int
    Returns the number of used entries (those entries with a counter value larger than zero).
    void
    increaseEntry(int index1, int index2, int index3)
    Increases the counter value of (index1, index2, index3) by one.
    void
    setEntry(int index1, int index2, int index3, int newValue)
    Sets the counter value of (index1, index2, index3) to newValue.

    Methods inherited from class java.lang.Object

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

    • data

      private int[][][] data
    • values

      private int[] values
  • Constructor Details

  • Method Details

    • clear

      public void clear()
      Sets all counters to zero.
      Specified by:
      clear in interface Histogram3D
    • getEntry

      public int getEntry(int index1, int index2, int index3) throws IllegalArgumentException
      Returns the counter value of (index1, index2, index3).
      Specified by:
      getEntry in interface Histogram3D
      Parameters:
      index1 - first of the three values forming the threedimensional index
      index2 - second of the three values forming the threedimensional index
      index3 - three of the three values forming the threedimensional index
      Returns:
      the counter value of the desired index
      Throws:
      IllegalArgumentException - could be (read: need not necessarily) be thrown if the index formed by the arguments is invalid
    • getMaxValue

      public int getMaxValue(int index) throws IllegalArgumentException
      Description copied from interface: Histogram3D
      Returns the maximum index value for one of the three indexes.
      Specified by:
      getMaxValue in interface Histogram3D
      Throws:
      IllegalArgumentException - if the index formed by the arguments is invalid
    • getNumUsedEntries

      public int getNumUsedEntries()
      Returns the number of used entries (those entries with a counter value larger than zero).
      Specified by:
      getNumUsedEntries in interface Histogram3D
      Returns:
      number of non-zero counter values
    • increaseEntry

      public void increaseEntry(int index1, int index2, int index3) throws IllegalArgumentException
      Increases the counter value of (index1, index2, index3) by one. This method can easily be implemented by the one-liner setEntry(index1, index2, index3, getEntry(index1, index2, index3) + 1); However, this method is expected to be faster in some contexts.
      Specified by:
      increaseEntry in interface Histogram3D
      Parameters:
      index1 - first of the three values forming the threedimensional index
      index2 - second of the three values forming the threedimensional index
      index3 - three of the three values forming the threedimensional index
      Throws:
      IllegalArgumentException - could be (read: need not necessarily) be thrown if the index formed by the arguments is invalid
    • setEntry

      public void setEntry(int index1, int index2, int index3, int newValue) throws IllegalArgumentException
      Sets the counter value of (index1, index2, index3) to newValue.
      Specified by:
      setEntry in interface Histogram3D
      Parameters:
      index1 - first of the three values forming the threedimensional index
      index2 - second of the three values forming the threedimensional index
      index3 - three of the three values forming the threedimensional index
      newValue - the counter value that is assigned to the argument index
      Throws:
      IllegalArgumentException - could be (read: need not necessarily) be thrown if the index formed by the first three arguments is invalid