Ransac和圆拟合.docx
- 文档编号:3592735
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:8
- 大小:92.39KB
Ransac和圆拟合.docx
《Ransac和圆拟合.docx》由会员分享,可在线阅读,更多相关《Ransac和圆拟合.docx(8页珍藏版)》请在冰豆网上搜索。
Ransac和圆拟合
课程实验报告
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=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) nCurInlyerCount=nCurInlyerCount+CurMask;%计算符合圆模型的点的个数 if(CurMask==1) xx=[xx,Data(: k)]; end end %%选取最佳模型 ifnCurInlyerCount>nMaxInlyerCount%符合模型的点数最多的模型即为最佳模型 nMaxInlyerCount=nCurInlyerCount; Ellipse_mask=CurMask; Ellipse_model=CurModel; Ellipse_points=[AP]; Ellipse_x=xx; end end %%由符合点拟合圆x^2+y^2+Dx+Ey+F=0 %圆一般方程: 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)*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(: 1).*x(: 2)+p(4)*x(: 1)+p(5)*x(: 2)+p(6); p0=[111111]; x=Ellipse_x'; pr=nlinfit(x,zeros(size(x,1),1),F,p0);%拟合系数,最小二乘方法 xmin=min(x(: 1)); xmax=max(x(: 1)); ymin=min(x(: 2)); ymax=max(x(: 2)); %%画点作图 plot(Ellipse_points(1,: ),Ellipse_points(2,: ),'r*'); holdon; plot(Ellipse_x(1,: ),Ellipse_x(2,: ),'yo'); holdon; 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也有明显的优点,它能从包含大量局外点的数据集中估计出高精度的参数。 批改意见 签名: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Ransac 拟合