comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Bootstrapping / Resampling
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Bootstrapping / Resampling [message #21670] Wed, 06 September 2000 04:33 Go to next message
fraser_h is currently offline  fraser_h
Messages: 1
Registered: September 2000
Junior Member
Dear Colleagues,

I would be extremely grateful for any advice on the following:

I am using a routine to fit a circle to a set of edge detected points.
This gives me the radius R0 and the centre point (X0,Y0).

I would like to obtain an estimate of the error/uncertainty in these fit
parameters. I understand that Bootstrapping or resampling may be away to
estimate these uncertainties.

1. Are Bootstrapping or Resampling the techniques to use ?
2. If so does anyone know how to implement this in IDL ?

Cheers

Fraser

F.N.Hatfield@leeds.ac.uk


Sent via Deja.com http://www.deja.com/
Before you buy.
Re: Bootstrapping / Resampling [message #21699 is a reply to message #21670] Tue, 12 September 2000 01:05 Go to previous message
Theo Brauers is currently offline  Theo Brauers
Messages: 58
Registered: November 1997
Member
Hi Amara, hi Fraser.

Amara Graps wrote:
>
> Dear Fraser,
>
>> I am using a routine to fit a circle to a set of edge detected points.
>> This gives me the radius R0 and the centre point (X0,Y0).
>>
>> I would like to obtain an estimate of the error/uncertainty in these fit
>> parameters. I understand that Bootstrapping or resampling may be away to
>> estimate these uncertainties.
>>
>> 1. Are Bootstrapping or Resampling the techniques to use ?
>
> There's a large body of literature, especially in the computer graphics
> field and astronomy field, for fitting circles (ellipses) to points.
>
> I think that bootstrapping is overkill for what you want. I suggest
> a linear or nonlinear fit, and using the error that naturally pops
> out of the least-squares fit.
>
> ....
> ....

First I must admit that I was unaware of the pitfalls of fitting a circle.
(Amara's contribution opened my eyes.) However, I am a fan of Bootstrap
techniques and I think that repeating Amara's procedure with a BS resampled
set of (xi, yi) data points will give the required parameter errors (ESD).
The set of BS parameter estimates can be analyzed and this procedure will
give better parameter ESDs especially if the requirements for a unbiased
least squares estimation are not given: i.e the different (xi,yi) are not
independently sampled as a result of smoothing or lowpass filtering.

Cheers
Theo

----
Dr. Theo Brauers
Institut fuer Atmosphaerische Chemie (ICG-3)
Forschungszentrum Juelich
52425 JUELICH, Germany
Tel. +49-2461-61-6646 Fax. +49-2461-61-5346
http://www.kfa-juelich.de/icg/icg3/MITARBEITER/th.brauers.ht ml
Re: Bootstrapping / Resampling [message #21715 is a reply to message #21670] Mon, 11 September 2000 04:39 Go to previous message
Amara Graps is currently offline  Amara Graps
Messages: 24
Registered: June 1996
Junior Member
Dear Fraser,

> I am using a routine to fit a circle to a set of edge detected points.
> This gives me the radius R0 and the centre point (X0,Y0).
>
> I would like to obtain an estimate of the error/uncertainty in these fit
> parameters. I understand that Bootstrapping or resampling may be away to
> estimate these uncertainties.
>
> 1. Are Bootstrapping or Resampling the techniques to use ?

There's a large body of literature, especially in the computer graphics
field and astronomy field, for fitting circles (ellipses) to points.

I think that bootstrapping is overkill for what you want. I suggest
a linear or nonlinear fit, and using the error that naturally pops
out of the least-squares fit.

For example, let's say that you have 5 points to which you want
fit a circle.


Main Equation to Use:

Equation for a circle:

(x-h)^2 + (y-k)^2 = r^2

So, calculate the radius of the circle from:

r = SQRT[ (x-h)^2 + (y-k)^2) ] Eqn(1)

where:
(h,k) = center of circle
(x,y) = point coordinates
r = radius

---------------------------------
Given:
5 Points: (x1,y1); (x2,y2); (x3,y3); (x4,y4); (x5,y5)

Want to Find for Best-Fit Circle:
(h,k), r

---------------------------------
Procedure:

1) Get first estimate for (h,k,r).

(Find some points to make first estimates- either solve the circle
exactly (3 equations, 3 unknowns) to get a first estimate of the
center and radius, or just do a kind of centroid calculation on all
5 points- to get a rough estimate of the center and radius.)

2) Calculate (from Eqn(1)) r1, r2, r3, r4, r5 for each of your five
points.

3) Calculate the root-mean-squared error:

