眼底图像拼接


OpenCV3.1版本 Visual Studio 2015版本 把两幅残缺的眼底视网膜图像拼接成一副完整的(程序运行时间有点长,耐心等待)
资源截图
代码片段和文件信息
#include 
#include 
#include 

using namespace std;
using namespace cv;
using namespace cv::xfeatures2d;


int main()
{
Mat img1 img2;
img2 = imread(“001.png“);
img1 = imread(“002.png“);

int minHessian = 1000;
//Ptr detector = SIFT::create(minHessian);
Ptr detector = SIFT::create(200030.000000000410.01.5);
vector keypoint1;
vector keypoint2;
Mat descriptor1 descriptor2;

//detector->detect(img1 keypoint1);

detector->detectAndCompute(img1 Mat() keypoint1 descriptor1);
    detector->detectAndCompute(img2 Mat() keypoint2 descriptor2);

//Mat copy_img1 = img1.clone();
//Mat copy_img2 = img2.clone();

Mat img_keyPoint1;
//Mat img_keyPoint2;

drawKeypoints(img1 keypoint1 img_keyPoint1 Scalar::all(-1) DrawMatchesFlags::DRAW_RICH_KEYPOINTS);

resize(img_keyPoint1 img_keyPoint1 Size(1280 960));
imshow(“jieguo“ img_keyPoint1);





//特征匹配
double t = (double)getTickCount();
FlannbasedMatcher matcher;
vector matches;
matcher.match(descriptor1 descriptor2 matches);

double minDist = 1000;
double maxDist = 0;
for (int i = 0; i < descriptor1.rows; i++)
{
double dist = matches[i].distance;
if (dist < minDist)
 minDist=dist;
if (dist > maxDist)
maxDist = dist;
}

printf(“minDist Distance: %f
“ minDist);
printf(“maxDist Distance: %f
“ maxDist);

vector goodMatches;

for (int i = 0; i < descriptor1.rows; i++)
{
double dist = matches[i].distance;
if (dist > (5* minDist) && dist <(maxDist/2))
goodMatches.push_back(matches[i]);
}


Mat  matchesImg;
//drawMatches(img1 keypoint1 img2 keypoint2 goodMatches matchesImg Scalar(-1) Scalar(-1) vector() DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS);
drawMatches(img1 keypoint1 img2 keypoint2 goodMatches matchesImg Scalar::all(-1) Scalar::all(-1) vector() DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS);
t = (double)getTickCount() - t;


printf(“execution time = %gms
“ t*1000.0 / getTickFrequency());
Mat copymatchesImg = matchesImg.clone();
resize(copymatchesImg copymatchesImg Size(1280 480));
imshow(“Flann Matching Result“ copymatchesImg);

std::vector obj;
std::vector scene;
for (int i = 0; i < (int)goodMatches.size(); i++)
{
obj.push_back(keypoint1[goodMatches[i].queryIdx].pt);
scene.push_back(keypoint2[goodMatches[i].trainIdx].pt);
}
//直接调用ransac计算单应矩阵
Mat H = findHomography(obj scene CV_RANSAC);

std::vector obj_corners(4);
std::vector scene_corners(4);
obj_corners[0] = Point(0 0);
obj_corners[1] = Point(img1.cols 0);
obj_corners[2] = Point(img1.cols img1.rows);
obj_corners[3] = Point(0 img1.rows);
perspectiveTransform(obj_corners scene_corners H);
//-- Draw lines between the corners (the mapped object in the scene - image_2 )
Point2f offset((

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

    ..A..H.     36352  2018-05-09 11:18  视网膜图片拼接.vsFLANN matchv14.suo

     文件    7895268  2014-07-22 13:41  视网膜图片拼接FLANN match01.png

     文件    7565546  2014-07-22 13:41  视网膜图片拼接FLANN match02.png

     文件       7380  2018-04-08 10:13  视网膜图片拼接FLANN matchFLANN match.vcxproj

     文件        945  2018-04-08 10:13  视网膜图片拼接FLANN matchFLANN match.vcxproj.filters

     文件       5347  2018-07-05 14:37  视网膜图片拼接FLANN matchmain.cpp

     文件       1189  2018-07-05 14:40  视网膜图片拼接FLANN matchx64DebugFLANN match.Build.CppClean.log

     文件       1076  2018-07-05 14:40  视网膜图片拼接FLANN matchx64DebugFLANN match.log

     文件        770  2018-07-05 14:40  视网膜图片拼接FLANN matchx64DebugFLANN match.tlogCL.command.1.tlog

     文件      37710  2018-07-05 14:40  视网膜图片拼接FLANN matchx64DebugFLANN match.tlogCL.read.1.tlog

     文件        796  2018-07-05 14:40  视网膜图片拼接FLANN matchx64DebugFLANN match.tlogCL.write.1.tlog

     文件        247  2018-07-05 14:40  视网膜图片拼接FLANN matchx64DebugFLANN match.tlogFLANN match.lastbuildstate

     文件       3444  2018-07-05 14:40  视网膜图片拼接FLANN matchx64DebugFLANN match.tloglink.command.1.tlog

     文件       9844  2018-07-05 14:40  视网膜图片拼接FLANN matchx64DebugFLANN match.tloglink.read.1.tlog

     文件        782  2018-07-05 14:40  视网膜图片拼接FLANN matchx64DebugFLANN match.tloglink.write.1.tlog

     文件     978077  2018-07-05 14:40  视网膜图片拼接FLANN matchx64Debugmain.obj

     文件    1141760  2018-07-05 14:40  视网膜图片拼接FLANN matchx64Debugvc140.idb

     文件    2289664  2018-07-05 14:40  视网膜图片拼接FLANN matchx64Debugvc140.pdb

     文件       4209  2018-07-05 14:38  视网膜图片拼接FLANN matchx64ReleaseFLANN match.log

     文件        790  2018-07-05 14:38  视网膜图片拼接FLANN matchx64ReleaseFLANN match.tlogCL.command.1.tlog

     文件      37710  2018-07-05 14:38  视网膜图片拼接FLANN matchx64ReleaseFLANN match.tlogCL.read.1.tlog

     文件        600  2018-07-05 14:38  视网膜图片拼接FLANN matchx64ReleaseFLANN match.tlogCL.write.1.tlog

     文件        249  2018-07-05 14:38  视网膜图片拼接FLANN matchx64ReleaseFLANN match.tlogFLANN match.lastbuildstate

     文件          2  2018-07-05 14:38  视网膜图片拼接FLANN matchx64ReleaseFLANN match.tloglink.command.1.tlog

     文件          2  2018-07-05 14:38  视网膜图片拼接FLANN matchx64ReleaseFLANN match.tloglink.read.1.tlog

     文件          2  2018-07-05 14:38  视网膜图片拼接FLANN matchx64ReleaseFLANN match.tloglink.write.1.tlog

     文件          0  2018-07-05 14:38  视网膜图片拼接FLANN matchx64ReleaseFLANN match.tlogunsuccessfulbuild

     文件    3757216  2018-07-05 14:38  视网膜图片拼接FLANN matchx64Releasemain.obj

     文件    1953792  2018-07-05 14:38  视网膜图片拼接FLANN matchx64Releasevc140.pdb

     文件       1315  2018-04-08 09:24  视网膜图片拼接FLANN match.sln

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

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

发表评论

评论列表(条)