|
拟合椭圆更一般就是对圆锥曲线拟合,椭圆、双曲线、抛物线区在方程中区别在于偏心率同“ 1 ”的比较。下文对于椭圆的拟合,可以更一般的推广到其它圆锥曲线的拟合中去。
在二维平面 xy 坐标系中有一离散的点集 , i =0,1,2,3…n- 1 ,这 n 个点分布在椭圆曲线方程 上,其中 为点与拟合的期望方程 的偏差。
在 xy 坐标系中,椭圆方程的基本形式是: 。
证明如下:
圆锥曲线上的每一点 与曲线外的某点 的距离,与其到某直线 l : 的距离之比为常数 ,偏心率的大小也就决定了圆锥曲线的类型。
;
所以圆锥曲线满足形式: 。证毕
曲线的拟合方程的原则是: → 。
, , , , 之间线性无关,所以可以使问题转化为最小二乘线性拟合问题,如下:
= ;
= ;
= ;
;
为了得到系数矩阵 X ,使得曲线方程 → ,对期望求导,得到最小二乘的矩阵表达式: ,点集的数量 n 大于 5 时,得到矩阵 以 2 范数为距离度量规则的最小解。当 可逆时 。
MATLAB 代码:
function [F]=ellipsefit(X,Y)
X=X';
Y=Y';
M=[X.^2,Y.^2,X.*Y,X,Y];
temp=M'*M;
temp=inv(temp);
n=size(X,1);
F=temp*M'*ones(n,1);
end
Position: (-3.8 ,-1) 、 (-4.5 ,3.27) 、 (0.7701,-0.084) 、 (-1.32,-2.19) 、 (-4,0.05) 、 (1.054,3.32) 、 (-0.9196,6.8342) 、 (-3.59,6.17);
Return F: F =[ 0.3008 ,0.1097,0.0154,0.9925,-0.4985];
椭圆方程拟合结束后,对于图像处理来说,通常需要把其“扶正”。
可以通过 xy 坐标系旋转来扶正,椭圆方程: ,改写成矩阵形式:
寻找 使正交阵 P 满足:
而由对称关系得出:
;
再而求得 ,这便是坐标轴扶正所需旋转的角度的正切值。
由上文中拟合的的数据可以得到 。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 12:44
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社