RMS error = SQRT[ [ (r1-r)^2 + (r2-r)^2 + (r3-r)^2 + (r4-r)^2

+ (r5-r)^2] / 3 ]

(dividing by "3" because we have 3 free parameters.)

4) Change (h,k,r) slightly in your minimization algorithm
to try a new (h,k,r).

5) Calculate r1, r2, r3, r4, r5 again from new (h,k,r)
above.

6) Calculate RMS error again.

7) Compare current RMS error with previous RMS error. If it
doesn't vary by more some small amount, say 10^{-3} then
you're done, otherwise continue steps 4 -- 7.


BTW, I would look for a "canned" minimization routine.
Some commercial computer programs for plotting and spreadsheets do
this sort of thing, such as Excel. The Excel spreadsheet has a
built-in "solver" that will perform minimzation. I've used it, and
it works pretty well for simple problems- it used Newton's method to
search, tangents for estimates, and forward differences for
derivatives.

---------
Some years ago I wrote the FAQ entry for the
sci.math.numerical-analysis newsgroup for "Fitting a circle to a
set of points", because it is a question that occurs several times
a year on that newsgroup, and I had a good collection of answers
from various people for the question.

Since my old FAQ entry needed to be updated, I used this
opportunity (your question) to update it, and condense my
haphazardly collected notes from the last few years. This way I can give
something back to the newsgroup too. This updated entry will
(eventually!) appear at

http://www.mathcom.com/nafaq/index.html
q230.8

Hope it's useful,

Amara

====================FAQ entry====================================

Problem: Given N Points: (x1,y1); (x2,y2).. (xN,yN), we want to find for
best-fit circle: (X0,Y0), R. (Note: for fitting an *ellipse*, substitute
the equation for an ellipse for the equation for a circle in the "Brute
Force Approach").


Brute Force Approach (leads to a non-linear system): [Amara Graps]


Idea: Minimize by least squares the root-mean-squared error of the
radius
in the equation for a circle. In this method, one minimizes the sum of
the squares of the *length* differences, which gives you a non-linear
problem with all the associated pitfalls.

(x-X0)^2 + (y-Y0)^2 = R^2 Equation for a circle
R = SQRT[ (x-X0)^2 + (y-Y0)^2) ] Radius of the circle

where:
(X0,Y0) = center of circle
(x,y) = point coordinates
R = radius

1) Get first estimate for (X0,Y0,R).

(Details: Find some points to make first estimates- either solve the
circle exactly (3 equations, 3 unknowns) to get a first estimate of the
center and radius, or just do a kind of centroid calculation on all
points- to get a rough estimate of the center and radius.)

2) Calculate r (r1, r2,.. rN) for each of your N points from the
equation
for a radius of a circle.

3) Calculate the root-mean-squared error
For example, for 5 given points on the circle:

RMS error = SQRT[ [ (r1-R)^2 + (r2-R)^2 + (r3-R)^2 + (r4-R)^2
+ (r5-R)^2] / 3 ]

(dividing by "3" because we have 3 free parameters.)

4) Change (X0,Y0,R) slightly in your minimization algorithm
to try a new (X0,Y0,R).

