• 大小: 3.61MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-27
  • 语言: 其他
  • 标签: SIFT+RANSAC  

资源简介

sift算法提取特征点进行特征点匹配,用RANSAC(随机采样一致性)方法剔除误匹配特征点,有图形显示,需配置openCV

资源截图

代码片段和文件信息

/* 
 *@function SiftDetect.cpp 
 *@brief 对sift特征检测和匹配进行测试,并实现RANSAC算法进行过滤错配点 
 *@author ltc 
 *@date 11:20 Saturday,28 November,2015 
 */  
#include  
#include  
#include  
using namespace std;  
using namespace cv;  
  
  
//RANSAC算法  
vector ransac(vector matchesvector queryKeyPointvector trainKeyPoint);  
  
int main(int argcchar* argv[])  
{  
    //图像读取  
    Mat img1img2;  
    img1=imread(“D:\\picture\\001_L.png“CV_WINDOW_AUTOSIZE);  
    img2=imread(“D:\\picture\\002_R.png“CV_WINDOW_AUTOSIZE);  
  
    if(img1.empty()||img2.empty())  
    {  
        return -1;  
    }  
  
    //sift特征提取  
    SiftFeatureDetector detector;     
    vector keyPoint1keyPoint2;  
    detector.detect(img1keyPoint1);  
    detector.detect(img2keyPoint2);  
    //cout<<“Number of KeyPoint1:“<    //cout<<“Number of KeyPoint2:“<  
    //sift特征描述子计算  
    SiftDescriptorExtractor desExtractor;  
    Mat des1des2;  
    desExtractor.compute(img1keyPoint1des1);  
    desExtractor.compute(img2keyPoint2des2);  
  
    //sift特征点(描述子)匹配  
    Mat res1res2;  
//  drawKeypoints(img1keyPoint1res1Scalar::all(-1)/*DrawMatchesFlags::DRAW_RICH_KEYPOINTS*/DrawMatchesFlags::DEFAULT);  
//  drawKeypoints(img2keyPoint2res2Scalar::all(-1)/*DrawMatchesFlags::DRAW_RICH_KEYPOINTS*/DrawMatchesFlags::DEFAULT);  
    BFMatcher matcher(NORM_L2);  
    FlannbasedMatcher matcher_flann;  
    vector matches;  
  
    vector> matches_knn;  
    matcher.match(des1des2matches);  
    matcher.knnMatch(des1des2matches_knn2);  
  
//  cout<<“matches_knn.size:“<  
    //sift特征最近距离与次近距离之比小于0.6视为正确匹配  
    vector match_knn;  
    for(int i=0;i    {  
        float ratio=matches_knn[i][0].distance/matches_knn[i][1].distance;  
        if(ratio<0.6)  
        {  
            match_knn.push_back(matches_knn[i][0]);  
        }  
    }  
  
//  matcher_flann.match(des1des2matches_flann);  
  
    //for(int i=0;i    //{  
    //  cout<<“第“<    //  cout<<“queryIdx:“<    //  cout<<“imgIdx:“<    //}  
  
    //cout<<“Number of matches:“<    //cout<<“Number of matches_flann:“<      
    vector matches_ransac=ransac(matcheskeyPoint1keyPoint2);  
    Mat img_matchimg_match_flann;  
      
    drawMatches(img1keyPoint1img2keyPoint2matches_ransacimg_match);  
    drawMatches(img1keyPoint1img2keyPoint2match_knnimg_match_flann);  
  
    imshow(“img_match“img_match);  
    imshow(“img_match_flann“img_match_flann)

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

     文件     156160  2018-05-04 15:59  SIFT_RANSAC\Debug\SIFT_RANSAC.exe

     文件    2011344  2018-05-04 15:59  SIFT_RANSAC\Debug\SIFT_RANSAC.ilk

     文件    2477056  2018-05-04 15:59  SIFT_RANSAC\Debug\SIFT_RANSAC.pdb

     文件        666  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\cl.command.1.tlog

     文件      18190  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\CL.read.1.tlog

     文件        420  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\CL.write.1.tlog

     文件          2  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\link-cvtres.read.1.tlog

     文件          2  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\link-cvtres.write.1.tlog

     文件          2  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\link-rc.read.1.tlog

     文件          2  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\link-rc.write.1.tlog

     文件       2110  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\link.command.1.tlog

     文件       5084  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\link.read.1.tlog

     文件        542  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\link.write.1.tlog

     文件     700704  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\main.obj

     文件         76  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\SIFT_RANSAC.lastbuildstate

     文件       2290  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\SIFT_RANSAC.log

     文件     625664  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\vc110.idb

     文件    1429504  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug\vc110.pdb

     文件       4926  2018-05-04 16:09  SIFT_RANSAC\SIFT_RANSAC\main.cpp

     文件       4115  2018-05-04 15:22  SIFT_RANSAC\SIFT_RANSAC\SIFT_RANSAC.vcxproj

     文件        942  2018-05-04 15:21  SIFT_RANSAC\SIFT_RANSAC\SIFT_RANSAC.vcxproj.filters

     文件   14680064  2018-05-04 16:09  SIFT_RANSAC\SIFT_RANSAC.sdf

     文件        900  2018-05-04 15:21  SIFT_RANSAC\SIFT_RANSAC.sln

    ..A..H.     20992  2018-05-04 16:09  SIFT_RANSAC\SIFT_RANSAC.v11.suo

     目录          0  2018-05-04 15:59  SIFT_RANSAC\SIFT_RANSAC\Debug

     目录          0  2018-05-04 15:22  SIFT_RANSAC\Debug

     目录          0  2018-05-04 15:21  SIFT_RANSAC\SIFT_RANSAC

     目录          0  2018-05-04 15:21  SIFT_RANSAC

----------- ---------  ---------- -----  ----

             22141757                    28

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

评论

共有 条评论