Hi Kenneth,

as I understand it, your long question boils down to "how to use the ParticleAnalyzer from a Java plugin".

For my feeling, probably the best is using the constructor
public ParticleAnalyzer(int options, int measurements, ResultsTable rt, double minSize, double maxSize, double minCirc, double maxCirc)

where options and measurements are bitwise or of the flags.
The options flags are those of the ParticleAnalyzer, from ParticleAnalyzer.SHOW_RESULTS to ParticleAnalyzer.OVERLAY, and the measurements flags are defined in ij.measure.Measurements (you can implement this class to have them directly available).

If you supply a ResultsTable, you can use it later to retrieve the results. If it is a ResultsTable created in your code, you donÄt need to show it.

Use the analyze method of the ParticleAnalyzer created:
  public boolean analyze(ImagePlus imp)

Best have a look at the source code,


https://github.com/imagej/ImageJ/blob/master/ij/plugin/filter/ParticleAnalyzer.java



Michael
________________________________________________________________
On 18.08.24 15:03, Kenneth Sloan wrote:
First - I deal with Java plugins, and have very little experience with the GUI 
or macros.  I’d like to keep it that way for this project.  I’m trying to build 
a completely automatic segmentation program, in Java.  The task is relatively 
simple.

I have a segmentation task involving size and shape - but also location in the 
image.  I could live with sketching a polygon around an ROI, but would prefer 
to instead use distance from the center of the image (and include only regions 
which are close to the center of the image).

Experimenting with the GUI, using global thresholding and  “Analyze Particles”, 
I have gotten to the point where filtering on size and circularity is giving me 
good results - with a few stray regions outside the region I care about.

So…I’m now ready to write Java code to look at the results of “Analyze 
Particles” and  filter based on location.

One option is to create a mask and then edit the mask, based on either a 
manually drawn polygon, or distance from the center of the image.  That’s my 
current first choice - I can do that without any assistance.

Another option is to loosen the criteria used by “Analyze Particles” and then 
do further filtering of a list of regions.  This is where I need help.  I have 
no experience with generating, and then processing, a list of regions produced 
by “Analyze Particles”.  This looks like a good opportunity to repair my 
ignorance.

What API’s should I look at?  How do I invoke “Analyze Particles” from Java, 
and how do I access the results?

Secondarily, I’m finding that “circularity” does not completely capture the 
shapes I’m interested in.  I’d appreciate pointers in methods of analyzing 
individual segmented regions, specifically to eliminate long, thin regions.  
ROI filtering (or distance from the center of the image) will probably be 
sufficient - but I’d like to have both belt and suspenders.

Finally, I may be interested in measuring various properties of the segmented 
regions, such as perimeter, etc.

Ideally, I’d like to see example Java code that runs “Analyze Particles” and 
then processes a list of particles.  Macro code would be fine - I can translate 
from that.

Probably sufficient is a list of APIs to look at.

All clues gratefully appreciated.

If absolutely necessary, I can provide a few sample images, but I’m really not 
authorized to publish these images widely.

--
Kenneth Sloan
[email protected]
Vision is the art of seeing what is invisible to others.

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html

Reply via email to