A problem with area measurements

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

A problem with area measurements

Avital Steinberg
Hi,
I'm having trouble measuring areas of composite Rois in Javascript. When I
run the following code, I get a strange answer for the area of the
composite:

importClass(Packages.ij.IJ);
importClass(Packages.ij.plugin.frame.RoiManager);
importClass(Packages.ij.ImagePlus);
importClass(Packages.ij.process.ImageProcessor);
importClass(Packages.ij.gui.Roi);
importClass(Packages.ij.gui.ShapeRoi);
importPackage(java.awt);

rm = RoiManager.getInstance();
if (rm==null) rm = new RoiManager();
imp = IJ.createImage("Untitled", "8-bit ramp", 2000, 2048, 1);
ip = imp.getProcessor();
imp.setRoi(324,366,231,120);
IJ.run("ROI Manager...", "");
rm.addRoi(imp.getRoi());
roi1 = imp.getRoi();
imp.setRoi(231,261,549,354);
rm.addRoi(imp.getRoi());
roi2 = imp.getRoi();

shpRoi1 = ShapeRoi(roi1);
shpRoi2 = ShapeRoi(roi2);
rm.addRoi(shpRoi1);
rm.addRoi(shpRoi2);

imp.show();

ip.setRoi(shpRoi1);
stats = ip.getStatistics();
area = stats.area;
IJ.log("The area for shpRo1 is: " + area);

ip.setRoi(shpRoi2);
stats = ip.getStatistics();
area = stats.area;
IJ.log("The area for shpRo2 is: " + area);

shpRoi3 = shpRoi2.not(shpRoi1);
rm.addRoi(shpRoi3);
ip.setRoi(shpRoi3);
stats = ip.getStatistics();
area = stats.area;
IJ.log("The area for shpRo3 is: " + area);

Selecting the area and using Analyze, measure from the gui gives the
results I would expect, but when I try to get the area from the
ImageStatistics object, I get the wrong result.

When you try to run the code, do you also get a strange result?

Thanks,
Avital

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: A problem with area measurements

Rasband, Wayne (NIH/NIMH) [E]
> On Sep 25, 2016, at 12:39 PM, Avital Steinberg <[hidden email]> wrote:
>
> Hi,
> I'm having trouble measuring areas of composite Rois in Javascript. When I
> run the following code, I get a strange answer for the area of the
> composite:

Hi Avital,

This bug is fixed in the latest ImageJ daily build (1.51h2). Here is a simpler version of your JavaScript that also reproduces the bug:

   ip = new ByteProcessor(2000,2048);
   roi1 = new Roi(324,366,231,120);
   roi2 = new Roi(231,261,549,354);
   shpRoi1 = new ShapeRoi(roi1);
   shpRoi2 = new ShapeRoi(roi2);
   ip.setRoi(shpRoi1);
   IJ.log("The area for shpRo1 is: " + ip.getStatistics().area);
   ip.setRoi(shpRoi2);
   IJ.log("The area for shpRo2 is: " + ip.getStatistics().area);
   shpRoi3 = shpRoi2.not(shpRoi1);
   ip.setRoi(shpRoi3);
   IJ.log("The area for shpRo3 is: " + ip.getStatistics().area);

-wayne


> importClass(Packages.ij.IJ);
> importClass(Packages.ij.plugin.frame.RoiManager);
> importClass(Packages.ij.ImagePlus);
> importClass(Packages.ij.process.ImageProcessor);
> importClass(Packages.ij.gui.Roi);
> importClass(Packages.ij.gui.ShapeRoi);
> importPackage(java.awt);
>
> rm = RoiManager.getInstance();
> if (rm==null) rm = new RoiManager();
> imp = IJ.createImage("Untitled", "8-bit ramp", 2000, 2048, 1);
> ip = imp.getProcessor();
> imp.setRoi(324,366,231,120);
> IJ.run("ROI Manager...", "");
> rm.addRoi(imp.getRoi());
> roi1 = imp.getRoi();
> imp.setRoi(231,261,549,354);
> rm.addRoi(imp.getRoi());
> roi2 = imp.getRoi();
>
> shpRoi1 = ShapeRoi(roi1);
> shpRoi2 = ShapeRoi(roi2);
> rm.addRoi(shpRoi1);
> rm.addRoi(shpRoi2);
>
> imp.show();
>
> ip.setRoi(shpRoi1);
> stats = ip.getStatistics();
> area = stats.area;
> IJ.log("The area for shpRo1 is: " + area);
>
> ip.setRoi(shpRoi2);
> stats = ip.getStatistics();
> area = stats.area;
> IJ.log("The area for shpRo2 is: " + area);
>
> shpRoi3 = shpRoi2.not(shpRoi1);
> rm.addRoi(shpRoi3);
> ip.setRoi(shpRoi3);
> stats = ip.getStatistics();
> area = stats.area;
> IJ.log("The area for shpRo3 is: " + area);
>
> Selecting the area and using Analyze, measure from the gui gives the
> results I would expect, but when I try to get the area from the
> ImageStatistics object, I get the wrong result.
>
> When you try to run the code, do you also get a strange result?
>
> Thanks,
> Avital
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: A problem with area measurements

