# [SciPy-user] Fitting sphere to 3d data points

David Douard david.douard at logilab.fr
Thu Jan 25 09:47:37 CST 2007

```On Thu, Jan 25, 2007 at 09:31:10AM -0500, David Huard wrote:
> Hi James,
>
> As a first guess, I'd say the center of the sphere is simply the mean of
> your data points, if they're all weighted equally.

Hello,

I would have rather said that you need to find the point that minimize
the distance to the normals of the triangles you have from your data
points (not sure this is really meaningful...).
If the points really are on a sphere, all the normal will cut on one
point. If not, there really is a minimization problema to solve.

David

> With only one parameter
> left to fit, it should be easy enough. However, you may want to look at the
> paper:
>
> Werman, Michael and Keren, Daniel
> A Bayesian method for fitting parametric and nonparametric models to noisy
> data
> Ieee Transactions on Pattern Analysis and Machine Intelligence, 23, 2001.
>
> They write that the Mean Square Error approach overestimates the radius in
> the case of circles. They don't talk about the 3D case, but I'd guess
> similar problems arise. They provide a method to fit parametric shapes with
> some robustness to data errors.
>
> Cheers,
>
> David
>
>
>
> 2007/1/25, James Vincent <jjv5 at nih.gov>:
> >
> >Hello,
> >Is it possible to fit a sphere to 3D data points using
> >scipy.optimize.leastsq? I'd like to minimize the residual for the distance
> >from the actual x,y,z point and the fitted sphere surface. I can see how to
> >minimize for z, but that's not really what I'm looking for. Is there a
> >better way to do this? Thanks for any help.
> >
> >params = a,b,c and r
> >a,b,c are the fitted center point of the sphere, r is the radius
> >
> >err = distance-to-center - radius
> >err = sqrt( x-a)**2 + (y-b)**2 + (z-c)**2) - r
> >
> >
> >
> >----
> >James J. Vincent, Ph.D.
> >National Cancer Institute
> >National Institutes of Health
> >Laboratory of Molecular Biology
> >Building 37, Room 5120
> >37 Convent Drive, MSC 4264
> >Bethesda, MD 20892 USA
> >
> >301-451-8755
> >jjv5 at nih.gov
> >
> >
> >
> >_______________________________________________
> >SciPy-user mailing list
> >SciPy-user at scipy.org
> >http://projects.scipy.org/mailman/listinfo/scipy-user
> >
> >
> >

> _______________________________________________
> SciPy-user mailing list
> SciPy-user at scipy.org
> http://projects.scipy.org/mailman/listinfo/scipy-user

--
David Douard                             LOGILAB, Paris (France)
Formations Python, Zope, Plone, Debian : http://www.logilab.fr/formations
Développement logiciel sur mesure :      http://www.logilab.fr/services
Informatique scientifique :              http://www.logilab.fr/science
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://projects.scipy.org/pipermail/scipy-user/attachments/20070125/21445e8d/attachment.bin
```