Class 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[][][] data  
      private int[] values  
    • 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
    • Field Detail

      • data

        private int[][][] data
      • values

        private int[] values
    • Method Detail

      • 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
      • 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