Module ij
Package ij.plugin.filter

# Class ParticleAnalyzer

java.lang.Object
ij.plugin.filter.ParticleAnalyzer

All Implemented Interfaces:
  `Measurements`, `PlugInFilter`

public class ParticleAnalyzer extends Object implements PlugInFilter, Measurements
Implements ImageJ's Analyze Particles command.

            for each line do
                    for each pixel in this line do
                            if the pixel value is "inside" the threshold range then
                                    trace the edge to mark the object
                                    do the measurement
                                    fill the object with a color outside the threshold range
                            else
                                    continue the scan

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`ADD_TO_MANAGER`
Add particles to ROI Manager.
`protected boolean`
`addToManager`
`protected Analyzer`
`analyzer`
`protected static final int`
`BARE_OUTLINES`
`static final int`
`CLEAR_WORKSHEET`
Clear "Results" window before starting.
`static final int`
`COMPOSITE_ROIS`
Use composite ROIs for particles with holes.
`protected boolean`
`compositeRois`
`static final int`
`DISPLAY_SUMMARY`
Display a summary.
`protected boolean`
`displaySummary`
`protected static final int`
`ELLIPSES`
`static final int`
`EXCLUDE_EDGE_PARTICLES`
Do not measure particles touching edge of image.
`protected boolean`
`excludeEdgeParticles`
`protected boolean`
`floodFill`
`static final int`
`FOUR_CONNECTED`
Use 4-connected particle tracing.
`protected ImagePlus`
`imp`
`static final int`
`IN_SITU_SHOW`
Replace original image with masks.
`static final int`
`INCLUDE_HOLES`
Flood fill to ignore interior holes.
`protected boolean`
`inSituShow`
`protected static final int`
`MASKS`
`protected static final int`
`NOTHING`
`protected static final int`
`OUTLINES`
`static final int`
`OVERLAY`
Use "Overlay" checkbox to display overlay.
`protected static final int`
`OVERLAY_MASKS`
`protected static final int`
`OVERLAY_OUTLINES`
`protected boolean`
`processStack`
`static final int`
`RECORD_STARTS`
Record starting coordinates so outline can be recreated later using doWand(x,y).
`protected boolean`
`recordStarts`
`protected boolean`
`resetCounter`
`protected static final int`
`ROI_MASKS`
`protected ResultsTable`
`rt`
`static final int`
`SHOW_MASKS`
Display image containing binary masks of measured particles.
`static final int`
`SHOW_NONE`
Do not display particle outline image.
`static final int`
`SHOW_OUTLINES`
Display image containing outlines of measured particles.
`static final int`
`SHOW_OVERLAY_MASKS`
Display filled particle as an overlay.
`static final int`
`SHOW_OVERLAY_OUTLINES`
Display particle outlines as an overlay.
`static final int`
`SHOW_PROGRESS`
Display a progress bar.
`static final int`
`SHOW_RESULTS`
Display results in the ImageJ console.
`static final int`
`SHOW_ROI_MASKS`
Display image containing grayscales masks that identify measured particles.
`static final int`
`SHOW_SUMMARY`
Obsolete, replaced by DISPLAY_SUMMARY
`protected boolean`
`showOverlay`
`protected boolean`
`showProgress`
`protected boolean`
`showResults`
`protected boolean`
`showSizeDistribution`
`protected int`
`slice`
`protected static int`
`staticShowChoice`

### Fields inherited from interface ij.measure.Measurements

`ADD_TO_OVERLAY, ALL_STATS, AREA, AREA_FRACTION, CENTER_OF_MASS, CENTROID, CIRCULARITY, ELLIPSE, FERET, INTEGRATED_DENSITY, INVERT_Y, KURTOSIS, LABELS, LIMIT, MAX_STANDARDS, MEAN, MEDIAN, MIN_MAX, MODE, NaN_EMPTY_CELLS, PERIMETER, RECT, SCIENTIFIC_NOTATION, SHAPE_DESCRIPTORS, SKEWNESS, SLICE, STACK_POSITION, STD_DEV`

