Ransac和圓擬合_第1頁
Ransac和圓擬合_第2頁
Ransac和圓擬合_第3頁
Ransac和圓擬合_第4頁
Ransac和圓擬合_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、課程實(shí)驗(yàn)報(bào)告2017 - 2018 學(xué)年第一 學(xué)期課程名稱:計(jì)算機(jī)視覺及應(yīng)用實(shí)驗(yàn)名稱:班 級:電通1班學(xué)生姓名: 學(xué)號:。實(shí)驗(yàn)日期: 2017.12.1地點(diǎn):指導(dǎo)教師: 成績評定:批改日期:實(shí)驗(yàn)?zāi)康募耙驲ANSAC即隨機(jī)抽樣一致。它可以從一組包含“局外點(diǎn)”的觀測數(shù)據(jù)集中,通過迭代方式估計(jì)數(shù)學(xué)模型的參數(shù)。它是一種不確定的算法它有一定的概率得出一個(gè)合理的結(jié)果。借助MATLAB工具,通過RANSAC算法擬合圓,理解其原理,分析它的優(yōu)點(diǎn)與確定。實(shí)驗(yàn)儀器設(shè)備實(shí)驗(yàn)設(shè)備為一臺裝有win10系統(tǒng)的PC,matlab2015b軟件。實(shí)驗(yàn)原理利用圓的定義,圓是平面內(nèi)到定點(diǎn)F1、F2的距離之和等于常數(shù)(大于|F1

2、F2|)的動點(diǎn)P的軌跡,F(xiàn)1、F2稱為圓的兩個(gè)焦點(diǎn)。其數(shù)學(xué)表達(dá)式為:|PF1|+|PF2|=2a(2a|F1F2|)。選取3個(gè)點(diǎn),2個(gè)焦點(diǎn),1個(gè)過圓的點(diǎn),就能確定圓。實(shí)驗(yàn)內(nèi)容有一個(gè)模型適應(yīng)于假設(shè)的局內(nèi)點(diǎn),即所有的未知參數(shù)都能從假設(shè)的局內(nèi)點(diǎn)計(jì)算得出。 用1中得到的模型去測試所有的其它數(shù)據(jù),如果某個(gè)點(diǎn)適用于估計(jì)的模型,認(rèn)為它也是局內(nèi)點(diǎn)。 如果有足夠多的點(diǎn)被歸類為假設(shè)的局內(nèi)點(diǎn),那么估計(jì)的模型就足夠合理。 然后,用所有假設(shè)的局內(nèi)點(diǎn)去重新估計(jì)模型(譬如使用最小二乘法),因?yàn)樗鼉H僅被初始的假設(shè)局內(nèi)點(diǎn)估計(jì)過。 最后,通過估計(jì)局內(nèi)點(diǎn)與模型的錯誤率來評估模型。 上述過程被重復(fù)執(zhí)行固定的次數(shù),每次產(chǎn)生的模型要么因

3、為局內(nèi)點(diǎn)太少而被舍棄,要么因?yàn)楸痊F(xiàn)有的模型更好而被選用。實(shí)驗(yàn)步驟及方法第一步:生成隨機(jī)點(diǎn),本實(shí)驗(yàn)隨機(jī)點(diǎn)的數(shù)量設(shè)置為300;第二步:參數(shù)的初始化,設(shè)置圓長短軸,生成圓模型;第三步:由圓定義,查找符合圓模型的點(diǎn);第四步:畫出擬合結(jié)果;實(shí)驗(yàn)數(shù)據(jù)matlab程序代碼:clc;clear;% 生成帶噪聲的圓% 參數(shù)初始化g_NumOfPoints = 500; % 點(diǎn)數(shù)g_ErrPointPart = 0.5; % 噪聲g_NormDistrVar = 3; % 標(biāo)準(zhǔn)偏差a=20;b=20; %長軸短軸angle=60; %傾斜角% 圓生成beta = angle * (pi / 180);alpha

4、= linspace(0, 360, g_NumOfPoints) .* (pi / 180); X = (a * cos(alpha) * cos(beta)- b * sin(alpha) * sin(beta) )+wgn(1,length(alpha),g_NormDistrVar2,linear); Y = (a * cos(alpha) * sin(beta)+ b * sin(alpha) * cos(beta) )+wgn(1,length(alpha),g_NormDistrVar2,linear);Data=X;Y;plot(Data(1, :), Data(2, :),

5、., Tag, DATA);hold on;% 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)% 參數(shù)初始化nSampLen = 2; %設(shè)定模型所依據(jù)的點(diǎn)數(shù)nDataLen = size(Data, 2); %數(shù)據(jù)長度nIter = 50; %最大循環(huán)次數(shù)dThreshold = 2; %殘差閾值nMaxInlyerCount=-1; %點(diǎn)數(shù)下限A=zeros(2 1);%B=zeros(2 1);P=zeros(2 1)

