Class AbstractKernelFilter

java.lang.Object
com.xinapse.filter.AbstractKernelFilter
All Implemented Interfaces:
SpatialFilter
Direct Known Subclasses:
FixedWeightsKernelFilter, MedianFilter, MorphologicalOperator

public abstract class AbstractKernelFilter extends Object implements SpatialFilter
This class provides a skeletal implementation of the SpatialFilter interface, to minimize the effort required to implement this interface.

To implement a SpatialFilter, the programmer needs only to extend this class and provide an implementation for the filterInPlaceFloat(float[], int, int, int, com.xinapse.util.MonitorWorker, boolean), getNKernelCols(), getNKernelRows() and getNKernelSlices() methods. Filtering of all other pixel data types will then be performed with this class's default implementations for the other filtering methods. However, these methods are quite inefficient, since they simply coerce the pixel values to float, perform the filtering operation using filterInPlaceFloat(float[], int, int, int, com.xinapse.util.MonitorWorker, boolean) method, and then coerce the result back to the original data type. The programmer may therefore choose to implement more efficient methods for the specific data types that they know this filter will be used with. Furthermore, if the default implementations are used, filtering of double-precision, integer and long data types may suffer from lack of precision.

  • Field Details

  • Method Details

    • filter

      Description copied from interface: SpatialFilter
      Filter a ReadableImage, returning a new image which is a filtered version of the supplied image.
      Specified by:
      filter in interface SpatialFilter
      Parameters:
      image - the image to be filtered.
      Returns:
      a filtered version of the supplied image.
      Throws:
      InvalidImageException - if the supplied image cannot be filtered with this filter.
      IOException - if an I/O error occurs.
    • filter

      public WritableImage filter(ReadableImage image, MonitorWorker worker, boolean verbose) throws InvalidImageException, IOException, CancelledException
      Description copied from interface: SpatialFilter
      Filter a ReadableImage, returning a new image which is a filtered version of the supplied image.
      Specified by:
      filter in interface SpatialFilter
      Parameters:
      image - the image to be filtered.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Returns:
      a filtered version of the supplied image.
      Throws:
      InvalidImageException - if the supplied image cannot be filtered with this filter.
      IOException - if an I/O error occurs.
      CancelledException - if the filter operation is cancelled by the user or programmatically.
    • filterInPlace

      public void filterInPlace(WritableImage image) throws InvalidImageException, IOException
      Description copied from interface: SpatialFilter
      Filter a WritableImage "in place".
      Specified by:
      filterInPlace in interface SpatialFilter
      Parameters:
      image - the image to be filtered.
      Throws:
      InvalidImageException - if the supplied image cannot be filtered with this filter.
      IOException - if an I/O error occurs.
    • filterInPlace

      public void filterInPlace(WritableImage image, MonitorWorker worker, boolean verbose) throws InvalidImageException, IOException, CancelledException
      Description copied from interface: SpatialFilter
      Filter a WritableImage "in place".
      Specified by:
      filterInPlace in interface SpatialFilter
      Parameters:
      image - the image to be filtered.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Throws:
      InvalidImageException - if the supplied image cannot be filtered with this filter.
      IOException - if an I/O error occurs.
      CancelledException - if the filter operation is cancelled by the user or programmatically.
    • filterInPlace

      public void filterInPlace(Object pixels, PixelDataType dataType, int nCols, int nRows, int nSlices)
      Description copied from interface: SpatialFilter
      Filter an array of pixel values "in place".
      Specified by:
      filterInPlace in interface SpatialFilter
      Parameters:
      pixels - the array of image pixel values.
      dataType - the PixelDataType of the pixels.
      nCols - the number of image columns.
      nRows - the number of image rows.
      nSlices - the number of image slices.
    • filterInPlace

      public void filterInPlace(Object pixels, PixelDataType dataType, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose) throws CancelledException
      Description copied from interface: SpatialFilter
      Filter an array of pixel values "in place".
      Specified by:
      filterInPlace in interface SpatialFilter
      Parameters:
      pixels - the array of image pixel values.
      dataType - the PixelDataType of the pixels.
      nCols - the number of image columns.
      nRows - the number of image rows.
      nSlices - the number of image slices.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Throws:
      CancelledException - if the filter operation is cancelled by the user or programmatically.
    • filterInPlaceFloat

      public abstract void filterInPlaceFloat(float[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose) throws CancelledException
      Filter an array of floating-point pixel values "in place".
      Parameters:
      pixels - the array of image pixel values.
      nCols - the number of image columns
      nRows - the number of image rows.
      nSlices - the number of image slices.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Throws:
      CancelledException - if the filter operation is cancelled by the user or programmatically.
    • getNKernelCols

      public abstract int getNKernelCols()
      Returns the number of columns in the filter kernel.
      Returns:
      the number of columns in the filter kernel.
    • getNKernelRows

      public abstract int getNKernelRows()
      Returns the number of rows in the filter kernel.
      Returns:
      the number of rows in the filter kernel.
    • getNKernelSlices

      public abstract int getNKernelSlices()
      Returns the number of slices in the filter kernel.
      Returns:
      the number of slices in the filter kernel.
    • filterInPlaceBinary

      public void filterInPlaceBinary(BitSet pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose) throws CancelledException
      Filter an array of binary pixel values "in place". This default implementation should be overridden by AbstractKernelFilters that are interested in a more efficient implementation for PixelDataType.BINARY images.
      Parameters:
      pixels - the array of image pixel values.
      nCols - the number of image columns
      nRows - the number of image rows.
      nSlices - the number of image slices.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Throws:
      CancelledException - if the filter operation is cancelled by the user or programmatically.
    • filterInPlaceByte

      public void filterInPlaceByte(byte[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose) throws CancelledException
      Filter an array of signed byte pixel values "in place". This default implementation should be overridden by SpatialFilters that are interested in a more efficient implementation for PixelDataType.BYTE images.
      Parameters:
      pixels - the array of image pixel values.
      nCols - the number of image columns
      nRows - the number of image rows.
      nSlices - the number of image slices.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Throws:
      CancelledException - if the filter operation is cancelled by the user or programmatically.
    • filterInPlaceUByte

      public void filterInPlaceUByte(byte[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose) throws CancelledException
      Filter an array of unsigned byte pixel values "in place". This default implementation should be overridden by SpatialFilters that are interested in a more efficient implementation for PixelDataType.UBYTE images.
      Parameters:
      pixels - the array of image pixel values.
      nCols - the number of image columns
      nRows - the number of image rows.
      nSlices - the number of image slices.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Throws:
      CancelledException - if the filter operation is cancelled by the user or programmatically.
    • filterInPlaceShort

      public void filterInPlaceShort(short[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose) throws CancelledException
      Filter an array of signed short pixel values "in place". This default implementation should be overridden by SpatialFilters that are interested in a more efficient implementation for PixelDataType.SHORT images.
      Parameters:
      pixels - the array of image pixel values.
      nCols - the number of image columns
      nRows - the number of image rows.
      nSlices - the number of image slices.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Throws:
      CancelledException - if the filter operation is cancelled by the user or programmatically.
    • filterInPlaceUShort

      public void filterInPlaceUShort(short[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose) throws CancelledException
      Filter an array of unsigned short pixel values "in place". This default implementation should be overridden by SpatialFilters that are interested in a more efficient implementation for PixelDataType.USHORT images.
      Parameters:
      pixels - the array of image pixel values.
      nCols - the number of image columns
      nRows - the number of image rows.
      nSlices - the number of image slices.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Throws:
      CancelledException - if the filter operation is cancelled by the user or programmatically.
    • filterInPlaceInt

      public void filterInPlaceInt(int[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose) throws CancelledException
      Filter an array of signed int pixel values "in place". This default implementation should be overridden by SpatialFilters that are interested in a more efficient implementation for PixelDataType.INT images.
      Parameters:
      pixels - the array of image pixel values.
      nCols - the number of image columns
      nRows - the number of image rows.
      nSlices - the number of image slices.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Throws:
      CancelledException - if the filter operation is cancelled by the user or programmatically.
    • filterInPlaceUInt

      public void filterInPlaceUInt(int[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose) throws CancelledException
      Filter an array of unsigned int pixel values "in place". This default implementation should be overridden by SpatialFilters that are interested in a more efficient implementation for PixelDataType.UINT images.
      Parameters:
      pixels - the array of image pixel values.
      nCols - the number of image columns
      nRows - the number of image rows.
      nSlices - the number of image slices.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Throws:
      CancelledException - if the filter operation is cancelled by the user or programmatically.
    • filterInPlaceLong

      public void filterInPlaceLong(long[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose) throws CancelledException
      Filter an array of long pixel values "in place". This default implementation should be overridden by SpatialFilters that are interested in a more efficient implementation for PixelDataType.LONG images.
      Parameters:
      pixels - the array of image pixel values.
      nCols - the number of image columns
      nRows - the number of image rows.
      nSlices - the number of image slices.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Throws:
      CancelledException - if the filter operation is cancelled by the user or programmatically.
    • filterInPlaceDouble

      public void filterInPlaceDouble(double[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose) throws CancelledException
      Filter an array of double-precision pixel values "in place". This default implementation should be overridden by SpatialFilters that are interested in a more efficient implementation for PixelDataType.DOUBLE images.
      Parameters:
      pixels - the array of image pixel values.
      nCols - the number of image columns
      nRows - the number of image rows.
      nSlices - the number of image slices.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Throws:
      CancelledException - if the filter operation is cancelled by the user or programmatically.
    • filter

      public static WritableImage filter(SpatialFilter filter, ReadableImage image, MonitorWorker worker, boolean verbose) throws InvalidImageException, IOException, CancelledException
      Filter a ReadableImage using the supplied filter, returning a new image which is a filtered version of the supplied image.
      Parameters:
      filter - the filter to be applied.
      image - the image to be filtered.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Returns:
      a new image which is a filtered version of the supplied image.
      Throws:
      InvalidImageException - if the supplied image cannot be filtered with the filter.
      IOException - if an I/O error occurs.
      CancelledException - if the filter operation is cancelled by the user or programmatically.
    • filterInPlace

      public static void filterInPlace(SpatialFilter filter, WritableImage image) throws InvalidImageException, IOException
      Filter a WritableImage "in place" using the supplied filter.
      Parameters:
      filter - the filter to be applied.
      image - the image to be filtered.
      Throws:
      InvalidImageException - if the supplied image cannot be filtered with the filter.
      IOException - if an I/O error occurs.
    • filterInPlace

      public static void filterInPlace(SpatialFilter filter, Object pixels, PixelDataType dataType, int nCols, int nRows, int nSlices)
      Filter an array of pixel values "in place".
      Parameters:
      filter - the filter to be applied.
      pixels - the array of image pixel values.
      dataType - the PixelDataType of the pixels.
      nCols - the number of image columns.
      nRows - the number of image rows.
      nSlices - the number of image slices.
    • filterInPlace

      public static void filterInPlace(SpatialFilter filter, WritableImage image, MonitorWorker worker, boolean verbose) throws InvalidImageException, IOException, CancelledException
      Filter an image "in place".
      Parameters:
      filter - the filter to be applied.
      image - the image to be filtered.
      worker - the MonitorWorker that may be used to cancel the filter operation.
      verbose - whether verbose reporting to System.out is turned on.
      Throws:
      InvalidImageException - if the supplied image cannot be filtered with the filter.
      CancelledException - if the filter operation is cancelled by the user or programmatically.
      IOException - if an I/O error occurs.