Robust Estimation of Sphere

1 view (last 30 days)
Zereen
Zereen on 9 Oct 2011
Hi,
I have a point cloud file which represents a sphere. I want to find out the center and the radius of that sphere using some kind of robust estimation (M-estimation, for example). Can someone please help me regarding this?
Thanks in advance.
Zereen
  2 Comments
Walter Roberson
Walter Roberson on 9 Oct 2011
When you say "estimation", do you mean you want to do it without examining all of the data points?
Zereen
Zereen on 9 Oct 2011
Sorry, I am not sure whether I got your question or not. Still let me try. What I want to do is - using some kind of weight, I want to get rid of those points that are not part of sphere (outliers). As ordinary least squares may act severely in the presence of noise, I want to use robust estimation. Does it make sense? Please feel free to ask if I haven't answered your question properly.

Sign in to comment.

Answers (1)

the cyclist
the cyclist on 9 Oct 2011
Zereen, I am not aware of any way to do this "out of the box", and I did not find anything in the File Exchange. Do you have the Statistics Toolbox? If so, I think you could probably do something close to what you want by using the nlinfit() function, along with the 'Robust' option. Read "doc nlinfit" for details.
  12 Comments
Zereen
Zereen on 13 Oct 2011
Thanks a lot. Let me give it a try. I will let you know the result.
the cyclist
the cyclist on 13 Oct 2011
One other comment. One thing that made this tricky is that your (x,y,z) data do not contain clear explanatory and response variables, which would normally be the case when fitting data. It really is more of an optimization problem, but we mashed it into a "fitting framework" to make use of the ability to use robust fitting. (Maybe there was a way to do that via something in the Optimization Toolbox, but I don't know.)
An alternative way to have done the fit would be to say that you have a z_fit and a z_empirical, with (x,y) being the explanatory. However, that puts z on a different footing than (x,y), which I didn't think made sense. But it is also a little odd that "r" is the response variable, given (x,y,z). I am not sure how theoretically strong my suggestions were. Let the buyer beware.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!