Avital Steinberg
Hi Wayne,
Thanks a lot!

Avital

בתאריך 25 בספט' 2016 10:47 PM,‏ "Rasband, Wayne (NIH/NIMH) [E]" <
[hidden email]> כתב:

> > On Sep 25, 2016, at 12:39 PM, Avital Steinberg <
> [hidden email]> wrote:
> >
> > Hi,
> > I'm having trouble measuring areas of composite Rois in Javascript. When
> I
> > run the following code, I get a strange answer for the area of the
> > composite:
>
> Hi Avital,
>
> This bug is fixed in the latest ImageJ daily build (1.51h2). Here is a
> simpler version of your JavaScript that also reproduces the bug:
>
>    ip = new ByteProcessor(2000,2048);
>    roi1 = new Roi(324,366,231,120);
>    roi2 = new Roi(231,261,549,354);
>    shpRoi1 = new ShapeRoi(roi1);
>    shpRoi2 = new ShapeRoi(roi2);
>    ip.setRoi(shpRoi1);
>    IJ.log("The area for shpRo1 is: " + ip.getStatistics().area);
>    ip.setRoi(shpRoi2);
>    IJ.log("The area for shpRo2 is: " + ip.getStatistics().area);
>    shpRoi3 = shpRoi2.not(shpRoi1);
>    ip.setRoi(shpRoi3);
>    IJ.log("The area for shpRo3 is: " + ip.getStatistics().area);
>
> -wayne
>
>
> > importClass(Packages.ij.IJ);
> > importClass(Packages.ij.plugin.frame.RoiManager);
> > importClass(Packages.ij.ImagePlus);
> > importClass(Packages.ij.process.ImageProcessor);
> > importClass(Packages.ij.gui.Roi);
> > importClass(Packages.ij.gui.ShapeRoi);
> > importPackage(java.awt);
> >
> > rm = RoiManager.getInstance();
> > if (rm==null) rm = new RoiManager();
> > imp = IJ.createImage("Untitled", "8-bit ramp", 2000, 2048, 1);
> > ip = imp.getProcessor();
> > imp.setRoi(324,366,231,120);
> > IJ.run("ROI Manager...", "");
> > rm.addRoi(imp.getRoi());
> > roi1 = imp.getRoi();
> > imp.setRoi(231,261,549,354);
> > rm.addRoi(imp.getRoi());
> > roi2 = imp.getRoi();
> >
> > shpRoi1 = ShapeRoi(roi1);
> > shpRoi2 = ShapeRoi(roi2);
> > rm.addRoi(shpRoi1);
> > rm.addRoi(shpRoi2);
> >
> > imp.show();
> >
> > ip.setRoi(shpRoi1);
> > stats = ip.getStatistics();
> > area = stats.area;
> > IJ.log("The area for shpRo1 is: " + area);
> >
> > ip.setRoi(shpRoi2);
> > stats = ip.getStatistics();
> > area = stats.area;
> > IJ.log("The area for shpRo2 is: " + area);
> >
> > shpRoi3 = shpRoi2.not(shpRoi1);
> > rm.addRoi(shpRoi3);
> > ip.setRoi(shpRoi3);
> > stats = ip.getStatistics();
> > area = stats.area;
> > IJ.log("The area for shpRo3 is: " + area);
> >
> > Selecting the area and using Analyze, measure from the gui gives the
> > results I would expect, but when I try to get the area from the
> > ImageStatistics object, I get the wrong result.
> >
> > When you try to run the code, do you also get a strange result?
> >
> > Thanks,
> > Avital
> >
> > --
> > ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

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