双目标定后的三维重建


从大佬那里保存的,这个需要输入立体校正后的图片和相机焦距。如何输入及数据来源在我上传的另一份文件里。
资源截图
代码片段和文件信息
#include “header.h“
#define DETECTOR_TYPE “FAST“ // FASTSIFTSURFSTARMSERGFTTHARRIS...参考创建函数
#define DEscriptOR_TYPE “SIFT“ // 
#define MATCHER_TYPE “Flannbased“ // 

#define MAXM_FILTER_TH 20//GetPair中使用的阈值
#define HOMO_FILTER_TH 100 // GetPair中使用的阈值
#define NEAR_FILTER_TH  10// 不同点之间的距离应大于NEAR_FILTER_TH



//选择立体图像中的对应点进行三维重建
void GetPair( Mat &imgL Mat &imgR vector &ptsL vector &ptsR ) 
{
Mat descriptorsL descriptorsR;
double tt = (double)getTickCount();

Ptr detector = FeatureDetector::create( DETECTOR_TYPE ); 
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 < matches.size(); i++ )
{
m1 = matches[i][0];
m2 = matches[i][1];
if (m1.distance < MAXM_FILTER_TH * m2.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 < ptsLtemp.size(); 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) < HOMO_FILTER_TH &&
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 < NEAR_FILTER_TH) break;
}
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
}
}

Mat outImg;
drawMatches(imgL keypointsL imgR keypointsR passedMatches outImg 
Scalar::all(-1) Scalar::all(-1) matchesMask DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS);
char title[50];
sprintf_s(title 50 “%.3f s %d matches %d passed“ tt matches.size() cnt);
imshow(title outImg);

}


// 用于用opencv函数进行三角剖分
bool isGood

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     48128  2016-08-08 00:10  Reconstuction3d.vsReconstuction3dv14.suo

     文件    3686454  2018-10-26 14:56  Reconstuction3d1.bmp

     文件    3686454  2018-10-26 14:56  Reconstuction3d2.bmp

     文件     294912  2019-03-18 20:44  Reconstuction3dDebugReconstuction3d.exe

     文件    1943624  2019-03-18 20:44  Reconstuction3dDebugReconstuction3d.ilk

     文件    4828160  2019-03-18 20:44  Reconstuction3dDebugReconstuction3d.pdb

     文件          0  2019-03-25 09:57  Reconstuction3ddxva2.pdbEFD40ACCC3FD48B69262D97BBD1DD2972dxva2.pdb

     文件     128635  2016-07-21 22:03  Reconstuction3dGLUT工具包.rar

     文件    3686454  2018-10-26 14:56  Reconstuction3dReconstuction3d1.bmp

     文件      12841  2018-09-11 16:56  Reconstuction3dReconstuction3d1.jpg

     文件      38482  2019-03-28 09:20  Reconstuction3dReconstuction3d11.jpg

     文件    3686454  2018-10-26 14:56  Reconstuction3dReconstuction3d2.bmp

     文件      39832  2019-03-28 09:20  Reconstuction3dReconstuction3d22.jpg

     文件      81825  2011-05-25 12:22  Reconstuction3dReconstuction3d3.jpg

     文件      82997  2011-05-25 12:24  Reconstuction3dReconstuction3d4.jpg

     文件       8459  2019-03-19 16:02  Reconstuction3dReconstuction3dcvFuncs.cpp

     文件       7044  2019-03-19 16:15  Reconstuction3dReconstuction3dcvFuncs2.cpp

     文件       1516  2011-06-01 21:09  Reconstuction3dReconstuction3dcvFuncs3.cpp

     文件     895212  2019-03-18 20:24  Reconstuction3dReconstuction3dDebugcvFuncs.obj

     文件     574383  2019-03-18 20:24  Reconstuction3dReconstuction3dDebugcvFuncs2.obj

     文件     517823  2019-03-18 20:24  Reconstuction3dReconstuction3dDebugglFuncs.obj

     文件       1754  2019-03-18 20:24  Reconstuction3dReconstuction3dDebugReconstuction3d.Build.CppClean.log

     文件       3308  2019-03-18 20:44  Reconstuction3dReconstuction3dDebugReconstuction3d.log

     文件     784196  2019-03-18 20:44  Reconstuction3dReconstuction3dDebugReconstuction3d.obj

     文件       3574  2019-03-18 20:44  Reconstuction3dReconstuction3dDebugReconstuction3d.tlogcl.command.1.tlog

     文件     123772  2019-03-18 20:44  Reconstuction3dReconstuction3dDebugReconstuction3d.tlogCL.read.1.tlog

     文件       4190  2019-03-18 20:44  Reconstuction3dReconstuction3dDebugReconstuction3d.tlogCL.write.1.tlog

     文件       5490  2019-03-18 20:44  Reconstuction3dReconstuction3dDebugReconstuction3d.tloglink.command.1.tlog

     文件       9660  2019-03-18 20:44  Reconstuction3dReconstuction3dDebugReconstuction3d.tloglink.read.1.tlog

     文件       1388  2019-03-18 20:44  Reconstuction3dReconstuction3dDebugReconstuction3d.tloglink.write.1.tlog

............此处省略63个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)