public class RankFilters extends java.lang.Object implements ExtendedPlugInFilter, DialogListener
Modifier and Type | Field and 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 |
VARIANCE |
KEEP_PREVIEW
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 and Description |
---|
RankFilters() |
Modifier and Type | Method and 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 array
|
void |
makeKernel(double radius)
Deprecated.
Not needed any more, use the rank(ip, ...) method, which creates the kernel
|
protected 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 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 after
setup(arg, imp) unless the
DONE flag has been set. |
public static final int MEAN
public static final int MIN
public static final int MAX
public static final int VARIANCE
public static final int MEDIAN
public static final int OUTLIERS
public static final int DESPECKLE
public static final int REMOVE_NAN
public static final int OPEN
public static final int CLOSE
public static final int BRIGHT_OUTLIERS
public static final int DARK_OUTLIERS
public int setup(java.lang.String arg, ImagePlus imp)
setup
in interface PlugInFilter
arg
- Defines type of filter operationimp
- The ImagePlus to be processedpublic int showDialog(ImagePlus imp, java.lang.String command, PlugInFilterRunner pfr)
ExtendedPlugInFilter
setup(arg, imp)
unless the
DONE
flag has been set.showDialog
in interface ExtendedPlugInFilter
imp
- The active image already passed in the
setup(arg, imp)
call. It will be null, however, if
the NO_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 by addPreviewCheckbox
to enable preview by calling the run(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 by run(ip)
.PlugInFilter
and
ExtendedPlugInFilter
.public boolean dialogItemChanged(GenericDialog gd, java.awt.AWTEvent e)
DialogListener
dialogItemChanged
in interface DialogListener
gd
- A reference to the GenericDialog.e
- The event that has been generated by the user action in the dialog.
Note that e
is null
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.public void run(ImageProcessor ip)
PlugInFilter
PlugInFilter.DOES_STACKS
flag was set, it is called for each slice in
a stack. With PlugInFilter.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 the PlugInFilter.NO_IMAGE_REQUIRED
flag
and not the PlugInFilter.DONE
flag, run(ip) is called once with the
argument null
.run
in interface PlugInFilter
public void rank(ImageProcessor ip, double radius, int filterType)
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.public void rank(ImageProcessor ip, double radius, int filterType, int whichOutliers, float threshold)
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' filterpublic static final float findNthLowestNumber(float[] buf, int bufLength, int n)
buf
- The input array. Only values 0 ... bufLength are read. buf
will be modified.bufLength
- Number of values in buf
that should be readn
- which value should be found; n=0 for the lowest, n=bufLength-1 for the highestpublic void makeKernel(double radius)
protected int[] makeLineRadii(double radius)
radius
- Radius = 0.5 includes the 4 neighbors of the pixel in the center,
radius = 1 corresponds to a 3x3 kernel size.public void setNPasses(int nPasses)
setNPasses
in interface ExtendedPlugInFilter