普通最小二乘法拟合圆的公式推导
问题描述
给定一组二维点 ( x i , y i ) (x_i, y_i) (xi,yi),寻找一个圆 ( x − a ) 2 + ( y − b ) 2 = r 2 (x - a)^2 + (y - b)^2 = r^2 (x−a)2+(y−b)2=r2,使得这些点到圆的距离的平方和最小。
推导过程
圆的方程:
圆的标准方程为:
( x − a ) 2 + ( y − b ) 2 = r 2 (x - a)^2 + (y - b)^2 = r^2 (x−a)2+(y−b)2=r2
展开后为:
x 2 + y 2 − 2 a x − 2 b y + ( a 2 + b 2 − r 2 ) = 0 x^2 + y^2 - 2ax - 2by + (a^2 + b^2 - r^2) = 0 x2+y2−2ax−2by+(a2+b2−r2)=0误差函数:
对于每个点 ( x i , y i ) (x_i, y_i) (xi,yi),误差定义为该点到圆的距离的平方:
e i = ( x i − a ) 2 + ( y i − b ) 2 − r 2 e_i = (x_i - a)^2 + (y_i - b)^2 - r^2 ei=(xi−a)2+(yi−b)2−r2
总误差为所有点的误差平方和:
E = ∑ i = 1 n [ ( x i − a ) 2 + ( y i − b ) 2 − r 2 ] 2 E = \sum_{i=1}^n \left[(x_i - a)^2 + (y_i - b)^2 - r^2\right]^2 E=i=1∑n[(xi−a)2+(yi−b)2−r2]2最小化误差:
为了最小化 E E E,我们需要对 a , b , r a, b, r a,b,r 求偏导并令其为零:
∂ E ∂ a = 0 , ∂ E ∂ b = 0 , ∂ E ∂ r = 0 \frac{\partial E}{\partial a} = 0, \quad \frac{\partial E}{\partial b} = 0, \quad \frac{\partial E}{\partial r} = 0 ∂a∂E=0,∂b∂E=0,∂r∂E=0构造线性方程组:
展开误差函数并整理,得到以下线性方程组:
{ ∑ i = 1 n ( x i − a ) ( − 2 ) ⋅ [ ( x i − a ) 2 + ( y i − b ) 2 − r 2 ] = 0 ∑ i = 1 n ( y i − b ) ( − 2 ) ⋅ [ ( x i − a ) 2 + ( y i − b ) 2 − r 2 ] = 0 ∑ i = 1 n ( − 2 r ) ⋅ [ ( x i − a ) 2 + ( y i − b ) 2 − r 2 ] = 0 \begin{cases} \sum_{i=1}^n (x_i - a)(-2) \cdot \left[(x_i - a)^2 + (y_i - b)^2 - r^2\right] = 0 \\ \sum_{i=1}^n (y_i - b)(-2) \cdot \left[(x_i - a)^2 + (y_i - b)^2 - r^2\right] = 0 \\ \sum_{i=1}^n (-2r) \cdot \left[(x_i - a)^2 + (y_i - b)^2 - r^2\right] = 0 \end{cases} ⎩ ⎨ ⎧∑i=1n(xi−a)(−2)⋅[(xi−a)2+(yi−b)2−r2]=0∑i=1n(yi−b)(−2)⋅[(xi−a)2+(yi−b)2−r2]=0∑i=1n(−2r)⋅[(xi−a)2+(yi−b)2−r2]=0解方程组:
通过矩阵求逆或迭代方法(如高斯-牛顿法)求解上述方程组,得到 a , b , r a, b, r a,b,r 的最优解。
最终公式
普通最小二乘法拟合圆的公式为:
{ a = 1 2 n ∑ i = 1 n ( x i − ∑ i = 1 n x i 3 + ∑ i = 1 n x i y i 2 − ∑ i = 1 n x i ∑ i = 1 n x i 2 − ∑ i = 1 n x i ∑ i = 1 n y i 2 ∑ i = 1 n x i 2 + ∑ i = 1 n y i 2 − 1 n ( ∑ i = 1 n x i ) 2 − 1 n ( ∑ i = 1 n y i ) 2 ) b = 1 2 n ∑ i = 1 n ( y i − ∑ i = 1 n y i 3 + ∑ i = 1 n x i 2 y i − ∑ i = 1 n y i ∑ i = 1 n x i 2 − ∑ i = 1 n y i ∑ i = 1 n y i 2 ∑ i = 1 n x i 2 + ∑ i = 1 n y i 2 − 1 n ( ∑ i = 1 n x i ) 2 − 1 n ( ∑ i = 1 n y i ) 2 ) r = 1 n ∑ i = 1 n ( ( x i − a ) 2 + ( y i − b ) 2 ) \begin{cases} a = \frac{1}{2n} \sum_{i=1}^n \left( x_i - \frac{\sum_{i=1}^n x_i^3 + \sum_{i=1}^n x_i y_i^2 - \sum_{i=1}^n x_i \sum_{i=1}^n x_i^2 - \sum_{i=1}^n x_i \sum_{i=1}^n y_i^2}{\sum_{i=1}^n x_i^2 + \sum_{i=1}^n y_i^2 - \frac{1}{n} \left( \sum_{i=1}^n x_i \right)^2 - \frac{1}{n} \left( \sum_{i=1}^n y_i \right)^2} \right) \\ b = \frac{1}{2n} \sum_{i=1}^n \left( y_i - \frac{\sum_{i=1}^n y_i^3 + \sum_{i=1}^n x_i^2 y_i - \sum_{i=1}^n y_i \sum_{i=1}^n x_i^2 - \sum_{i=1}^n y_i \sum_{i=1}^n y_i^2}{\sum_{i=1}^n x_i^2 + \sum_{i=1}^n y_i^2 - \frac{1}{n} \left( \sum_{i=1}^n x_i \right)^2 - \frac{1}{n} \left( \sum_{i=1}^n y_i \right)^2} \right) \\ r = \sqrt{\frac{1}{n} \sum_{i=1}^n \left( (x_i - a)^2 + (y_i - b)^2 \right)} \end{cases} ⎩
⎨
⎧a=2n1∑i=1n(xi−∑i=1nxi2+∑i=1nyi2−n1(∑i=1nxi)2−n1(∑i=1nyi)2∑i=1nxi3+∑i=1nxiyi2−∑i=1nxi∑i=1nxi2−∑i=1nxi∑i=1nyi2)b=2n1∑i=1n(yi−∑i=1nxi2+∑i=1nyi2−n1(∑i=1nxi)2−n1(∑i=1nyi)2∑i=1nyi3+∑i=1nxi2yi−∑i=1nyi∑i=1nxi2−∑i=1nyi∑i=1nyi2)r=n1∑i=1n((xi−a)2+(yi−b)2)
带有约束的最小二乘法拟合圆的公式推导
问题描述
给定一组二维点 ( x i , y i ) (x_i, y_i) (xi,yi),寻找一个圆 ( x − a ) 2 + ( y − b ) 2 = r 2 (x - a)^2 + (y - b)^2 = r^2 (x−a)2+(y−b)2=r2,使得这些点到圆的距离的平方和最小,同时满足某些约束条件(例如圆心位置或半径固定)。
推导过程
引入约束条件:
假设约束条件为 g ( a , b , r ) = 0 g(a, b, r) = 0 g(a,b,r)=0,例如:- 圆心固定: a = a 0 , b = b 0 a = a_0, b = b_0 a=a0,b=b0
- 半径固定: r = r 0 r = r_0 r=r0
构造拉格朗日函数:
引入拉格朗日乘数 λ \lambda λ,构造拉格朗日函数:
L ( a , b , r , λ ) = ∑ i = 1 n [ ( x i − a ) 2 + ( y i − b ) 2 − r 2 ] 2 + λ ⋅ g ( a , b , r ) \mathcal{L}(a, b, r, \lambda) = \sum_{i=1}^n \left[(x_i - a)^2 + (y_i - b)^2 - r^2\right]^2 + \lambda \cdot g(a, b, r) L(a,b,r,λ)=i=1∑n[(xi−a)2+(yi−b)2−r2]2+λ⋅g(a,b,r)求导并解方程组:
对 a , b , r , λ a, b, r, \lambda a,b,r,λ 求偏导并令其为零:
∂ L ∂ a = 0 , ∂ L ∂ b = 0 , ∂ L ∂ r = 0 , ∂ L ∂ λ = 0 \frac{\partial \mathcal{L}}{\partial a} = 0, \quad \frac{\partial \mathcal{L}}{\partial b} = 0, \quad \frac{\partial \mathcal{L}}{\partial r} = 0, \quad \frac{\partial \mathcal{L}}{\partial \lambda} = 0 ∂a∂L=0,∂b∂L=0,∂r∂L=0,∂λ∂L=0解方程组:
通过矩阵求逆或迭代方法求解上述方程组,得到 a , b , r a, b, r a,b,r 的最优解。
最终公式
带有约束的最小二乘法拟合圆的公式取决于具体的约束条件。以下为两种常见约束的公式:
圆心固定:
{ a = a 0 b = b 0 r = 1 n ∑ i = 1 n ( ( x i − a 0 ) 2 + ( y i − b 0 ) 2 ) \begin{cases} a = a_0 \\ b = b_0 \\ r = \sqrt{\frac{1}{n} \sum_{i=1}^n \left( (x_i - a_0)^2 + (y_i - b_0)^2 \right)} \end{cases} ⎩ ⎨ ⎧a=a0b=b0r=n1∑i=1n((xi−a0)2+(yi−b0)2)半径固定:
{ r = r 0 a = 1 2 n ∑ i = 1 n ( x i − ∑ i = 1 n x i ( ( x i − a ) 2 + ( y i − b ) 2 − r 0 2 ) ∑ i = 1 n ( ( x i − a ) 2 + ( y i − b ) 2 − r 0 2 ) ) b = 1 2 n ∑ i = 1 n ( y i − ∑ i = 1 n y i ( ( x i − a ) 2 + ( y i − b ) 2 − r 0 2 ) ∑ i = 1 n ( ( x i − a ) 2 + ( y i − b ) 2 − r 0 2 ) ) \begin{cases} r = r_0 \\ a = \frac{1}{2n} \sum_{i=1}^n \left( x_i - \frac{\sum_{i=1}^n x_i \left( (x_i - a)^2 + (y_i - b)^2 - r_0^2 \right)}{\sum_{i=1}^n \left( (x_i - a)^2 + (y_i - b)^2 - r_0^2 \right)} \right) \\ b = \frac{1}{2n} \sum_{i=1}^n \left( y_i - \frac{\sum_{i=1}^n y_i \left( (x_i - a)^2 + (y_i - b)^2 - r_0^2 \right)}{\sum_{i=1}^n \left( (x_i - a)^2 + (y_i - b)^2 - r_0^2 \right)} \right) \end{cases} ⎩ ⎨ ⎧r=r0a=2n1∑i=1n(xi−∑i=1n((xi−a)2+(yi−b)2−r02)∑i=1nxi((xi−a)2+(yi−b)2−r02))b=2n1∑i=1n(yi−∑i=1n((xi−a)2+(yi−b)2−r02)∑i=1nyi((xi−a)2+(yi−b)2−r02))
总结
- 普通最小二乘法:通过最小化点到圆的距离平方和,求解圆心 ( a , b ) (a, b) (a,b) 和半径 r r r。
- 带有约束的最小二乘法:在普通最小二乘法的基础上,引入约束条件(如圆心或半径固定),通过拉格朗日乘数法求解最优解。