Re: Ellipse fitting [message #72470 is a reply to message #66407] |
Thu, 09 September 2010 06:50   |
Jeremy Bailin
Messages: 618 Registered: April 2008
|
Senior Member |
|
|
On Sep 9, 7:18 am, Oriol Güell Riera <oriolguellri...@gmail.com>
wrote:
> Hi all,
> I've got a problem when I try to find the orientation of a fitted
> ellipse of a region of interest (http://www.dfanning.com/ip_tips/
> fit_ellipse.html).
> I've got an stack of images of an ellipse rotating. My problem arises
> when I try to find the eigenvectors of the covariance matrix, the
> signs of the components of them change randomly. In other words, I
> start with my ellipse in the 3rd quadrant. The first image gives the
> correct signs for the components of the principal eigenvector, but the
> second image doesn't give the signs of the components well, so in this
> case the eigenvector is located in the 4th quadrant, but my ellipse
> still stands in the 3rd quadrant!
> I don't know if I have explained my problem correctly. The problem
> comes from the indeterminacy of the signs of the eigenvectors. If they
> had the correct signs, I would use the atan2 function, which will give
> the correct orientation. However, the signs aren't correct, so I can't
> get the orientation of the ellipse after a whole rotation.
> Thank you very much
I can see how you might alternate between 3rd and 1st quadrant (or
alternately 4th and 2nd quadrant), but not how you would go between
the 3rd and 4th without the ellipse itself rotating.
How best to deal with it depends on what you're planning on doing with
the eigenvectors. It sounds like you're trying to measure the angle of
the major axis and compare it between images. In that case, I'd just
use atan2 and then do a check afterwards to see whether the angle has
changed by more than 90degrees - if so, add/subtract 180degrees from
the angle in the second image as appropriate (of course, that assumes
that the ellipse isn't *actually* changing by more than 90degrees
between images). If you really need the eigenvectors, then do
something similar - take the dot product and if it's negative, use the
negative of the eigenvector.
-Jeremy.
|
|
|