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

Franck Kalala Mutombo franckm@aims.ac...
Fri Mar 2 04:15:50 CST 2007


James Vincent wrote:
> David,
> 
> Thanks for the reply. I think I should have been clearer about the
> problem. I have a surface patch of data points, not an actual whole
> sphere. It will probably be a very small section of total sphere
> surface. I would like to fit the sphere that best fits just those points
> that I have. The center of the sphere will be highly dependent on the
> curvature of the points. 
> 
> I think the  leastsq routine is right, I just can't figure out how to
> pass the data in yet (it's my first work with scipy). 
> 
> Jim
> 
> 
> On Jan 25, 2007, at 9:31 AM, 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. 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@nih.gov <mailto:jjv5@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@nih.gov <mailto:jjv5@nih.gov>
>>
>>
>>
>>     _______________________________________________
>>     SciPy-user mailing list
>>     SciPy-user@scipy.org <mailto:SciPy-user@scipy.org>
>>     http://projects.scipy.org/mailman/listinfo/scipy-user
>>
>>
>>
>> _______________________________________________
>> SciPy-user mailing list
>> SciPy-user@scipy.org <mailto:SciPy-user@scipy.org>
>> http://projects.scipy.org/mailman/listinfo/scipy-user
> 
> ----
> 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@nih.gov <mailto:jjv5@nih.gov>
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> SciPy-user mailing list
> SciPy-user@scipy.org
> http://projects.scipy.org/mailman/listinfo/scipy-user
Hi,

I have a sequence of decimal number (1,2,...16) for example, I want if
there is any function  which can convert each one in binary.

Thanks

-- 
Franck
African Institute for Mathematical Sciences -- www.aims.ac.za


More information about the SciPy-user mailing list