### 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
`ParticleAnalyzer()`
Default constructor
`ParticleAnalyzer(int options, int measurements, ResultsTable rt, double minSize, double maxSize)`
Constructs a ParticleAnalyzer using the default min and max circularity values (0 and 1).
`ParticleAnalyzer(int options, int measurements, ResultsTable rt, double minSize, double maxSize, double minCirc, double maxCirc)`
Constructs a ParticleAnalyzer.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`analyze(ImagePlus imp)`
Performs particle analysis on the current slice of the specified image.
`boolean`
`analyze(ImagePlus imp, ImageProcessor ip)`
Performs particle analysis on the specified ImagePlus and ImageProcessor.
`protected void`
`drawParticle(ImageProcessor drawIP, Roi roi, ImageStatistics stats, ImageProcessor mask)`
Draws a selected particle in a separate image.
`ImagePlus`
`getOutputImage()`
Returns the "Outlines", "Masks", "Elipses" or "Count Masks" image, or null if "Nothing" is selected in the "Show:" menu.
`void`
`run(ImageProcessor ip)`
Filters use this method to process the image.
`static void`
`savePreferences(Properties prefs)`
Called once when ImageJ quits.
`protected void`
`saveResults(ImageStatistics stats, Roi roi)`
Saves statistics for one particle in a results table.
`static void`
`setFontColor(String color)`
Sets the color ("blue", "black", etc.) of the font used to label outlines in the next particle analyzer instance.
`static void`
`setFontSize(int size)`
Sets the size of the font used to label outlines in the next particle analyzer instance.
`void`
`setHideOutputImage(boolean hideOutputImage)`
Set 'hideOutputImage' true to not display the "Show:" image.
`static void`
`setLineWidth(int width)`
Sets the outline line width for the next ParticleAnalyzer instance.
`static void`
`setResultsTable(ResultsTable rt)`
Sets the ResultsTable to be used by the next ParticleAnalyzer instance.
`static void`
`setRoiManager(RoiManager manager)`
Sets the RoiManager to be used by the next ParticleAnalyzer instance.
`static void`
`setSummaryTable(ResultsTable rt)`
Sets the ResultsTable to be used by the next ParticleAnalyzer instance for the summary.
`int`
`setup(String arg, ImagePlus imp)`
This method is called once when the filter is loaded.
`boolean`
`showDialog()`
Displays a modal options dialog.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### SHOW_RESULTS

public static final int SHOW_RESULTS
Display results in the ImageJ console.

See Also:
  - Constant Field Values

### SHOW_SUMMARY

public static final int SHOW_SUMMARY
Obsolete, replaced by DISPLAY_SUMMARY

See Also:
  - Constant Field Values

### SHOW_OUTLINES

public static final int SHOW_OUTLINES
Display image containing outlines of measured particles.

See Also:
  - Constant Field Values

### EXCLUDE_EDGE_PARTICLES

public static final int EXCLUDE_EDGE_PARTICLES
Do not measure particles touching edge of image.

See Also:
  - Constant Field Values

### SHOW_ROI_MASKS

public static final int SHOW_ROI_MASKS
Display image containing grayscales masks that identify measured particles.

See Also:
  - Constant Field Values

### SHOW_PROGRESS

public static final int SHOW_PROGRESS
Display a progress bar.

See Also:
  - Constant Field Values

### CLEAR_WORKSHEET

public static final int CLEAR_WORKSHEET
Clear "Results" window before starting.

See Also:
  - Constant Field Values

### RECORD_STARTS

public static final int RECORD_STARTS
Record starting coordinates so outline can be recreated later using doWand(x,y).

See Also:
  - Constant Field Values

### DISPLAY_SUMMARY

public static final int DISPLAY_SUMMARY
Display a summary.

See Also:
  - Constant Field Values

### SHOW_NONE

public static final int SHOW_NONE
Do not display particle outline image.

See Also:
  - Constant Field Values

### INCLUDE_HOLES

public static final int INCLUDE_HOLES
Flood fill to ignore interior holes.

See Also:
  - Constant Field Values

### ADD_TO_MANAGER

public static final int ADD_TO_MANAGER
Add particles to ROI Manager.

See Also:
  - Constant Field Values

### SHOW_MASKS

public static final int SHOW_MASKS
Display image containing binary masks of measured particles.

See Also:
  - Constant Field Values

### FOUR_CONNECTED

public static final int FOUR_CONNECTED
Use 4-connected particle tracing.

See Also:
  - Constant Field Values

### IN_SITU_SHOW

public static final int IN_SITU_SHOW
Replace original image with masks.

See Also:
  - Constant Field Values

### SHOW_OVERLAY_OUTLINES

public static final int SHOW_OVERLAY_OUTLINES
Display particle outlines as an overlay.

See Also:
  - Constant Field Values

### SHOW_OVERLAY_MASKS

public static final int SHOW_OVERLAY_MASKS
Display filled particle as an overlay.

See Also:
  - Constant Field Values

### COMPOSITE_ROIS

public static final int COMPOSITE_ROIS
Use composite ROIs for particles with holes.

See Also:
  - Constant Field Values

### OVERLAY

public static final int OVERLAY
Use "Overlay" checkbox to display overlay.

See Also:
  - Constant Field Values

### NOTHING

protected static final int NOTHING

See Also:
  - Constant Field Values

### OUTLINES

protected static final int OUTLINES

See Also:
  - Constant Field Values

### BARE_OUTLINES

protected static final int BARE_OUTLINES

See Also:
  - Constant Field Values

### ELLIPSES

protected static final int ELLIPSES

See Also:
  - Constant Field Values

### MASKS

protected static final int MASKS

See Also:
  - Constant Field Values

### ROI_MASKS

protected static final int ROI_MASKS

See Also:
  - Constant Field Values

### OVERLAY_OUTLINES

protected static final int OVERLAY_OUTLINES

See Also:
  - Constant Field Values

### OVERLAY_MASKS

protected static final int OVERLAY_MASKS

See Also:
  - Constant Field Values

### staticShowChoice

