Module ij

Class 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 Details

  • Constructor Details

  • Method Details

    • 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 interface PlugInFilter
      arg - Defines type of filter operation
      imp - The ImagePlus to be processed
      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 after setup(arg, imp) unless the DONE flag has been set.
      Specified by:
      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).
      The method should return a combination (bitwise OR) of the flags specified in interfaces PlugInFilter and ExtendedPlugInFilter.
    • 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 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.
      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 the 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.
      Specified by:
      run in interface PlugInFilter
    • rank

      public void rank​(ImageProcessor ip, double radius, int filterType)
      Filters an image by any method except 'despecle', 'remove outliers', or top-hat
      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)
      ip - The image subject to filtering
      radius - The kernel radius
      filterType - as defined above; DESPECKLE is not a valid type here; use median and a radius of 1.0 instead
      whichOutliers - BRIGHT_OUTLIERS or DARK_OUTLIERS for 'outliers' filter
      threshold - 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)
      ip - The image subject to filtering
      radius - The kernel radius
      filterType - as defined above; DESPECKLE is not a valid type here; use median and a radius of 1.0 instead
      whichOutliers - BRIGHT_OUTLIERS or DARK_OUTLIERS for 'outliers' filter
      threshold - Threshold for 'outliers' filter
      lightBackground - for top-hat background subtraction, background is light, not dark
      dontSubtract - 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
      buf - The input array. Only values 0 ... bufLength are read. buf will be modified.
      bufLength - Number of values in buf that should be read
      n - which value should be found; n=0 for the lowest, n=bufLength-1 for the highest
      the value
    • makeKernel

      public void makeKernel​(double radius)
      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.
      radius - Radius = 0.5 includes the 4 neighbors of the pixel in the center, radius = 1 corresponds to a 3x3 kernel size.
      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 interface ExtendedPlugInFilter