Estimate center of a circle

Started by
1 comment, last by aki.aleksic 12 years, 6 months ago
Hi all,

I'm working on a project which involves tracking air crafts in real time and I'm having a problem of estimating center of a circle given three or more points, which should be as precise as possible, and I need this to track air craft in circle maneuver. I know how to calculate the center if you have thee points on circumference (I'm using this method), but the problem is that I have points which are not exactly on circumference, and can be on either side of circumference. Because the center is used to calculate a radius of the circle, depending on the points I get (the points are measures from the radar, and that is why they are inaccurate) I can get circles of different sizes, and what is worst I can get a circle on opposite side of that of the maneuver.

You can see what I mean in images 1 and 2 in attachment. On image one I estimate a center using the method I mentioned and its almost a perfect estimate. But in the second image I'm using an extra point, which gives me a completely different result, which is unacceptable. This is just an example of maneuver, in other situation may be different...

So this is what I need:
  • to estimate center of the circle given three or more points - 3 - 5 points, not more, because after the sixth point its already too late to track maneuver
  • during the maneuver I can update the center and radius with new data

Things to have in mind:
  • points are not on the circumference, can be on either side of it

If some one know a method for this, or have an idea please share :) I will be thankful

Cheers and thank you
Advertisement
Two ideas come to mind:

1) For any hypothetical center C, compute the distances from C to each of your points. The average of those distances would be the radius, and the standard deviation would be some measure of how bad a center this really is. So use some numerical method to find the center that gives you minimum standard deviation of distances.

2) Perhaps you don't need to compute a circle at all. Tracking aircrafts sounds like something a Kalman filter would be extremely good at. You could probably get an estimate of acceleration from a few data points, and the component of the acceleration that is perpendicular to the velocity would give you an estimate of turn radius.
No need to estimate, you can calculate that: http://paulbourke.ne...ry/circlefrom3/

If you have more than 3 points, simply calculate several centers (using different 3-tuples of points), and average them. If they are on the same circle, it won't make a difference, and if they are not, there is no "correct" solution anyway.The average will be just as good then.

2) Perhaps you don't need to compute a circle at all. Tracking aircrafts sounds like something a Kalman filter would be extremely good at. You could probably get an estimate of acceleration from a few data points, and the component of the acceleration that is perpendicular to the velocity would give you an estimate of turn radius.


Thank you for your answers :)

About the Kalman filter, yes I'm using it but the model that I use is only for uniform motion. I tried to expend it and use acceleration (singer model) to count for heading changes, but it gave me bad results, but its probably due to bad implementation :). Maybe I should revisit that. Anyway, now I'm using other method: when I detect maneuver due to heading i switch to other model for Kalman filter which tracks object in a radial coordinate system with center in a center of maneuver, thats why i need it :)

So, first i will try to compute center as alvaro sad, maybe I will use circular regression. If that doesn't work I will revisit singer model for Kalman filter which have info about acceleration.

Thanks


This topic is closed to new replies.

Advertisement