Ransac和圆拟合Word格式文档下载.docx

上传人:b****4 文档编号:16497691 上传时间:2022-11-24 格式:DOCX 页数:8 大小:92.39KB
下载 相关 举报
Ransac和圆拟合Word格式文档下载.docx_第1页
第1页 / 共8页
Ransac和圆拟合Word格式文档下载.docx_第2页
第2页 / 共8页
Ransac和圆拟合Word格式文档下载.docx_第3页
第3页 / 共8页
Ransac和圆拟合Word格式文档下载.docx_第4页
第4页 / 共8页
Ransac和圆拟合Word格式文档下载.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

Ransac和圆拟合Word格式文档下载.docx

《Ransac和圆拟合Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Ransac和圆拟合Word格式文档下载.docx(8页珍藏版)》请在冰豆网上搜索。

Ransac和圆拟合Word格式文档下载.docx

的及要求

RANSAC即随机抽样一致。

它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。

它是一种不确定的算法——它有一定的概率得出一个合理的结果。

借助MATLAB工具,通过RANSAC算法拟合圆,理解其原理,分析它的优点与确定。

实验仪器设备

实验设备为一台装有win10系统的PC,matlab2015b软件。

实验原理

利用圆的定义,圆是平面内到定点F1、F2的距离之和等于常数(大于|F1F2|)的动点P的轨迹,F1、F2称为圆的两个焦点。

其数学表达式为:

|PF1|+|PF2|=2a(2a>

|F1F2|)。

选取3个点,2个焦点,1个过圆的点,就能确定圆。

实验内容

有一个模型适应于假设的局内点,即所有的未知参数都能从假设的局内点计算得出。

用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点。

如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。

然后,用所有假设的局内点去重新估计模型(譬如使用最小二乘法),因为它仅仅被初始的假设局内点估计过。

最后,通过估计局内点与模型的错误率来评估模型。

上述过程被重复执行固定的次数,每次产生的模型要么因为局内点太少而被舍弃,要么因为比现有的模型更好而被选用。

实验步骤及方法

第一步:

生成随机点,本实验随机点的数量设置为300;

第二步:

参数的初始化,设置圆长短轴,生成圆模型;

第三步:

由圆定义,查找符合圆模型的点;

第四步:

画出拟合结果;

实验数据

matlab程序代码:

clc;

clear;

%%生成带噪声的圆

%参数初始化

g_NumOfPoints=500;

%点数

g_ErrPointPart=0.5;

%噪声

g_NormDistrVar=3;

%标准偏差

a=20;

b=20;

%长轴短轴

angle=60;

%倾斜角

%%圆生成

beta=angle*(pi/180);

alpha=linspace(0,360,g_NumOfPoints).*(pi/180);

X=(a*cos(alpha)*cos(beta)-b*sin(alpha)*sin(beta))+wgn(1,length(alpha),g_NormDistrVar^2,'

linear'

);

