Package ij.plugin.filter
Class RankFilters
java.lang.Object
ij.plugin.filter.RankFilters
- All Implemented Interfaces:
DialogListener
,ExtendedPlugInFilter
,PlugInFilter
This plugin implements the Mean, Minimum, Maximum, Variance, Median, Open Maxima, Close Maxima,
Remove Outliers, Remove NaNs and Despeckle commands.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
Fields inherited from interface ij.plugin.filter.ExtendedPlugInFilter
KEEP_PREVIEW
Fields inherited from interface ij.plugin.filter.PlugInFilter
CONVERT_TO_FLOAT, DOES_16, DOES_32, DOES_8C, DOES_8G, DOES_ALL, DOES_RGB, DOES_STACKS, DONE, FINAL_PROCESSING, KEEP_THRESHOLD, NO_CHANGES, NO_IMAGE_REQUIRED, NO_UNDO, PARALLELIZE_IMAGES, PARALLELIZE_STACKS, ROI_REQUIRED, SNAPSHOT, STACK_REQUIRED, SUPPORTS_MASKING
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
This method is invoked by a Generic Dialog if any of the inputs have changed (CANCEL does not trigger it; OK and running the dialog from a macro only trigger the first DialogListener added to a GenericDialog).static final float
findNthLowestNumber
(float[] buf, int bufLength, int n) Find the n-th lowest number in part of an arrayvoid
makeKernel
(double radius) Deprecated.Not needed any more, use the rank(ip, ...) method, which creates the kernelprotected int[]
makeLineRadii
(double radius) Create a circular kernel (structuring element) of a given radius.void
rank
(ImageProcessor ip, double radius, int filterType) Filters an image by any method except 'despecle' or 'remove outliers'.void
rank
(ImageProcessor ip, double radius, int filterType, int whichOutliers, float threshold) Filters an image by any method except 'despecle' (for 'despeckle', use 'median' and radius=1)void
run
(ImageProcessor ip) Filters use this method to process the image.void
setNPasses
(int nPasses) This method is called by ImageJ to set the number of calls to run(ip) corresponding to 100% of the progress barint
Setup of the PlugInFilter.int
showDialog
(ImagePlus imp, String command, PlugInFilterRunner pfr) This method is called aftersetup(arg, imp)
unless theDONE
flag has been set.
-
Field Details
-
MEAN
public static final int MEAN- See Also:
-
MIN
public static final int MIN- See Also:
-
MAX
public static final int MAX- See Also:
-
VARIANCE
public static final int VARIANCE- See Also:
-
MEDIAN
public static final int MEDIAN- See Also:
-
OUTLIERS
public static final int OUTLIERS- See Also:
-
DESPECKLE
public static final int DESPECKLE- See Also:
-
REMOVE_NAN
public static final int REMOVE_NAN- See Also:
-
OPEN
public static final int OPEN- See Also:
-
CLOSE
public static final int CLOSE- See Also:
-
BRIGHT_OUTLIERS
public static final int BRIGHT_OUTLIERS- See Also:
-
DARK_OUTLIERS
public static final int DARK_OUTLIERS- See Also:
-
-
Constructor Details
-
RankFilters
public RankFilters()
-
-
Method Details
-
setup
Setup of the PlugInFilter. Returns the flags specifying the capabilities and needs of the filter.- Specified by:
setup
in interfacePlugInFilter
- Parameters:
arg
- Defines type of filter operationimp
- The ImagePlus to be processed- Returns:
- Flags specifying further action of the PlugInFilterRunner
-
showDialog
Description copied from interface:ExtendedPlugInFilter
This method is called aftersetup(arg, imp)
unless theDONE
flag has been set.- Specified by:
showDialog
in interfaceExtendedPlugInFilter
- Parameters:
imp
- The active image already passed in thesetup(arg, imp)
call. It will be null, however, if theNO_IMAGE_REQUIRED
flag has been set.command
- The command that has led to the invocation of the plugin-filter. Useful as a title for the dialog.pfr
- The PlugInFilterRunner calling this plugin-filter. It can be passed to a GenericDialog byaddPreviewCheckbox
to enable preview by calling therun(ip)
method of this plugin-filter.pfr
can be also used later for calling back the PlugInFilterRunner, e.g., to obtain the slice number currently processed byrun(ip)
.- Returns:
- The method should return a combination (bitwise OR)
of the flags specified in interfaces
PlugInFilter
andExtendedPlugInFilter
.
-
dialogItemChanged
Description copied from interface:DialogListener
This method is invoked by a Generic Dialog if any of the inputs have changed (CANCEL does not trigger it; OK and running the dialog from a macro only trigger the first DialogListener added to a GenericDialog).- Specified by:
dialogItemChanged
in interfaceDialogListener
- Parameters:
gd
- A reference to the GenericDialog.e
- The event that has been generated by the user action in the dialog. Note thate
isnull
if the dialogItemChanged method is called after the user has pressed the OK button or if the GenericDialog has read its parameters from a macro.- Returns:
- Should be true if the dialog input is valid. False disables the OK button and preview (if any).
-
run
Description copied from interface:PlugInFilter
Filters use this method to process the image. If thePlugInFilter.DOES_STACKS
flag was set, it is called for each slice in a stack. WithPlugInFilter.CONVERT_TO_FLOAT
, the filter is called with the image data converted to a FloatProcessor (3 times per image for RGB images). ImageJ will lock the image before calling this method and unlock it when the filter is finished. For PlugInFilters specifying thePlugInFilter.NO_IMAGE_REQUIRED
flag and not thePlugInFilter.DONE
flag, run(ip) is called once with the argumentnull
.- Specified by:
run
in interfacePlugInFilter
-
rank
Filters an image by any method except 'despecle' or 'remove outliers'.- Parameters:
ip
- The ImageProcessor that should be filtered (all 4 types supported)radius
- Determines the kernel size, see Process>Filters>Show Circular Masks. Must not be negative. No checking is done for large values that would lead to excessive computing times.filterType
- May be MEAN, MIN, MAX, VARIANCE, or MEDIAN.
-
rank
public void rank(ImageProcessor ip, double radius, int filterType, int whichOutliers, float threshold) Filters an image by any method except 'despecle' (for 'despeckle', use 'median' and radius=1)- Parameters:
ip
- The image subject to filteringradius
- The kernel radiusfilterType
- as defined above; DESPECKLE is not a valid type here; use median and a radius of 1.0 insteadwhichOutliers
- BRIGHT_OUTLIERS or DARK_OUTLIERS for 'outliers' filterthreshold
- Threshold for 'outliers' filter
-
findNthLowestNumber
public static final float findNthLowestNumber(float[] buf, int bufLength, int n) Find the n-th lowest number in part of an array- Parameters:
buf
- The input array. Only values 0 ... bufLength are read.buf
will be modified.bufLength
- Number of values inbuf
that should be readn
- which value should be found; n=0 for the lowest, n=bufLength-1 for the highest- Returns:
- the value
-
makeKernel
public void makeKernel(double radius) Deprecated.Not needed any more, use the rank(ip, ...) method, which creates the kernel -
makeLineRadii
protected int[] makeLineRadii(double radius) Create a circular kernel (structuring element) of a given radius.- Parameters:
radius
- Radius = 0.5 includes the 4 neighbors of the pixel in the center, radius = 1 corresponds to a 3x3 kernel size.- Returns:
- the circular kernel The output is an array that gives the length of each line of the structuring element (kernel) to the left (negative) and to the right (positive): [0] left in line 0, [1] right in line 0, [2] left in line 2, ... The maximum (absolute) value should be kernelRadius. Array elements at the end: length-2: nPoints, number of pixels in the kernel area length-1: kernelRadius in x direction (kernel width is 2*kernelRadius+1) Kernel height can be calculated as (array length - 1)/2 (odd number); Kernel radius in y direction is kernel height/2 (truncating integer division). Note that kernel width and height are the same for the circular kernels used here, but treated separately for the case of future extensions with non-circular kernels.
-
setNPasses
public void setNPasses(int nPasses) This method is called by ImageJ to set the number of calls to run(ip) corresponding to 100% of the progress bar- Specified by:
setNPasses
in interfaceExtendedPlugInFilter
-