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 ...
- 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 leastsquares 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.