Y=(a*cos(alpha)*sin(beta)+b*sin(alpha)*cos(beta))+wgn(1,length(alpha),g_NormDistrVar^2,'

Data=[X;

Y];

plot(Data(1,:

),Data(2,:

),'

.'

'

Tag'

DATA'

holdon;

%%RANSAC圆拟合

%圆一般方程:

Ax2+Bxy+Cy2+Dx+Ey+F=0

%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)

%%参数初始化

nSampLen=2;

%设定模型所依据的点数

nDataLen=size(Data,2);

%数据长度

nIter=50;

%最大循环次数

dThreshold=2;

%残差阈值

nMaxInlyerCount=-1;

%点数下限

A=zeros([21]);

%B=zeros([21]);

P=zeros([21]);

%%主循环

fori=1:

nIter

SampleMask=zeros([1nDataLen]);

whilesum(SampleMask)~=nSampLen%~=不等于

ind=ceil(nDataLen.*rand(1,nSampLen-sum(SampleMask)));

%抽样,选取nSampLen个不同的点

SampleMask(ind)=1;

end

Sample=find(SampleMask);

%找出非零元素的索引值,即建立模型的点

%%建立模型,存储建模需要的坐标点,焦点和过圆的一个点

%圆定义方程:

到两定点之间距离和为常数

A(:

1)=Data(:

ind

(1));

%圆点

%B(:

ind

(2));

%焦点

P(:

%圆上一点

DIST=sqrt((P(1,1)-A(1,1)).^2+(P(2,1)-A(2,1)).^2);

%DIST=(((P(1,1)-A(1,1)).^2)+((P(2,1)-A(2,1)).^2);

xx=[];

nCurInlyerCount=0;

%初始化点数为0个

%%是否符合模型?

fork=1:

g_NumOfPoints

CurModel=[A(1,1)A(2,1)DIST];

pdist=((Data(1,k)-A(1,1)).^2+(Data(2,k)-A(2,1)).^2);

CurMask=(abs(DIST-pdist)<

dThreshold);

%到直线距离小于阈值的点符合模型,标记为1

nCurInlyerCount=nCurInlyerCount+CurMask;

%计算符合圆模型的点的个数

if(CurMask==1)

xx=[xx,Data(:

k)];

end

%%选取最佳模型

ifnCurInlyerCount>

nMaxInlyerCount%符合模型的点数最多的模型即为最佳模型

nMaxInlyerCount=nCurInlyerCount;

Ellipse_mask=CurMask;

Ellipse_model=CurModel;

Ellipse_points=[AP];

Ellipse_x=xx;

end

%%由符合点拟合圆x^2+y^2+Dx+Ey+F=0

%F=@(p,x)p

(1)*x(:

1)+p(5)*x(:

2)+p(6);

p

(1)=1;

p

(2)=0;

p(3)=1;

F=@(p,x)p

(1)*x(:

1).^2+p(3)*x(:

2).^2+p

(2)*x(:

2)+p(4)*x(:

p0=[111111];

x=Ellipse_x'

;

pr=nlinfit(x,zeros(size(x,1),1),F,p0);

%拟合系数,最小二乘方法

xmin=min(x(:

1));

xmax=max(x(:

ymin=min(x(:

2));

ymax=max(x(:

%%画点作图

plot(Ellipse_points(1,:

),Ellipse_points(2,:

),'

r*'

plot(Ellipse_x(1,:

),Ellipse_x(2,:

yo'

ezplot(@(x,y)F(pr,[x,y]),[-1+xmin,1+xmax,-1+ymin,1+ymax]);

title('

RANSAC圆拟合'

legend('

样本点'

'

抽取点'

符合点'

拟合曲线'

实验数据分析及处理

示例图片RANSAC拟合情况:

通过在MATLAB上仿真,得到RANSAC圆拟合图,如下所示:

图1第一次运行时RANSAC圆拟合图

图2第二次运行时RANSAC圆拟合图

图3第三次运行时RANSAC圆拟合图

实验结果分析

1.图1结果分析

如图1所示,随机生成了300个蓝色的点,其中局内点21个,即黄色点,局外点190个,以抽样点为圆心,拟合了一个圆。

2.图2结果分析

如图2所示,其中局内点11个,局外点200个,得到较好的拟合结果。

3.图3结果分析

如图3所示,其中局内点14个,局外点200个,得到较好的拟合结果。

4.图1、图2、图3横向对比分析

图一、图二、图三,都是经过多次拟合才拟合成功。

可能的原因是样本点是随机产生的,不能确定每次产生的样本点都能成功的拟合。

5.RANSAC拟合原理和流程图

建立模型时利用圆的定义方程:

dist(P,A)+dist(P,B)=DIST,其中P为圆上一点,A为圆心。

随机选取三点A,P构建圆模型,计算每个点到此两焦点的距离和与DIST的差值,差值小于一定阈值时的点为符合模型的点,点数最多时的模型即为最佳圆模型,再根据符合条件的点,利用圆一般方程x^2+y^2+Dx+Ey+F=0和得到符合点进行系数拟合,根据函数式画出最终拟合圆。

实验总结

RANSAC本身就是一个不确定的算法,它通过不断地迭代估计出模型的参数,带有一定的随机性,不能确定地拟合圆,因而RANSAC算法稳定性较差。

另外,它计算参数的迭代次数没有上限,如果设置上限,得到的结果可能不是最优的结果,甚至可能得到错误的结果。

但RANSAC也有明显的优点,它能从包含大量局外点的数据集中估计出高精度的参数。

批改意见

签名:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1