MINIMIZATION DETAILS.
---------------------------------------------------------
Because minimization algorithms can get very computationally
intensive, if one's circle-fitting problem is simple, I would look for
a "canned" minimization routine. Some commercial computer programs for
plotting and spreadsheets do this sort of thing. For example, the
Excel spreadsheet has the built-in "Solver" that will perform
minimzation.

Other possibilties for software.

Matlab with the optimization toolbox.

IDL with Markwardt's MPFIT
(http://cow.physics.wisc.edu/~craigm/idl/idl.html)
or MACSYMA. [Amara Graps]

ODRPACK from Netlib is an excellent library for a production mode
approach to fitting these data, with a graphical user interface at
http://plato.la.asu.edu/guide.html At the very beginning of the
User's Guide there is a description of how to fit data to an ellipse
or circle. [Don Wells, Hans D. Mittelmann]
http://plato.la.asu.edu/topics/problems/nlolsq.html

Gaussfit is a superb response to the whole family of problems of
adjusting parameters to fit functions to data; it is especially
effective and easy to use for one-time problems and for exploratory
work [Don Wells].

The L-BFGS-B Nonlinear Optimization package allows one to specify
bounds on the variables, from:
http://www.ece.nwu.edu/~nocedal/lbfgsb.html
[Helmut Jarausch].

The Fortran programs fcircle.f, fellipse.f and the Lawson & Hanson
least-squares routines ls.f shows how to implement these
least-squares problems: ftp://obsftp.unige.ch/fit

Alan Miller has updated the above for Fortran 90.
The least-squares software is at
http://www.ozemail.com.au/~milleraj/
with a working example:
http://www.ozemail.com.au/~milleraj/lsq/fellipse.f90

Some Web Guides

GraphPad Guid to Nonlinear Regression
http://www.graphpad.com/www/nonling1.htm
[Amara Graps]

User's Manual -- GaussFit: {A} system for least squares and robust
estimation", William H. Jefferys and Michael J. Fitzpatrick and
Barbara E. McArthur and James E. McCartney",
ftp://clyde.as.utexas.edu/pub/gaussfit/ [Don Wells]

Other Papers

I. Kasa, "A Curve Fitting Procedure and Its Error Analysis", IEEE
Trans. on Inst. Meas., 3/96, describes an algorithm that is a
modified least squares analysis that uses the difference of the
square of the radii rather than the absolute difference.
[Rod Loewen]

M. Pilu, A. Fitzgibbon, R.Fisher, "Ellipse-specific Direct
least-square Fitting", IEEE International Conference on Image
Processing, Lausanne, September 1996.
http://vision.dai.ed.ac.uk/maurizp/ElliFitDemo/Paper/icip.ht ml A
Java demo is at:
http://hplbwww.hpl.hp.com/people/mp/research/ellipse.htm
[Amara Graps]

Moura, L. and Kitney, R. I. (1991). A direct method for least
-squares circle fitting. Computer Physics Communications 64, 57-63.
[Colin B. Desmond]

"A Buyers Guide to Conic Fitting", A.W. Fitzgibbon, British Machine
Vision Conference, 1995.

Cunningharn, Robert W.: Comparison of three methods for determining
fit parameter uncertainties for the Marquardt Compromise, Computers
in Physics 7(5), 570, (1993) [Amara Graps]

W. Gander, G. H. Golub and R. Strebel Least Squares Fitting of
Circles and Ellipses BIT vol.34, 1994, pgs. 558-578 [Suhail A
Islam].

Berman & Somlo: "Efficient procedures for fitting circles..." IEEE
Instrum & Meast., IM-35, no.1, pp. 31-35, 1986. [Peter Somlo]

Paul T. Boggs and Richard H. Byrd and Robert B. Schnabel, "A Stable
and efficient algorithm for nonlinear orthogonal distance
regression, SIAM Journal on Scientific and Statistical Computing,
1987, 8, 6,1052-1078 [Don Wells].

P. T. Boggs and J. R. Donaldson and R. H. Byrd and R. B. Snabel,
"Algorithm 676, {ODRPACK} -- Software for Weighted orthogonal
distance regression", ACM Transactions On Mathematical Software,
1989, 15, 348-364 [Don Wells].


---------------------------------------------------------

5) Calculate r (r1, r2 etc.) again from new (X0,Y0,R) above.