6、;% 主循環(huán)for i = 1:nIter SampleMask = zeros(1 nDataLen); while sum( SampleMask ) = nSampLen% =不等于ind = ceil(nDataLen .* rand(1, nSampLen - sum(SampleMask); %抽樣,選取nSampLen個(gè)不同的點(diǎn)SampleMask(ind) = 1; end Sample = find( SampleMask ); %找出非零元素的索引值,即建立模型的點(diǎn) % 建立模型,存儲建模需要的坐標(biāo)點(diǎn),焦點(diǎn)和過圓的一個(gè)點(diǎn) %圓定義方程:到兩定點(diǎn)之間距離和為常數(shù) A(:,1)

7、=Data(:,ind(1); %圓點(diǎn) % B(:,1)=Data(:,ind(2); %焦點(diǎn) P(:,1)=Data(:,ind(2); %圓上一點(diǎn) 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; %初始化點(diǎn)數(shù)為0個(gè) % 是否符合模型? for k=1:g_NumOfPointsCurModel=A(1,1) A(2,1) DIST ;pdist=(Data(1,k)-A(1,1).2+(Data(2,k

8、)-A(2,1).2);CurMask =(abs(DIST-pdist)nMaxInlyerCount %符合模型的點(diǎn)數(shù)最多的模型即為最佳模型nMaxInlyerCount = nCurInlyerCount;Ellipse_mask = CurMask;Ellipse_model = CurModel;Ellipse_points = A P;Ellipse_x =xx; endend% 由符合點(diǎn)擬合圓 x2+y2+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(:

9、,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=1 1 1 1 1 1;x=Ellipse_x;pr=nlinfit(x,zeros(size(x,1),1),F,p0); % 擬合系數(shù),最小二乘方法xmin=min(x(:,1);xmax=max(x(:,1);ymin=min(x(:,2);ymax=max(x(:,2);% 畫點(diǎn)作圖plot(Ellip

10、se_points(1,:),Ellipse_points(2,:),r*);hold on;plot(Ellipse_x(1,:),Ellipse_x(2,:),yo);hold on;ezplot(x,y)F(pr,x,y),-1+xmin,1+xmax,-1+ymin,1+ymax);title(RANSAC圓擬合);legend(樣本點(diǎn),抽取點(diǎn),符合點(diǎn),擬合曲線)實(shí)驗(yàn)數(shù)據(jù)分析及處理示例圖片RANSAC擬合情況:通過在MATLAB上仿真,得到RANSAC圓擬合圖,如下所示:圖1 第一次運(yùn)行時(shí)RANSAC圓擬合圖圖2 第二次運(yùn)行時(shí)RANSAC圓擬合圖圖3 第三次運(yùn)行時(shí)RANSAC圓擬合圖實(shí)

11、驗(yàn)結(jié)果分析1.圖1結(jié)果分析如圖1所示,隨機(jī)生成了300個(gè)藍(lán)色的點(diǎn),其中局內(nèi)點(diǎn)21個(gè),即黃色點(diǎn),局外點(diǎn)190個(gè),以抽樣點(diǎn)為圓心,擬合了一個(gè)圓。x+13.2032+y-11.9282=1.2392 2. 圖2結(jié)果分析如圖2所示,其中局內(nèi)點(diǎn)11個(gè),局外點(diǎn)200個(gè),得到較好的擬合結(jié)果。x+19.1432+y+10.9712=2.52123.圖3結(jié)果分析如圖3所示,其中局內(nèi)點(diǎn)14個(gè),局外點(diǎn)200個(gè),得到較好的擬合結(jié)果。x+18.9742+y+1.7242=3.47324.圖1、圖2、圖3橫向?qū)Ρ确治鰣D一、圖二、圖三,都是經(jīng)過多次擬合才擬合成功??赡艿脑蚴菢颖军c(diǎn)是隨機(jī)產(chǎn)生的,不能確定每次產(chǎn)生的樣本點(diǎn)都能成功的擬合。5.RANSAC擬合原理和流程圖建立模型時(shí)利用圓的定義方程:dist(P,A)+dist(P,B)=DIST,其中P為圓上一點(diǎn),A為圓心。隨機(jī)選取三點(diǎn)A,P構(gòu)建圓模型,計(jì)算每個(gè)點(diǎn)到此兩焦點(diǎn)的距離和與DIST的差值,差值小于一定閾值時(shí)的點(diǎn)為符合模型的點(diǎn),點(diǎn)數(shù)最多時(shí)的模型即為最佳圓模型,再根據(jù)符合條件的點(diǎn),利用圓一般方程x2+y2+Dx+Ey+F=0和得到符合點(diǎn)進(jìn)行系數(shù)擬合,根據(jù)函數(shù)式畫出最

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論