⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 funmatdemotest.m

📁 计算基本矩阵的matlab例程
💻 M
📖 第 1 页 / 共 3 页
字号:
            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 + -