利用最小二乘法拟合椭圆

数学推导

这里$x_i$和$y_i$分别就是$i$点的$x$轴坐标和$y$轴坐标。这里是对$i$个点进行拟合。

在原始测得的N(N≥5)组数据($x_i$,$y_i$),($i=1,2,3,…,N$)中,根据椭圆方程通式和最小二乘法原理,求目标函数

$$F(A, B, C, D, E) = \sum^N_{i = 1}(x^2_i + Ax_iy_i + By_i^2 + Cx_i + Dy_i + E)^2$$

的最小值来确定参数A、B、C、D和E。令F(A,B,C,D,E)对各个参数的偏导数均为零,得到以下方程组:

$$
\begin{bmatrix}
\sum^N_{i = 1} x_i^2y_i^2 & \sum^N_{i = 1} x_iy_i^3 & \sum^N_{i = 1} x_i^2y_i & \sum^N_{i = 1} x_iy_i^2 & \sum^N_{i = 1} x_iy_i \
\sum^N_{i = 1} x_iy_i^3 & \sum^N_{i = 1} y_i^4 & \sum^N_{i = 1} x_iy_i^2 & \sum^N_{i = 1} y_i^3 & \sum^N_{i = 1} y_i^2 \
\sum^N_{i = 1} x_i^2y_i & \sum^N_{i = 1} x_iy_i^2 & \sum^N_{i = 1} x_i^2 & \sum^N_{i = 1} x_iy_i & \sum^N_{i = 1} x_i \
\sum^N_{i = 1} x_iy_i^2 & \sum^N_{i = 1} y_i^3 & \sum^N_{i = 1} x_iy_i & \sum^N_{i = 1} y_i^2 & \sum^N_{i = 1} y_i \
\sum^N_{i = 1} x_iy_i & \sum^N_{i = 1} y_i^2 & \sum^N_{i = 1} x_i & \sum^N_{i = 1} y_i & N \
\end{bmatrix}
\begin{bmatrix}
A \
B \
C \
D \
E \
\end{bmatrix} =
\begin{bmatrix}
\sum^N_{i = 1} x_i^3y_i \
\sum^N_{i = 1} x_i^2y_i^2 \
\sum^N_{i = 1} x_i^3 \
\sum^N_{i = 1} x_i^2y_i \
\sum^N_{i = 1} x_i^2 \
\end{bmatrix}
$$

可以写为

$$
M
\begin{bmatrix}
A \
B \
C \
D \
E \
\end{bmatrix} =
N
$$

则$\begin{bmatrix} A \ B \ C \ D \ E \end{bmatrix} = N \backslash M$即可得到拟合系数。

然后求解参数$x_0, y_0, a, b, q$

$x_0 = \frac{B·E - 2·C·D}{4·A·C - B^2}$
$y_0 = \frac{B·D - 2·A·E}{4·A·C - B^2}$
$a = \sqrt{\frac{2·A·x_0^2 + 2·C·y_0^2 + 2·B·x_0·y_0 - 2}{A + C + \sqrt{(A - C)^2 + B^2}}}$
$b = \sqrt{\frac{2·A·x_0^2 + 2·C·y_0^2 + 2·B·x_0·y_0 - 2}{A + C - \sqrt{(A - C)^2 + B^2}}}$
$q = \frac{1}{2} \arctan \frac{B}{A - C}$

求解得到椭圆的中心点坐标$x_0$和$y_0$、椭圆的长轴$a$和短轴$b$、倾斜的弧度$q$

论文

可以参考论文Direct Least Squares Fitting of Ellipses

  • 算法思想:
    • 算法通过最小化约束条件4ac-b^2 = 1,最小化距离误差。利用最小二乘法进行求解,首先引入拉格朗日乘子算法获得等式组,然后求解等式组得到最优的拟合椭圆。
  • 算法的优点:
    • a、椭圆的特异性,在任何噪声或者遮挡的情况下都会给出一个有用的结果;
    • b、不变性,对数据的Euclidean变换具有不变性,即数据进行一系列的Euclidean变换也不会导致拟合结果的不同;
    • c、对噪声具有很高的鲁棒性;
    • d、计算高效性。
  • 算法原理:

Donate comment here