資源簡介
這是基于opencv編寫的三維重建代碼,是初學opencv和三維重建的優秀參考資料

代碼片段和文件信息
#include?“header.h“
//?sift?is?50?times?slower?but?get?7?times?more?matched?points
//?FAST?detect?more?points?than?SURF
//?STAR/MSER?generate?very?few?keypoints
#define?DETECTOR_TYPE “FAST“?//?FASTSIFTSURFSTARMSERGFTTHARRIS...see?the?create?function
#define?DEscriptOR_TYPE “SURF“?//?SURFSIFTBRIEF...BRIEF?seemed?to?has?bug
#define?MATCHER_TYPE “Flannbased“?//?BruteForceFlannbasedBruteForce-L1...
#define?MAXM_FILTER_TH .8 //?threshold?used?in?GetPair
#define?HOMO_FILTER_TH 60 //?threshold?used?in?GetPair
#define?NEAR_FILTER_TH 40 //?diff?points?should?have?distance?more?than?NEAR_FILTER_TH
//?choose?the?corresponding?points?in?the?stereo?images?for?3d?reconstruction
void?GetPair(?Mat?&imgL?Mat?&imgR?vector?&ptsL?vector?&ptsR?)?
{
Mat?descriptorsL?descriptorsR;
double?tt?=?(double)getTickCount();
Ptr?detector?=?FeatureDetector::create(?DETECTOR_TYPE?);?//?factory?mode
vector?keypointsL?keypointsR;?
detector->detect(?imgL?keypointsL?);
detector->detect(?imgR?keypointsR?);
PtrriptorExtractor>?de?=?DescriptorExtractor::create(?DEscriptOR_TYPE?);
//SurfDescriptorExtractor?de(42true);
de->compute(?imgL?keypointsL?descriptorsL?);
de->compute(?imgR?keypointsR?descriptorsR?);
tt?=?((double)getTickCount()?-?tt)/getTickFrequency();?//?620*555?pic?about?2s?for?SURF?120s?for?SIFT
PtrriptorMatcher>?matcher?=?DescriptorMatcher::create(?MATCHER_TYPE?);
vector>?matches;
matcher->knnMatch(?descriptorsL?descriptorsR?matches?2?);?//?L:query?R:train
vector?passedMatches;?//?save?for?drawing
DMatch?m1?m2;
vector?ptsRtemp?ptsLtemp;
for(?size_t?i?=?0;?i? {
m1?=?matches[i][0];
m2?=?matches[i][1];
if?(m1.distance? {
ptsRtemp.push_back(keypointsR[m1.trainIdx].pt);
ptsLtemp.push_back(keypointsL[i].pt);
passedMatches.push_back(m1);
}
}
Mat?HLR;
HLR?=?findHomography(?Mat(ptsLtemp)?Mat(ptsRtemp)?CV_RANSAC?3?);
cout<<“Homography:“< Mat?ptsLt;?
perspectiveTransform(Mat(ptsLtemp)?ptsLt?HLR);
vector?matchesMask(?passedMatches.size()?0?);
int?cnt?=?0;
for(?size_t?i1?=?0;?i1? {
Point2f?prjPtR?=?ptsLt.at((int)i10);?//?prjx?=?ptsLt.at((int)i10)?prjy?=?ptsLt.at((int)i11);
?//?inlier
if(?abs(ptsRtemp[i1].x?-?prjPtR.x)? abs(ptsRtemp[i1].y?-?prjPtR.y)?2)?//?restriction?on?y?is?more?strict
{
vector::iterator?iter?=?ptsL.begin();
for?(;iter!=ptsL.end();iter++)
{
Point2f?diff?=?*iter?-?ptsLtemp[i1];
float?dist?=?abs(diff.x)+abs(diff.y);
if?(dist? }
if?(iter?!=?ptsL.end())?continue;
ptsL.push_back(ptsLtemp[i1]);
ptsR.push_back(ptsRtemp[i1]);
cnt++;
if?(cnt%1?==?0)?matchesMask[i1]?=?1;?//?don‘t?want?to?draw?to?many?matches
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-07-02?22:50??rec3D\
?????目錄???????????0??2011-07-02?22:51??rec3D\method2\
?????文件???????19937??2011-06-01?10:14??rec3D\method2\ScreenShot029.jpg
?????文件???????28493??2011-06-01?10:15??rec3D\method2\ScreenShot032.jpg
?????文件???????18411??2011-06-01?10:16??rec3D\method2\ScreenShot033.jpg
?????文件???????44183??2011-06-01?10:18??rec3D\method2\ScreenShot035.jpg
?????文件???????56406??2011-06-01?10:19??rec3D\method2\ScreenShot037.jpg
?????文件???????57780??2011-06-01?13:10??rec3D\method2\ScreenShot042.jpg
?????文件???????64871??2011-06-01?13:10??rec3D\method2\ScreenShot043.jpg
?????文件??????129125??2011-06-01?21:44??rec3D\method2\ScreenShot053.jpg
?????文件???????45313??2011-06-01?21:47??rec3D\method2\ScreenShot054.jpg
?????文件???????44387??2011-06-01?21:49??rec3D\method2\ScreenShot055.jpg
?????文件???????55437??2011-06-01?21:49??rec3D\method2\ScreenShot056.jpg
?????目錄???????????0??2011-07-02?22:52??rec3D\rec3D\
?????文件?????????881??2011-05-22?09:55??rec3D\rec3D.sln
?????文件??????152576??2011-07-02?22:45??rec3D\rec3D.suo
?????文件????????8899??2011-07-02?22:42??rec3D\rec3D\cvFuncs.cpp
?????文件????????6539??2011-07-02?22:42??rec3D\rec3D\cvFuncs2.cpp
?????文件????????1516??2011-06-01?21:09??rec3D\rec3D\cvFuncs3.cpp
?????文件???????17774??2011-07-02?22:44??rec3D\rec3D\disp.jpg
?????文件????????7015??2011-07-02?22:40??rec3D\rec3D\glFuncs.cpp
?????文件???????27780??2004-10-23?11:23??rec3D\rec3D\glut.h
?????文件??????220160??2004-10-23?11:25??rec3D\rec3D\glut32.dll
?????文件???????81680??2004-10-23?11:25??rec3D\rec3D\glut32.lib
?????文件????????2631??2011-06-01?21:58??rec3D\rec3D\header.h
?????文件????????4769??2011-06-01?21:46??rec3D\rec3D\main-algo3bkup.cpp
?????文件????????5237??2011-07-02?22:43??rec3D\rec3D\main.cpp
?????文件???????47104??2011-07-02?22:44??rec3D\rec3D\rec3D.exe
?????文件????????4162??2011-06-01?21:58??rec3D\rec3D\rec3D.vcproj
?????文件????????1413??2011-07-02?22:45??rec3D\rec3D\rec3D.vcproj.YanKe-PC.YanKe.user
?????文件???????67588??2011-05-25?17:28??rec3D\ScreenShot013.jpg
............此處省略7個文件信息
評論
共有 條評論