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