matlab学习:最小二乘拟合&基于RANSAC的直线拟合&椭圆拟合

1.最小二乘拟合

最小二乘拟合是一种数学上的近似和优化,利用已知的数据得出一条直线或者曲线,使之在坐标系上与已知数据之间的距离的平方和最小。

2.RANSAC算法

参见王荣先老师的博文 http://www.cnblogs.com/xrwang/archive/2011/03/09/ransac-1.html

3,直线拟合

建立模型时利用直线的一般方程AX+BY+C=0,随机选取两点构建直线模型,计算每个点到此直线的TLS(Total Least Square),TLS小于一定阈值时的点为符合模型的点,点数最多时的模型即为最佳直线模型。再根据此时的直线参数画出最终拟合直线。

4.椭圆拟合

建立模型时利用椭圆的定义方程:dist(P,A)+dist(P,B)=DIST,其中P为椭圆上一点,A和B为椭圆两焦点。随机选取三点A,B,P构建椭圆模型,计算每个点到此两焦点的距离和与DIST的差值,差值小于一定阈值时的点为符合模型的点,点数最多时的模型即为最佳椭圆模型,再根据符合条件的点,利用椭圆一般方程Ax2+Bxy+Cy2+Dx+Ey+F=0 和得到符合点进行系数拟合,根据函数式画出最终拟合椭圆。

5.matlab代码

(1)最小二乘拟合

View Code
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%       FILENAME    LSF.m   
%       FUNCTION    Input points with mouse,Least-squares fit of lines to
%                   2D points
%       DATE        2012-10-12
%       AUTHOR      zhangying
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
%% 鼠标输入点,enter键结束
axis([-10 10 -10 10]);
[x,y]=ginput;   %读取坐标直到按下回车键,返回坐标点的x,y坐标
num=length(x);  %计算点的个数

%% 直接用最小二乘进行拟合
%通过最小化误差的平方和寻找数据的最佳函数匹配
[p1,s1]=polyfit(x,y,1);     %n=1为直线拟合 x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量
[p2,s2]=polyfit(x,y,num-2); %n>1为曲线拟合,找到次数为n的多项式,对于数据点集(x,y),满足差的平方和最小
[p3,s3]=polyfit(x,y,num-1); %x必须是单调的。矩阵s用于在polyval中来估计误差。
xcurve=-10:2:10;            %在这些点处求多项式的值
p1curve=polyval(p1,xcurve); %多项式曲线求值,返回对应自变量xcurve在给定系数P的多项式的值
p2curve=polyval(p2,xcurve);
p3curve=polyval(p3,xcurve);
%% 画图
plot(xcurve,p1curve,'g-',xcurve,p2curve,'b-',...
    xcurve,p3curve,'r-',x,y,'*');
title('不同次数的最小二乘拟合');
legend('degree 1','degree num-2','degree num-1','points');

 (2)基于RANSAC的直线拟合

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RANSAC算法是一种鲁棒性较强的参数估计方法,常用于拟合模型并去除数据中的离群点。与原本的RANSAC算法相比,RANSAC算法进行最小二乘直线拟合有以下好处: 1. 更准确的拟合:传统的RANSAC算法使用随机采样的方式选择内点,可能会选择到一些离群点,从而导致拟合结果不准确。而RANSAC算法进行最小二乘直线拟合,通过计算残差来选择内点,可以更准确地拟合数据。 2. 更高的鲁棒性:RANSAC算法进行最小二乘直线拟合可以通过设置合适的阈值来筛选内点,从而去除离群点的干扰,提高算法的鲁棒性。相比传统的RANSAC算法,它能更好地适应数据中存在的离群点。 3. 更高的稳定性:RANSAC算法进行最小二乘直线拟合可以通过多次迭代选择最优的拟合结果,从而提高算法的稳定性。它可以通过迭代的方式找到最佳的拟合结果,减少了随机性对结果的影响。 4. 更广泛的应用:RANSAC算法进行最小二乘直线拟合不仅可以用于直线拟合,还可以用于其他形状的拟合,如圆、椭圆等。它的灵活性使得它在各种领域都有广泛的应用,如计算机视觉、图像处理等。 总之,RANSAC算法进行最小二乘直线拟合相比原本的RANSAC算法具有更准确的拟合、更高的鲁棒性、更高的稳定性和更广泛的应用。它是一种强大的参数估计方法,可以在处理含有离群点的数据时取得良好的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值