26.01.2015 Views

Least-Squares Circle Fit Given a finite set of points in R2, say { (x i,yi ...

Least-Squares Circle Fit Given a finite set of points in R2, say { (x i,yi ...

Least-Squares Circle Fit Given a finite set of points in R2, say { (x i,yi ...

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

October 24, 2006 10:22 am MDT Page 1 <strong>of</strong> 3<br />

<strong>Least</strong>­<strong>Squares</strong> <strong>Circle</strong> <strong>Fit</strong><br />

R. Bullock<br />

<strong>Given</strong> a <strong>f<strong>in</strong>ite</strong> <strong>set</strong> <strong>of</strong> <strong>po<strong>in</strong>ts</strong> <strong>in</strong> R 2 , <strong>say</strong> {(x i , y i ) | 0 ≤ i < N }, we want to f<strong>in</strong>d the circle that “best”<br />

(<strong>in</strong> a least­squares sense) fits the <strong>po<strong>in</strong>ts</strong>. Def<strong>in</strong>e<br />

x = 1 ∑<br />

x i and y = 1 ∑<br />

y i<br />

N<br />

N<br />

i<br />

and let u i = x i − x, v i = y i − y for 0 ≤ i < N. We solve the problem first <strong>in</strong> (u, v) coord<strong>in</strong>ates,<br />

and then transform back to (x, y).<br />

Let the circle have center (u c , v c ) and radius R. We want to m<strong>in</strong>imize S = ∑ i (g(u i, v i )) 2 , where<br />

g(u, v) = (u − u c ) 2 + (v − v c ) 2 − α, and where α = R 2 . To do that, we differentiate S(α, u c , v c ).<br />

i<br />

∂S<br />

∂α = 2 ∑ i<br />

= −2 ∑ i<br />

g(u i , v i ) ∂g<br />

∂α (u i, v i )<br />

g(u i , v i )<br />

Thus ∂S/∂α = 0 iff<br />

∑<br />

g(u i , v i ) = 0 Eq. 1<br />

i<br />

Cont<strong>in</strong>u<strong>in</strong>g, we have<br />

∂S<br />

∂u c<br />

= 2 ∑ i<br />

= 2 ∑ i<br />

g(u i , v i ) ∂g<br />

∂u c<br />

(u i , v i )<br />

g(u i , v i )2(u i − u c )(−1)<br />

= −4 ∑ i<br />

(u i − u c )g(u i , v i )<br />

= −4 ∑ i<br />

u i g(u i , v i ) + 4 u c<br />

Thus, <strong>in</strong> the presence <strong>of</strong> Eq. 1, ∂S/∂u c = 0 holds iff<br />

∑<br />

g(u i , v i )<br />

i<br />

} {{ }<br />

= 0 by Eq. 1<br />

∑<br />

u i g(u i , v i ) = 0 Eq. 2<br />

i<br />

Similarly, requir<strong>in</strong>g ∂S/∂v c = 0 gives<br />

∑<br />

v i g(u i , v i ) = 0 Eq. 3<br />

i


October 24, 2006 10:22 am MDT Page 2 <strong>of</strong> 3<br />

Expand<strong>in</strong>g Eq. 2 gives<br />

∑ [<br />

u i u<br />

2<br />

i − 2 u i u c + u 2 c + vi 2 − 2 v i v c + vc 2 − α ] = 0<br />

i<br />

Def<strong>in</strong><strong>in</strong>g S u = ∑ i u i, S uu = ∑ i u2 i , etc., we can rewrite this as<br />

S uuu − 2 u c S uu + u 2 c S u + S uvv − 2 v c S uv + v 2 c S u − α S u = 0<br />

S<strong>in</strong>ce S u = 0 , this simplifies to<br />

u c S uu + v c S uv = 1 2 (S uuu + S uvv ) Eq. 4<br />

In a similar fashion, expand<strong>in</strong>g Eq. 3 and us<strong>in</strong>g S v = 0 gives<br />

u c S uv + v c S vv = 1 2 (S vvv + S vuu ) Eq. 5<br />

Solv<strong>in</strong>g Eq. 4 and Eq. 5 simultaneously gives (u c , v c ).<br />

orig<strong>in</strong>al coord<strong>in</strong>ate system is (x c , y c ) = (u c , v c ) + (x, y).<br />

Then the center (x c , y c ) <strong>of</strong> the circle <strong>in</strong> the<br />

To f<strong>in</strong>d the radius R, expand Eq. 1:<br />

∑ [<br />

u<br />

2<br />

i − 2 u i u c + u 2 c + vi 2 − 2 v i v c + vc 2 − α ] = 0<br />

i<br />

Us<strong>in</strong>g S u = S v = 0 aga<strong>in</strong>, we get<br />

N ( u 2 c + v2 c − α ) + S uu + S vv = 0<br />

Thus<br />

α = u 2 c + v2 c + S uu + S vv<br />

N<br />

Eq. 6<br />

and, <strong>of</strong> course, R = √ α.<br />

See the next page for an example!


October 24, 2006 10:22 am MDT Page 3 <strong>of</strong> 3<br />

Example : Let’s take a few <strong>po<strong>in</strong>ts</strong> from the parabola y = x 2 and fit a circle to them. Here’s a table<br />

giv<strong>in</strong>g the <strong>po<strong>in</strong>ts</strong> used:<br />

i x i y i u i v i<br />

0 0.000 0.000 -1.500 -3.250<br />

1 0.500 0.250 -1.000 -3.000<br />

2 1.000 1.000 -0.500 -2.250<br />

3 1.500 2.250 0.000 -1.000<br />

4 2.000 4.000 0.500 0.750<br />

5 2.500 6.250 1.000 3.000<br />

6 3.000 9.000 1.500 5.750<br />

Here we have N = 7, x = 1.5, and y = 3.25. Also, S uu = 7, S uv = 21, S vv = 68.25, S uuu = 0,<br />

S vvv = 143.81, S uvv = 31.5, S vuu = 5.25. Thus (us<strong>in</strong>g Eq. 4 and Eq. 5) we have the follow<strong>in</strong>g 2 × 2<br />

l<strong>in</strong>ear system for (u c , v c ):<br />

[ 7 21<br />

21 68.25<br />

] [<br />

uc<br />

v c<br />

]<br />

=<br />

[ ] 15.75<br />

74.531<br />

Solv<strong>in</strong>g this system gives (u c , v c ) = (−13.339, 5.1964), and thus (x c , y c ) = (−11.839, 8.4464). Substitut<strong>in</strong>g<br />

these values <strong>in</strong>to Eq. 6 gives α = 215.69, and hence R = 14.686. A plot <strong>of</strong> this example appears<br />

below.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!