Class LookupTableOperation

  • Direct Known Subclasses:
    Brightness, Contrast, EqualizeHistogram, GammaCorrection, NormalizeHistogram

    public abstract class LookupTableOperation
    extends ImageToImageOperation
    An operation that replaces samples with values taken from a lookup table. Operations where each pixel is treated independently from its neighbors and where a pixel value is always mapped to the same new pixel value can be implemented this way.
    Since:
    0.6.0
    Author:
    Marco Schmidt
    • Field Detail

      • intTables

        private int[][] intTables
      • numTables

        private int numTables
    • Constructor Detail

      • LookupTableOperation

        public LookupTableOperation()
        Creates a LookupTableOperation for one lookup table.
      • LookupTableOperation

        public LookupTableOperation​(int numTables)
        Creates an object of this class, calling the super constructor with two null arguments and allocates space for the argument number of lookup tables.
        Parameters:
        numTables - number of tables to be used in this operation
    • Method Detail

      • getNumTables

        public int getNumTables()
        Returns the number of tables in this operation.
        Returns:
        number of tables
      • getTable

        public int[] getTable​(int channelIndex)
        Returns one of the internal int lookup tables.
        Parameters:
        channelIndex - the zero-based index of the table to be returned; from 0 to getNumTables() - 1
        Returns:
        the channelIndex'th table
      • process

        private void process​(IntegerImage in,
                             IntegerImage out,
                             int CHANNEL_INDEX,
                             int tableIndex,
                             int processedItems,
                             int TOTAL_ITEMS)
      • setNumTables

        public void setNumTables​(int numberOfTables)
        Resets the number of tables to be used in this operation to the argument and drops all actual table data initialized so far. After a call to this method, getTable(int) will return null as long as no new table data is provided via setTable(int, int[]) or setTables(int[]).
        Parameters:
        numberOfTables - the new number of tables for this operation, must be 1 or larger
        Throws:
        IllegalArgumentException - if the number is zero or smaller
      • setTable

        public void setTable​(int channelIndex,
                             int[] tableData)
        Provides a new lookup table for one of the channels.
        Parameters:
        channelIndex - the index of the channel for which a table is provided; must be at least 0 and smaller than getNumTables()
        tableData - the actual table to be used for lookup
        Throws:
        IllegalArgumentException - if the channel index is not in the valid interval (see above)
      • setTables

        public void setTables​(int[] tableData)
        Sets the tables for all channels to the argument table. Useful when the same table can be used for all channels.
        Parameters:
        tableData - the data that will be used as lookup table for all channels