您所在位置: 网站首页 / Ransac和圆拟合.docx / 文档详情
Ransac和圆拟合.docx 立即下载
2024-11-04
约3.9千字
约10页
0
90KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

Ransac和圆拟合.docx

Ransac和圆拟合.docx

预览

免费试读已结束,剩余 5 页请下载文档后查看

20 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开



课程实验报告

2017-2018学年第一学期

课程名称:计算机视觉及应用
实验名称:
班级:电通1班
学生姓名:学号:。
实验日期:2017.12.1地点:
指导教师:
成绩评定:批改日期:


实
验
目
的及要求
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,'linear');
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(:,1)=Data(:,ind(2));%焦点
P(:,1)=Data(:,ind(2));%圆上一点
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=
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

Ransac和圆拟合

文档大小:90KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用