问题
给定离散点集 X i = ( x i , y i ) X_i=(x_i,y_i) Xi=(xi,yi),我们希望找到最好的椭圆去拟合这些离散点。
方法
通常我们使用最小二乘法求解如下的最优化问题:
M i n ∑ i = 1 N f ( x i , E ) 2 Min \sum_{i=1}^N f(x_i,E)^2 Mini=1∑Nf(xi,E)2
这里 f ( x i , E ) f(x_i,E) f(xi,E)表示点 x i x_i xi到E(指待拟合的椭圆)的最小距离。
通常我们有两种方法来表达 f ( x i , E ) f(x_i,E) f(xi,E),分别是:几何距离和代数距离。前面我们已经描述了基于代数距离的椭圆拟合,下面我们将重点介绍基于几何距离的椭圆拟合方法,这种方法也是椭圆拟合方法中最鲁棒、精度最高的拟合方法。
我们主要参考论文《Least-squares orthogonal distances fitting of circle,
sphere, ellipse, hyperbola, and parabola》。
论文的核心思路
显然,由于离散点到椭圆的几何距离是非线性的,因此椭圆拟合是一种非线性优化的问题,需要通过多次迭代求解。
因此下面我们阐述论文的思路时,将分成两个片段来讲解。第一段,主要介绍基于高斯-牛顿法的非线性优化方法。第二段,具体介绍这种方法在椭圆拟合中的应用。
非线性最小二乘拟合
问题
考虑一般的非线性最小二乘问题如下:
min a ∣ ∣ X − F ( a ) ∣ ∣ 2 ( 1 ) \min_a~~||X-F(a)||^2 ~~~~~~~~~~~~~~~~~~~~~~~~~ (1) amin ∣∣X−F(a)∣∣2 (1)
这里 a ∈ R q a\in R^q a∈Rq为优化参数,F为非线性函数, X ∈ R p X\in R^p X∈Rp是已知向量。如下我们给出基于梯度的迭代公式:
a k + 1 = a k + λ A J F T ( X − F ( a k ) ) ( 2 ) a_{k+1}=a_{k}+\lambda AJ_F^T(X-F(a_k)) ~~~~~~~~~~~~~~~~~~~~~~~~~(2) ak+1=ak+λAJFT(X−F(ak)) (2)
这里 λ \lambda λ为步长,A为缩放因子,J_F为F在当前参数a下的Jacobian矩阵。
各种优化方法不同,主要是A的选择不同。具体如下:
- 当 A = H − 1 A=H^{-1} A=H−1时,为牛顿迭代法。
- 当 A = ( J F T J F ) − 1 A=(J_F^TJ_F)^{-1} A=(JFTJF)−1时,为高斯-牛顿迭代法。
- 当 A = I A=I A=I时,为梯度下降法。
这里我们选择使用高斯-牛顿迭代法。
我们将A带入(2),即可以改写为:
{ a k + 1 = a k + λ Δ a ( 3 ) J F Δ a = X − F ( a k ) ( 4 ) \left\{\begin{matrix} a_{k+1}=a_{k}+\lambda \Delta a ~~~~~~~~~~~~~~~~~(3)\\ J_F\Delta a= X-F(a_k)~~~~~~~~~~~~~~(4) \end{matrix}\right. {
ak+1=ak+λΔa (3)JFΔa=X−F(ak) (4)
这里 J F = ( ∂ F i ∂ a j ) , i = 1 , 2 , . . . , p , j = 1 , 2 , . . . , q J_F=(\frac{\partial F_i}{\partial a_j}),i=1,2,...,p,j=1,2,...,q JF=(∂aj∂Fi),i=1,2,...,p,j=1,2,...,q
并且,我们根据(1)可以写出迭代算法的性能表现指数,其实就是参差的表达式:
σ 0 2 = ∣ ∣ X − F ( a ) ∣ ∣ 2 = [ X − F ( a ) ] T [ X − F ( a ) ] ( 5 ) \sigma_0^2=||X-F(a)||^2 =[X-F(a)]^T[X-F(a)]~~~~~~~~~~~~~~(5) σ02=∣∣X−F(a)∣∣2=[X−F(a)]T