6) Calculate RMS error again.

7) Compare current RMS error with previous RMS error. If it
doesn't vary by more some small amount, say 10^{-3} then
you're done, otherwise continue steps 4 -- 7.


Other (more elegant) approaches that reduce to a linear system.

If you choose to minimize the squares of the *area* differences, you get
a linear problem, which is a much safer way. [Pawel Gora, Zdislav V.
Kovarik, Daniel Pfenniger, Condensed by Amara Graps]

1. Function to minimize is (sum of the area differences):
Q = Sum { [ (xi - X0)^2 + (yi -Y0)^2 - R^2 ]^2 , i=1..N }

2. A necessary condition is the system of 3 equations with 3 unknowns
X0, Y0, R. Calculate the partial derivatives of Q, with respect to
X0, Y0, R. (all d's are partial)

dQ / dX0 = 0
dQ / dY0 = 0
dQ / dR = 0

3. Developing we get the linear least-squares problem:

| x1 y1 1 | | a | | -x1^2-y1^2 |
| x2 y2 1 | | b | =~ | -x2^2-y2^2 |
| x3 y3 1 | | c | | -x3^2-y3^2 |
| x4 y4 1 | | -x4^2-y4^2 |
| x5 y5 1 | | -x5^2-y5^2 |
..... .........
(for example, for 5 points)

where a = -2 X0; b = -2 Y0 ; c = X0^2 + Y0^2 - R^2.
Take any good least-squares algorithm to solve it, yielding a,b,c.
So the final circle solution will be given with
X0 = -a/2; Y0 = -b/2; R^2 = X0^2+Y0^2 - c.


By the way, with 5 points you can also find the unique quadratic form
(ellipse, hyperbola) which passes exactly through 5 points.
With more than 5 points one can do a linear least-squares as well.
The problem is then to minimize:

| x1^2-y1^2 x1y1 x1 y1 1 | | a | | -x1^2-y1^2 |
| x2^2-y2^2 x2y2 x2 y2 1 | | b | =~ | -x2^2-y2^2 |
| x3^2-y3^2 x3y3 x3 y3 1 | | c | | -x3^2-y3^2 |
| x4^2-y4^2 x4y4 x4 y4 1 | | e | | -x4^2-y4^2 |
| x5^2-y5^2 x5y5 x5 y5 1 | | f | | -x5^2-y5^2 |
..... .........


The robust or L1 or least-first-power approximation [Zdislav V.
Kovarik].

If you try to minimize

W(a,b,r) = SUM(j=1:N) ABS (((x_j-a)^2 + (y_j-b)^2)^(1/2) - r)

all you have to do is set up the 10 (i.e. if 5, choose 3) circles
passing
through every choice of 3 of 5 points, calculate W(a,b,r) for each of
them and pick the minimizing circle. The extra feature is that this
procedure separates and discards points which are conspicuously far from
the majority trend. (Of course, it becomes increasingly time-consuming
when the number of given points increases.)

This method of determining the minimum bounding circle from
a set of _circles_ is solved, and with code available at:
http://www.intergalact.com/circles.html [Sky Coyote]

--

************************************************************ ***
Amara Graps | Max-Planck-Institut fuer Kernphysik
Interplanetary Dust Group | Saupfercheckweg 1
+49-6221-516-543 | 69117 Heidelberg, GERMANY
* http://galileo.mpi-hd.mpg.de/~graps
************************************************************ ***
"Never fight an inanimate object." - P. J. O'Rourke
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: IDL USERS IN ALBERTA, CANADA
Next Topic: Re: Finding all max/min of a graph

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 15:49:20 PDT 2025

Total time taken to generate the page: 0.00616 seconds