线性最小二乘拟合实验

本文介绍了如何使用最小二乘优化原理进行直线和圆的拟合,以及在数字图像中检测圆的应用。通过实验步骤详细展示了从生成数据、拟合函数到图像处理的全过程,强调了最小二乘法在实际问题中的重要性。
摘要由CSDN通过智能技术生成

一、实验目的

掌握最小二乘优化原理,及其在数据分析中的应用。

二、实验内容

必做项:

(1)仿真生成直线观测数据,根据上述直线拟合公式推导编写直线拟合函数,然后拟合直线方程,画出观测数据和拟合直线。

(2)仿真生成圆曲线观测数据,根据上述圆拟合公式推导编写圆拟合函数,然后拟合圆曲线方程,画出观测数据和拟合圆曲线。

(3)利用最小二乘圆拟合法,检测数字图像中的圆。

步骤 1:读入数字图像文件,检测图像中的边缘;

步骤 2:对边缘进行连通域标记;

步骤 3:根据长宽比等简单特征,对每个连通域进行初步筛选;

步骤 4:对经过筛选的每个连通域进行圆拟合;

步骤 5:计算圆拟合的误差,对拟合误差过大的圆进行剔除;

步骤 6:画出拟合圆曲线和圆形 

三、实验原理

该实验类型为应用性实验:给定输入输出的样本数据集(xi,yi),选择模型函数 f(),w 为函数参数,通过最小化预测值 f(xi)与观测值yi之间的误差总和,来确定函数 f()中的相关参数w。

miniei=iati+b-yi2

直线拟合的公式推导如下:目标函数:miniei=iati+b-yi2 ,二次函数取最小值的地方,偏导数为0:∂f(a,b)∂a=ai=1Nxi2+bi=1Nxi2-i=1Nxiyi=0 ,代入函数具体形式:

∂f(a,b)∂a=ai=1Nxi2+bi=1Nxi2-i=1Nxiyi=0,

 ∂f(a,b)∂b=ai=1Nti2+Nb-i=1Nyi=0

两个方程,两个未知数。求解方程即可得到参数 a,b

圆拟合的公式推导如下:

四、实验结果分析

(1) 仿真生成直线观测数据,根据直线拟合公式推导编写直线拟合函数,然后拟合直线方程,画出观测数据和拟合直线。具体代码如下:

x=[0.5,1,1.5,2,2.5,3,4,8,9];

y=[2.3,2.6,3.3,3.8,4.5,4.6,5.5,5.9,6.3];

[k,b]=linefit(x,y);

y1=polyval([k,b],x);

plot(x,y,'*',x,y1,'r-');

xlabel('x');ylabel('y');

运行后可以得到如图1所示的结果。

本程序采用系统自带函数linefit(),polyval()进行直线拟合,由图1可以看到其正确的拟合了直线。

图 1

(2)仿真生成圆曲线观测数据,根据圆拟合公式推导编写圆拟合函数,然后拟合圆曲线方程,画出观测数据和拟合圆曲线。

N=20; %圆上采样 20 个点

noise=0.1*randn(N,1)

n = 0:N-1;

%每个点对应的角度

theta = n*2*pi/N;

%噪声数据

noise = 0.1*randn(N,1);

%半径为 1,叠加噪声

r = 5*ones(N,1)+noise;

%计算 x 坐标,再加上平移量

x = r.*cos(theta')+6;

%计算 y 坐标,再加上 y 方向平移量

y = r.*sin(theta')+8; scatter(x,y);

hold on;

axis equal;

[R,A,B]=circleFit(x,y,N)

angle=0:0.05:2*pi;

x1=R.*cos(angle')+A;

y1=R.*cos(angle')+B;

plot(x1,y1,R)

在命令窗口运行,可以得到如图2所示的输出结果。

图 2

由结果可以看到编写的函数circleFit完成了对圆曲线方程的拟合。

3)利用最小二乘圆拟合法,检测数字图像中的圆。

f=imread('1.jpg');

BW=im2bw(f);

BW=bwperim(BW); % 提取二值图像图像边缘

%进行连通域标记,一个连通域表示一个曲线的样本数据集

[L,num] = bwlabel(BW,8); %8 表示 8 连通 4 表示 4 连通

RGB=label2rgb(L);

figure;

imshow(RGB);

hold on;

[M,N]=size(f);

for k =2:num

[y,x] = find(L == k); %获取第 k 个连通域的所有像素坐标

if length(x)<20 %轮廓的像素数量表示周长

continue;

end

HWration = (max(y)-min(y)+1)./(max(x)-min(x)+1);

if HWration>0.8 && HWration<1.2 %计算每个轮廓的长宽比

%拟合

[R,A,B,MAENormal] = circleFit(x,y); %圆拟合的代码

if MAENormal<0.1 %拟合误差

plot(A,B,'r+');

LCircle = [LCircle,k];

end

end

en

可以得到如图3所示的结果:

图 3

由图3可知,本次编码成功实现了利用最小二乘圆拟合法,检测数字图像中的圆。步骤 1:读入数字图像文件,检测图像中的边缘;步骤 2:对边缘进行连通域标记;步骤 3:根据长宽比等简单特征,对每个连通域进行初步筛选;步骤 4:对经过筛选的每个连通域进行圆拟合;步骤 5:计算圆拟合的误差,对拟合误差过大的圆进行剔除;步骤 6:画出拟合圆曲线和圆形。

五、实验小结

本次实验在理论学习的基础上,加深了对掌握最小二乘优化原理的理解,及其在数据分析中的应用。最小二乘法原理是一种常用的数学优化方法,其基本原理是通过最小化损失函数的值来估计参数,从而拟合数据。在研究两个变量之间的相互关系时,可以得到一系列成对的数据,将这些数据描绘在坐标系中,建立直线方程,应用最小二乘法原理,将实测值与计算值的离差的平方和最小为“优化判据”。 最小二乘法的目标是找到一条直线,使得训练数据集中的点到这条直线的距离平方和最小。

  • 27
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值