Class AbstractKernelFilter
- All Implemented Interfaces:
SpatialFilter
- Direct Known Subclasses:
FixedWeightsKernelFilter
,MedianFilter
,MorphologicalOperator
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.
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.xinapse.filter.SpatialFilter
SpatialFilter.SpecifierPanel
-
Field Summary
Modifier and TypeFieldDescriptionprotected final BoundaryCondition
The boundary condition for the filter.Fields inherited from interface com.xinapse.filter.SpatialFilter
N_DOTS
-
Method Summary
Modifier and TypeMethodDescriptionstatic WritableImage
filter
(SpatialFilter filter, ReadableImage image, MonitorWorker worker, boolean verbose) Filter a ReadableImage using the supplied filter, returning a new image which is a filtered version of the supplied image.filter
(ReadableImage image) Filter a ReadableImage, returning a new image which is a filtered version of the supplied image.filter
(ReadableImage image, MonitorWorker worker, boolean verbose) Filter a ReadableImage, returning a new image which is a filtered version of the supplied image.static void
filterInPlace
(SpatialFilter filter, WritableImage image) Filter a WritableImage "in place" using the supplied filter.static void
filterInPlace
(SpatialFilter filter, WritableImage image, MonitorWorker worker, boolean verbose) Filter an image "in place".static void
filterInPlace
(SpatialFilter filter, Object pixels, PixelDataType dataType, int nCols, int nRows, int nSlices) Filter an array of pixel values "in place".void
filterInPlace
(WritableImage image) Filter a WritableImage "in place".void
filterInPlace
(WritableImage image, MonitorWorker worker, boolean verbose) Filter a WritableImage "in place".void
filterInPlace
(Object pixels, PixelDataType dataType, int nCols, int nRows, int nSlices) Filter an array of pixel values "in place".void
filterInPlace
(Object pixels, PixelDataType dataType, int nCols, int nRows, int nSlices, MonitorWorker worker, boolean verbose) 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
Returns the number of columns in the filter kernel.abstract int
Returns the number of rows in the filter kernel.abstract int
Returns the number of slices in the filter kernel.
-
Field Details
-
bc
The boundary condition for the filter.
-
-
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 interfaceSpatialFilter
- 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 interfaceSpatialFilter
- 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
Description copied from interface:SpatialFilter
Filter a WritableImage "in place".- Specified by:
filterInPlace
in interfaceSpatialFilter
- 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 interfaceSpatialFilter
- 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
Description copied from interface:SpatialFilter
Filter an array of pixel values "in place".- Specified by:
filterInPlace
in interfaceSpatialFilter
- 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 interfaceSpatialFilter
- 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 columnsnRows
- 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 columnsnRows
- 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 columnsnRows
- 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 columnsnRows
- 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 columnsnRows
- 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 columnsnRows
- 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 columnsnRows
- 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 columnsnRows
- 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 columnsnRows
- 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 columnsnRows
- 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.
-