protected static int staticShowChoice

### imp

protected ImagePlus imp

### rt

protected ResultsTable rt

### analyzer

protected Analyzer analyzer

### slice

protected int slice

### processStack

protected boolean processStack

### showResults

protected boolean showResults

### excludeEdgeParticles

protected boolean excludeEdgeParticles

### showSizeDistribution

protected boolean showSizeDistribution

### resetCounter

protected boolean resetCounter

### showProgress

protected boolean showProgress

### recordStarts

protected boolean recordStarts

### displaySummary

protected boolean displaySummary

### floodFill

protected boolean floodFill

### addToManager

protected boolean addToManager

### inSituShow

protected boolean inSituShow

### compositeRois

protected boolean compositeRois

### showOverlay

protected boolean showOverlay

## Constructor Details

### ParticleAnalyzer

public ParticleAnalyzer(int options, int measurements, ResultsTable rt, double minSize, double maxSize, double minCirc, double maxCirc)
Constructs a ParticleAnalyzer.

Parameters:
  `options` - a flag word created by Oring SHOW_RESULTS, EXCLUDE_EDGE_PARTICLES, etc.
  `measurements` - a flag word created by ORing constants defined in the Measurements interface
  `rt` - a ResultsTable where the measurements will be stored
  `minSize` - the smallest particle size in pixels
  `maxSize` - the largest particle size in pixels
  `minCirc` - minimum circularity
  `maxCirc` - maximum circularity

       // JavaScript example
       imp = IJ.openImage("https://imagej.net/images/blobs.gif");
       IJ.setAutoThreshold(imp, "Default");
       rt = new ResultsTable();
       options = ParticleAnalyzer.SHOW_NONE;
       measurements = Measurements.AREA + Measurements.PERIMETER;
       pa = new ParticleAnalyzer(options, measurements, rt, 0, Double.MAX_VALUE, 0, 1);
       pa.analyze(imp);
       rt.show("Results");

### ParticleAnalyzer

public ParticleAnalyzer(int options, int measurements, ResultsTable rt, double minSize, double maxSize)
Constructs a ParticleAnalyzer using the default min and max circularity values (0 and 1).

### ParticleAnalyzer

public ParticleAnalyzer()
Default constructor

## Method Details

### setup

public int setup(String arg, ImagePlus imp)
Description copied from interface: `PlugInFilter`
This method is called once when the filter is loaded. 'arg', which may be blank, is the argument specified for this plugin in IJ_Props.txt or in the plugins.config file of a jar archive containing the plugin. 'imp' is the currently active image. This method should return a flag word that specifies the filters capabilities.

For Plugin-filters specifying the `PlugInFilter.FINAL_PROCESSING` flag, the setup method will be called again, this time with arg = "final" after all other processing is done.

Specified by:
  `setup` in interface `PlugInFilter`

### 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`. Use ip.getSliceNumber() to get the stack position (1-n).

Specified by:
  `run` in interface `PlugInFilter`

### showDialog

public boolean showDialog()
Displays a modal options dialog.

### analyze

public boolean analyze(ImagePlus imp)
Performs particle analysis on the current slice of the specified image. Returns false if there is an error.

### analyze

public boolean analyze(ImagePlus imp, ImageProcessor ip)
Performs particle analysis on the specified ImagePlus and ImageProcessor. Returns false if there is an error.

### saveResults

protected void saveResults(ImageStatistics stats, Roi roi)
Saves statistics for one particle in a results table. This is a method subclasses can override.

### drawParticle

protected void drawParticle(ImageProcessor drawIP, Roi roi, ImageStatistics stats, ImageProcessor mask)
Draws a selected particle in a separate image. This is another method subclasses may want to override.

### getOutputImage

public ImagePlus getOutputImage()
Returns the "Outlines", "Masks", "Elipses" or "Count Masks" image, or null if "Nothing" is selected in the "Show:" menu.

### setHideOutputImage

public void setHideOutputImage(boolean hideOutputImage)
Set 'hideOutputImage' true to not display the "Show:" image.

### setFontSize

public static void setFontSize(int size)
Sets the size of the font used to label outlines in the next particle analyzer instance.

### setFontColor

public static void setFontColor(String color)
Sets the color ("blue", "black", etc.) of the font used to label outlines in the next particle analyzer instance.

### setLineWidth

public static void setLineWidth(int width)
Sets the outline line width for the next ParticleAnalyzer instance.

### setRoiManager

public static void setRoiManager(RoiManager manager)
Sets the RoiManager to be used by the next ParticleAnalyzer instance. There is a JavaScript example at http://imagej.nih.gov/ij/macros/js/HiddenRoiManager.js

### setResultsTable

public static void setResultsTable(ResultsTable rt)
Sets the ResultsTable to be used by the next ParticleAnalyzer instance.

### setSummaryTable

public static void setSummaryTable(ResultsTable rt)
Sets the ResultsTable to be used by the next ParticleAnalyzer instance for the summary.

### savePreferences

public static void savePreferences(Properties prefs)
Called once when ImageJ quits.