How to center an ellipse?

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

How to center an ellipse?

Juanjo Vega
Hello!

I'm trying to center an ellipse ROI in an ImagePlus.

I have the following method, which gets a ROI, fits an ellipse, sets it's center (x and y), and then tries to refresh it, so the ellipse will be moved to the center of the image:

    public void fitEllipse() {
        Roi roi = ip.getRoi();

        if (roi != null && roi.isArea()) {
            IJ.run(ip, "Fit Ellipse", "");
            ImageStatistics is = ip.getStatistics();
            EllipseFitter ef = new EllipseFitter();
            ef.fit(ip.getProcessor(), is);

            // Builds an ellipse...
            ef.xCenter = ip.getHeight() / 2;
            ef.yCenter = ip.getHeight() / 2;

//            IJ.run("Select None");
            ef.makeRoi(ip.getProcessor());
        }
    }

The last part doesn't work and I'm sort of ideas. Does anybody can help me, please?

Have a nice weekend,

Juanjo.

------------------------------------------------------------
Juanjo Vega ([hidden email])

Unidad de Biocomputación. Laboratorio B-13.
Centro Nacional de Biotecnología. CNB-CSIC.
C\ Darwin, 3. Campus de Cantoblanco.
Universidad Autónoma de Madrid.
28049, Madrid, Spain.

http://www.cnb.csic.es
http://www.biocomp.cnb.csic.es

+34 91 585 4510

"Las mejores almas son capaces de los mayores vicios como de las mayores
virtudes, y aquellos que caminan despacio por el camino recto pueden
llegar más lejos que los que corren pero se apartan de él." - Discurso
del Método, René Descartes.
Reply | Threaded
Open this post in threaded view
|

Re: How to center an ellipse?

Rasband, Wayne (NIH/NIMH) [E]
On Apr 8, 2011, at 9:33 AM, Juanjo Vega wrote:

> Hello!
>
> I'm trying to center an ellipse ROI in an ImagePlus.
>
> I have the following method, which gets a ROI, fits an ellipse, sets it's center (x and y), and then tries to refresh it, so the ellipse will be moved to the center of the image:
>
>    public void fitEllipse() {
>        Roi roi = ip.getRoi();
>
>        if (roi != null && roi.isArea()) {
>            IJ.run(ip, "Fit Ellipse", "");
>            ImageStatistics is = ip.getStatistics();
>            EllipseFitter ef = new EllipseFitter();
>            ef.fit(ip.getProcessor(), is);
>
>            // Builds an ellipse...
>            ef.xCenter = ip.getHeight() / 2;
>            ef.yCenter = ip.getHeight() / 2;
>
> //            IJ.run("Select None");
>            ef.makeRoi(ip.getProcessor());
>        }
>    }
>
> The last part doesn't work and I'm sort of ideas. Does anybody can help me, please?

Here is JavaScript code that gets the current ROI, fits an ellipse to it and then moves the resulting elliptical ROI to the center of the image.

-wayne

   imp = IJ.getImage();
   roi = imp.getRoi();
   if (roi!=null && roi.isArea()) {
      IJ.run(imp, "Fit Ellipse", "");
      roi = imp.getRoi();
      r = roi.getBounds();
      xcenter = r.x+r.width/2;
      ycenter = r.y+r.height/2;
      dx = imp.getWidth()/2-xcenter;
      dy = imp.getHeight()/2-ycenter;
      roi.setLocation(r.x+dx, r.y+dy);
      imp.draw();
    }
Reply | Threaded
Open this post in threaded view
|

Re: How to center an ellipse?

Juanjo Vega
It works!! Thanks!! :)

On Apr 8, 2011, at 5:48 PM, Rasband, Wayne (NIH/NIMH) [E] wrote:

> On Apr 8, 2011, at 9:33 AM, Juanjo Vega wrote:
>
>> Hello!
>>
>> I'm trying to center an ellipse ROI in an ImagePlus.
>>
>> I have the following method, which gets a ROI, fits an ellipse, sets it's center (x and y), and then tries to refresh it, so the ellipse will be moved to the center of the image:
>>
>>   public void fitEllipse() {
>>       Roi roi = ip.getRoi();
>>
>>       if (roi != null && roi.isArea()) {
>>           IJ.run(ip, "Fit Ellipse", "");
>>           ImageStatistics is = ip.getStatistics();
>>           EllipseFitter ef = new EllipseFitter();
>>           ef.fit(ip.getProcessor(), is);
>>
>>           // Builds an ellipse...
>>           ef.xCenter = ip.getHeight() / 2;
>>           ef.yCenter = ip.getHeight() / 2;
>>
>> //            IJ.run("Select None");
>>           ef.makeRoi(ip.getProcessor());
>>       }
>>   }
>>
>> The last part doesn't work and I'm sort of ideas. Does anybody can help me, please?
>
> Here is JavaScript code that gets the current ROI, fits an ellipse to it and then moves the resulting elliptical ROI to the center of the image.
>
> -wayne
>
>   imp = IJ.getImage();
>   roi = imp.getRoi();
>   if (roi!=null && roi.isArea()) {
>      IJ.run(imp, "Fit Ellipse", "");
>      roi = imp.getRoi();
>      r = roi.getBounds();
>      xcenter = r.x+r.width/2;
>      ycenter = r.y+r.height/2;
>      dx = imp.getWidth()/2-xcenter;
>      dy = imp.getHeight()/2-ycenter;
>      roi.setLocation(r.x+dx, r.y+dy);
>      imp.draw();
>    }

------------------------------------------------------------
Juanjo Vega ([hidden email])

Unidad de Biocomputación. Laboratorio B-13.
Centro Nacional de Biotecnología. CNB-CSIC.
C\ Darwin, 3. Campus de Cantoblanco.
Universidad Autónoma de Madrid.
28049, Madrid, Spain.

http://www.cnb.csic.es
http://www.biocomp.cnb.csic.es

+34 91 585 4510

"Las mejores almas son capaces de los mayores vicios como de las mayores
virtudes, y aquellos que caminan despacio por el camino recto pueden
llegar más lejos que los que corren pero se apartan de él." - Discurso
del Método, René Descartes.