- java.lang.Object
-
- ij.plugin.filter.RankFilters
-
- All Implemented Interfaces:
DialogListener
,ExtendedPlugInFilter
,PlugInFilter
public class RankFilters extends java.lang.Object implements ExtendedPlugInFilter, DialogListener
This plugin implements the Mean, Minimum, Maximum, Variance, Median, Remove Outliers, Remove NaNs and Despeckle commands.
-
-
Field Summary
Fields Modifier and Type Field Description static int
BRIGHT_OUTLIERS
static int
CLOSE
static int
DARK_OUTLIERS
static int
DESPECKLE
static int
MAX
static int
MEAN
static int
MEDIAN
static int
MIN
static int
OPEN
static int
OUTLIERS
static int
REMOVE_NAN
static int
TOP_HAT
static int
VARIANCE
-
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, NO_UNDO_RESET, PARALLELIZE_IMAGES, PARALLELIZE_STACKS, ROI_REQUIRED, SNAPSHOT, STACK_REQUIRED, SUPPORTS_MASKING
-
-
Constructor Summary
Constructors Constructor Description RankFilters()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description boolean
dialogItemChanged(GenericDialog gd, java.awt.AWTEvent e)
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 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', 'remove outliers', or top-hatvoid
rank(ImageProcessor ip, double radius, int filterType, int whichOutliers, float threshold)
Filters an image by any method except 'despecle' and top-hat (for 'despeckle', use 'median' and radius=1)void
rank(ImageProcessor ip, double radius, int filterType, int whichOutliers, float threshold, boolean lightBackground, boolean dontSubtract)
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 bar.int
setup(java.lang.String arg, ImagePlus imp)
Setup of the PlugInFilter.int
showDialog(ImagePlus imp, java.lang.String command, PlugInFilterRunner pfr)
This method is called aftersetup(arg, imp)
unless theDONE
flag has been set.
-
-
-
Field Detail
-
MEAN
public static final int MEAN
- See Also:
- Constant Field Values
-
MIN
public static final int MIN
- See Also:
- Constant Field Values
-
MAX
public static final int MAX
- See Also:
- Constant Field Values
-
VARIANCE
public static final int VARIANCE
- See Also:
- Constant Field Values
-
MEDIAN
public static final int MEDIAN
- See Also:
- Constant Field Values
-
OUTLIERS
public static final int OUTLIERS
- See Also:
- Constant Field Values
-
DESPECKLE
public static final int DESPECKLE
- See Also:
- Constant Field Values
-
REMOVE_NAN
public static final int REMOVE_NAN
- See Also:
- Constant Field Values
-
OPEN
public static final int OPEN
- See Also:
- Constant Field Values
-
CLOSE
public static final int CLOSE
- See Also:
- Constant Field Values
-
TOP_HAT
public static final int TOP_HAT
- See Also:
- Constant Field Values
-
BRIGHT_OUTLIERS
public static final int BRIGHT_OUTLIERS
- See Also:
- Constant Field Values
-
DARK_OUTLIERS
public static final int DARK_OUTLIERS
- See Also:
- Constant Field Values
-
-
Method Detail
-
setup
public int setup(java.lang.String arg, ImagePlus imp)
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
public int showDialog(ImagePlus imp, java.lang.String command, PlugInFilterRunner pfr)
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
public boolean dialogItemChanged(GenericDialog gd, java.awt.AWTEvent e)
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
public void run(ImageProcessor ip)
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
public void rank(ImageProcessor ip, double radius, int filterType)
Filters an image by any method except 'despecle', 'remove outliers', or top-hat- 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' and top-hat (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
-
rank
public void rank(ImageProcessor ip, double radius, int filterType, int whichOutliers, float threshold, boolean lightBackground, boolean dontSubtract)
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' filterlightBackground
- for top-hat background subtraction, background is light, not darkdontSubtract
- fpr top-hat filter, performs a grayscale open or close instead of top-hat, where the result of grayscale open/close is subtracted from the original.
-
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. Setting nPasses=0 suppresses the progress bar- Specified by:
setNPasses
in interfaceExtendedPlugInFilter
-
-