椭圆拟合算法
椭圆拟合在医疗图像、工程设计、交通识别、生物识别、人工智能、林火蔓延等领域具有广泛应用,本文总结前人研究综合出基于MATLAB的三种椭圆拟合的算法:直接计算方法,二次多项式拟合方法,标准方程拟合方法。
一,二次多项式拟合方法
利用圆锥曲线二次函数拟合,求算五个参数。关键在于估计的参数单位. p0=[1 1 1 1 1 1]为系数。
% 拟合椭圆型曲线段
close all;
clear; clc; close all;
% 设出圆锥曲线方程
F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4)*x(:,1)+p(5)*x(:,2)+p(6);%椭圆一般方程
% 离散数据点
Up=xlsread('E:\\Up.xls');%excel文件路径
UpX=Up(:,1);
UpY=Up(:,2);
% p0系数初值
p0=[1 1 1 1 1 1];
warning off
% 拟合系数,最小二乘方法
p =nlinfit(Up,zeros(size(Up,1),1),F,p0);
plot(UpX,UpY,'r.');
hold on;
UpMinx=min(UpX);
UpMaxx=max(UpX);
UpMiny=min(UpY);
UpMaxy=max(UpY);
% 作图
ezplot(@(x,y)F(p,[x,y]),[-1+UpMinx,1+UpMaxx,-1+UpMiny,1+UpMaxy]);
title('曲线拟合');
legend('样本点','