com.xinapse.filter
Class AbstractKernelFilter

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

public abstract class AbstractKernelFilter
extends java.lang.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, 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 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.


Nested Class Summary
 
Nested classes/interfaces inherited from interface com.xinapse.filter.SpatialFilter
SpatialFilter.SpecifierPanel
 
Field Summary
 
Fields inherited from interface com.xinapse.filter.SpatialFilter
N_DOTS
 
Method Summary
 MultiSliceImage filter(MultiSliceImage image)
          Filter a MultiSliceImage, returning a new image which is a filtered version of the supplied image.
 MultiSliceImage filter(MultiSliceImage image, MonitorWorker worker, boolean verbose)
          Filter a MultiSliceImage, returning a new image which is a filtered version of the supplied image.
static MultiSliceImage filter(SpatialFilter filter, MultiSliceImage image, MonitorWorker worker, boolean verbose)
          Filter a MultiSliceImage using the supplied filter, returning a new image which is a filtered version of the supplied image.
 void filterInPlace(MultiSliceImage image)
          Filter a MultiSliceImage "in place".
 void filterInPlace(MultiSliceImage image, MonitorWorker worker, boolean verbose)
          Filter a MultiSliceImage "in place".
 void filterInPlace(java.lang.Object pixels, PixelDataType dataType, int nCols, int nRows, int nSlices)
          Filter an array of pixel values "in place".
 void filterInPlace(java.lang.Object pixels, PixelDataType dataType, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose)
          Filter an array of pixel values "in place".
static void filterInPlace(SpatialFilter filter, MultiSliceImage image)
          Filter a MultiSliceImage "in place" using the supplied filter.
static void filterInPlace(SpatialFilter filter, MultiSliceImage image, MonitorWorker worker, boolean verbose)
          Filter an array of pixel values "in place".
static void filterInPlace(SpatialFilter filter, java.lang.Object pixels, PixelDataType dataType, int nCols, int nRows, int nSlices)
          Filter an array of pixel values "in place".
 void filterInPlaceBinary(BitSet pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose)
          Filter an array of binary pixel values "in place".
 void filterInPlaceByte(byte[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose)
          Filter an array of signed byte pixel values "in place".
 void filterInPlaceDouble(double[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose)
          Filter an array of double-precision pixel values "in place".
abstract  void filterInPlaceFloat(float[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose)
          Filter an array of floating-point pixel values "in place".
 void filterInPlaceInt(int[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose)
          Filter an array of signed int pixel values "in place".
 void filterInPlaceLong(long[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose)
          Filter an array of long pixel values "in place".
 void filterInPlaceShort(short[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose)
          Filter an array of signed short pixel values "in place".
 void filterInPlaceUByte(byte[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose)
          Filter an array of unsigned byte pixel values "in place".
 void filterInPlaceUInt(int[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose)
          Filter an array of unsigned int pixel values "in place".
 void filterInPlaceUShort(short[] pixels, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose)
          Filter an array of unsigned short pixel values "in place".
abstract  int getNKernelCols()
          Returns the number of columns in the filter kernel.
abstract  int getNKernelRows()
          Returns the number of rows in the filter kernel.
abstract  int getNKernelSlices()
          Returns the number of slices in the filter kernel.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

filter

public MultiSliceImage filter(MultiSliceImage image)
                       throws InvalidImageException
Description copied from interface: SpatialFilter
Filter a MultiSliceImage, 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.

filter

public MultiSliceImage filter(MultiSliceImage image,
                              MonitorWorker worker,
                              boolean verbose)
                       throws InvalidImageException,
                              CancelledException
Description copied from interface: SpatialFilter
Filter a MultiSliceImage, 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.
Throws:
InvalidImageException - if the supplied image cannot be filtered with this filter.
CancelledException - if the filter operation is cancelled by the user or programmatically.

filterInPlace

public void filterInPlace(MultiSliceImage image)
                   throws InvalidImageException
Description copied from interface: SpatialFilter
Filter a MultiSliceImage "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.

filterInPlace

public void filterInPlace(MultiSliceImage image,
                          MonitorWorker worker,
                          boolean verbose)
                   throws InvalidImageException,
                          CancelledException
Description copied from interface: SpatialFilter
Filter a MultiSliceImage "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.
CancelledException - if the filter operation is cancelled by the user or programmatically.

filterInPlace

public void filterInPlace(java.lang.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(java.lang.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 MultiSliceImage filter(SpatialFilter filter,
                                     MultiSliceImage image,
                                     MonitorWorker worker,
                                     boolean verbose)
                              throws InvalidImageException,
                                     CancelledException
Filter a MultiSliceImage 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.
Throws:
InvalidImageException - if the supplied image cannot be filtered with the filter.
CancelledException - if the filter operation is cancelled by the user or programmatically.

filterInPlace

public static void filterInPlace(SpatialFilter filter,
                                 MultiSliceImage image)
                          throws InvalidImageException
Filter a MultiSliceImage "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.

filterInPlace

public static void filterInPlace(SpatialFilter filter,
                                 java.lang.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,
                                 MultiSliceImage image,
                                 MonitorWorker worker,
                                 boolean verbose)
                          throws InvalidImageException,
                                 CancelledException
Filter an array of pixel values "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.


Copyright 2006-2011 Xinapse Systems Limited. All Rights Reserved.