📄 funmatdemotest.m
字号:
bartime=[bartime;timeinmmdpel];
xlabelbars=[xlabelbars sprintf(' %d.- inmmdpel ',indexbars)];
if mod(indexbars,8)==0, xlabelbars=[xlabelbars '\n']; end
indexbars=indexbars+1;
case 8,
disp('Method: gradient using Least-Squares')
tic
Fgradls=funmatgradls(M,10,10^(-5));
timegradls=toc;
Fgradls=T1'*Fgradls*T2;
Fgradls=Fgradls./norm(Fgradls);
[meangradls,stddevgradls,minimgradls,maximgradls]=funmatError(Mini,Fgradls);
disp('Funamental Matrix')
disp(Fgradls)
disp(sprintf('Distance point-epipolar line\nmean: %f stdev: %f min: %f max: %f\n',meangradls,stddevgradls,minimgradls,maximgradls));
disp(sprintf('Rank-2: %d',rank(Fgradls)==2))
disp(sprintf('Time: %f',timegradls))
disp('*******************************************************************')
if redraw,
fummatplot(Mini,Fgradls)
end
bars=[bars;meangradls,stddevgradls];
bartime=[bartime;timegradls];
xlabelbars=[xlabelbars sprintf(' %d.- gradls ',indexbars)];
if mod(indexbars,8)==0, xlabelbars=[xlabelbars '\n']; end
indexbars=indexbars+1;
case 9,
disp('Method: gradient using Least-Squares with eigen analysis')
tic
Ffunmatgradeig=funmatgradeig(M,10,10^(-5));
timegradeig=toc;
Ffunmatgradeig=T1'*Ffunmatgradeig*T2;
Ffunmatgradeig=Ffunmatgradeig./norm(Ffunmatgradeig);
[meangradeig,stddevgradeig,minimgradeig,maximgradeig]=funmatError(Mini,Ffunmatgradeig);
disp('Funamental Matrix')
disp(Ffunmatgradeig)
disp(sprintf('Distance point-epipolar line\nmean: %f stdev: %f min: %f max: %f\n',meangradeig,stddevgradeig,minimgradeig,maximgradeig));
disp(sprintf('Rank-2: %d',rank(Ffunmatgradeig)==2))
disp(sprintf('Time: %f',timegradeig))
disp('*******************************************************************')
if redraw,
fummatplot(Mini,Ffunmatgradeig)
end
bars=[bars;meangradeig,stddevgradeig];
bartime=[bartime;timegradeig];
xlabelbars=[xlabelbars sprintf(' %d.- gradeig ',indexbars)];
if mod(indexbars,8)==0, xlabelbars=[xlabelbars '\n']; end
indexbars=indexbars+1;
case 10,
disp('Method: M-Estimator using Least-Squares')
tic
[FMestls,wMestls]=funmatMestls(M,10,10^(-5));
timeMestls=toc;
FMestls=T1'*FMestls*T2;
FMestls=FMestls./norm(FMestls);
[meanMestls,stddevMestls,minimMestls,maximMestls]=funmatError(goodpoints(Mini,wMestls,threshold),FMestls);
disp('Funamental Matrix')
disp(FMestls)
disp(sprintf('Distance point-epipolar line\nmean: %f stdev: %f min: %f max: %f\n',meanMestls,stddevMestls,minimMestls,maximMestls));
disp(sprintf('Rank-2: %d',rank(FMestls)==2))
w=wMestls;
redrawnow=1;
Mfi=goodpoints(Mini,w,threshold);
disp(sprintf('Outliers: %d/%d',size(M,2)-size(Mfi,2),size(M,2)))
disp(sprintf('Time: %f',timeMestls))
disp('*******************************************************************')
if redraw,
fummatplot(Mfi,FMestls)
end
bars=[bars;meanMestls,stddevMestls];
bartime=[bartime;timeMestls];
xlabelbars=[xlabelbars sprintf(' %d.- Mestls ',indexbars)];
if mod(indexbars,8)==0, xlabelbars=[xlabelbars '\n']; end
indexbars=indexbars+1;
case 11,
disp('Method: M-Estimator using Least-Squares with eigen analysis')
tic
[FMesteig,wMesteig]=funmatMesteig(M,10,10^(-5));
timeMesteig=toc;
FMesteig=T1'*FMesteig*T2;
FMesteig=FMesteig./norm(FMesteig);
[meanMesteig,stddevMesteig,minimMesteig,maximMesteig]=funmatError(goodpoints(Mini,wMesteig,threshold),FMesteig);
disp('Funamental Matrix')
disp(FMesteig)
disp(sprintf('Distance point-epipolar line\nmean: %f stdev: %f min: %f max: %f\n',meanMesteig,stddevMesteig,minimMesteig,maximMesteig));
disp(sprintf('Rank-2: %d',rank(FMesteig)==2))
w=wMesteig;
redrawnow=1;
Mfi=goodpoints(Mini,w,threshold);
disp(sprintf('Outliers: %d/%d',size(M,2)-size(Mfi,2),size(M,2)))
disp(sprintf('Time: %f',timeMesteig))
disp('*******************************************************************')
if redraw,
fummatplot(Mfi,FMesteig)
end
bars=[bars;meanMesteig,stddevMesteig];
bartime=[bartime;timeMesteig];
xlabelbars=[xlabelbars sprintf(' %d.- Mesteig ',indexbars)];
if mod(indexbars,8)==0, xlabelbars=[xlabelbars '\n']; end
indexbars=indexbars+1;
case 12,
disp('Method: M-Estimator proposed by Torr (IJCV97)')
tic
[FMestTorr,wMestTorr]=funmatMestTorr(M,10,10^(-5));
timeMestTorr=toc;
FMestTorr=T1'*FMestTorr*T2;
FMestTorr=FMestTorr./norm(FMestTorr);
[meanMestTorr,stddevMestTorr,minimMestTorr,maximMestTorr]=funmatError(goodpoints(Mini,wMestTorr,threshold),FMestTorr);
disp('Funamental Matrix')
disp(FMestTorr)
disp(sprintf('Distance point-epipolar line\nmean: %f stdev: %f min: %f max: %f\n',meanMestTorr,stddevMestTorr,minimMestTorr,maximMestTorr));
disp(sprintf('Rank-2: %d',rank(FMestTorr)==2))
w=wMestTorr;
redrawnow=1;
Mfi=goodpoints(Mini,w,threshold);
disp(sprintf('Outliers: %d/%d',size(M,2)-size(Mfi,2),size(M,2)))
disp(sprintf('Time: %f',timeMestTorr))
disp('*******************************************************************')
if redraw,
fummatplot(Mfi,FMestTorr)
end
bars=[bars;meanMestTorr,stddevMestTorr];
bartime=[bartime;timeMestTorr];
xlabelbars=[xlabelbars sprintf(' %d.- MestTorr ',indexbars)];
if mod(indexbars,8)==0, xlabelbars=[xlabelbars '\n']; end
indexbars=indexbars+1;
case 13,
disp('Method: LMedS using least squares')
tic
[FLMedSls,wLMedSls]=funmatLMedSls(M,8,0.99,0.25);
timeLMedSls=toc;
FLMedSls=T1'*FLMedSls*T2;
FLMedSls=FLMedSls./norm(FLMedSls);
[meanLMedSls,stddevLMedSls,minimLMedSls,maximLMedSls]=funmatError(goodpoints(Mini,wLMedSls,threshold),FLMedSls);
disp('Funamental Matrix')
disp(FLMedSls)
disp(sprintf('Distance point-epipolar line\nmean: %f stdev: %f min: %f max: %f\n',meanLMedSls,stddevLMedSls,minimLMedSls,maximLMedSls));
disp(sprintf('Rank-2: %d',rank(FLMedSls)==2))
w=wLMedSls;
redrawnow=1;
Mfi=goodpoints(Mini,w,threshold);
disp(sprintf('Outliers: %d/%d',size(M,2)-size(Mfi,2),size(M,2)))
disp(sprintf('Time: %f',timeLMedSls))
disp('*******************************************************************')
if redraw,
fummatplot(Mfi,FLMedSls)
end
bars=[bars;meanLMedSls,stddevLMedSls];
bartime=[bartime;timeLMedSls];
xlabelbars=[xlabelbars sprintf(' %d.- LMedSls ',indexbars)];
if mod(indexbars,8)==0, xlabelbars=[xlabelbars '\n']; end
indexbars=indexbars+1;
case 14,
disp('Method: LMedS using least squares with eigen analysis')
tic
[FLMedSeig,wLMedSeig]=funmatLMedSeig(M,8,0.99,0.25);
timeLMedSeig=toc;
FLMedSeig=T1'*FLMedSeig*T2;
FLMedSeig=FLMedSeig./norm(FLMedSeig);
[meanLMedSeig,stddevLMedSeig,minimLMedSeig,maximLMedSeig]=funmatError(goodpoints(Mini,wLMedSeig,threshold),FLMedSeig);
disp('Funamental Matrix')
disp(FLMedSeig)
disp(sprintf('Distance point-epipolar line\nmean: %f stdev: %f min: %f max: %f\n',meanLMedSeig,stddevLMedSeig,minimLMedSeig,maximLMedSeig));
disp(sprintf('Rank-2: %d',rank(FLMedSeig)==2))
w=wLMedSeig;
redrawnow=1;
Mfi=goodpoints(Mini,w,threshold);
disp(sprintf('Outliers: %d/%d',size(M,2)-size(Mfi,2),size(M,2)))
disp(sprintf('Time: %f',timeLMedSeig))
disp('*******************************************************************')
if redraw,
fummatplot(Mfi,FLMedSeig)
end
bars=[bars;meanLMedSeig,stddevLMedSeig];
bartime=[bartime;timeLMedSeig];
xlabelbars=[xlabelbars sprintf(' %d.- LMedSeig ',indexbars)];
if mod(indexbars,8)==0, xlabelbars=[xlabelbars '\n']; end
indexbars=indexbars+1;
case 15,
disp('Method: RANSAC')
tic
[FRANSAC,wRANSAC]=funmatRANSAC(M,8,0.99,0.25);
timeRANSAC=toc;
FRANSAC=T1'*FRANSAC*T2;
FRANSAC=FRANSAC./norm(FRANSAC);
[meanRANSAC,stddevRANSAC,minimRANSAC,maximRANSAC]=funmatError(goodpoints(Mini,wRANSAC,threshold),FRANSAC);
disp('Funamental Matrix')
disp(FRANSAC)
disp(sprintf('Distance point-epipolar line\nmean: %f stdev: %f min: %f max: %f\n',meanRANSAC,stddevRANSAC,minimRANSAC,maximRANSAC));
disp(sprintf('Rank-2: %d',rank(FRANSAC)==2))
w=wRANSAC;
redrawnow=1;
Mfi=goodpoints(Mini,w,threshold);
disp(sprintf('Outliers: %d/%d',size(M,2)-size(Mfi,2),size(M,2)))
disp(sprintf('Time: %f',timeRANSAC))
disp('*******************************************************************')
if redraw,
fummatplot(Mfi,FRANSAC)
end
bars=[bars;meanRANSAC,stddevRANSAC];
bartime=[bartime;timeRANSAC];
xlabelbars=[xlabelbars sprintf(' %d.- RANSAC ',indexbars)];
if mod(indexbars,8)==0, xlabelbars=[xlabelbars '\n']; end
indexbars=indexbars+1;
case 16,
disp('Method: linear implemented by Torr (equivalent to least-squares with eigen analysis)')
tic
[f, f_sq_errors, n_inliers,inlier_index,Ftorr_estf] = torr_estimateF( M', 1, [], 'linear', 0);
timetorr_estf=toc;
Ftorr_estf=T1'*Ftorr_estf'*T2;
Ftorr_estf=Ftorr_estf./norm(Ftorr_estf);
[meantorr_estf,stddevtorr_estf,minimtorr_estf,maximtorr_estf]=funmatError(Mini,Ftorr_estf);
disp('Funamental Matrix')
disp(Ftorr_estf)
disp(sprintf('Distance point-epipolar line\nmean: %f stdev: %f min: %f max: %f\n',meantorr_estf,stddevtorr_estf,minimtorr_estf,maximtorr_estf));
disp(sprintf('Rank-2: %d',rank(Ftorr_estf)==2))
disp(sprintf('Time: %f',timetorr_estf))
disp('*******************************************************************')
if redraw,
fummatplot(Mini,Ftorr_estf)
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -