最近邻点比次近邻点

sift特征点直接运用BruteForce方法进行匹配会出现很多错误,因此我们运用最近邻点比次近邻点进行限制,可大大提高特征点匹配的正确率。 
即:bestmatch

BFMatcher matcher(NORM_L2, false);//定义一个匹配对象
    vector<vector<DMatch>> matches2;//定义一个容器用来装最近邻点和次近邻点
    vector<DMatch>matches;//定义一个容器用来装符合条件的点
    matcher.match(descriptors1, descriptors2, matches);//进行匹配
    const float ratio = 0.7;//将比值设为0.7  可以自己调节
    matches.clear();//清空matches
    matcher.knnMatch(descriptors1, descriptors2, matches2, 2);//运用knnmatch
    for (int n = 0; n < matches2.size(); n++)
    {
        DMatch& bestmatch = matches2[n][0];
        DMatch& bettermatch = matches2[n][1];
        if (bestmatch.distance < ratio*bettermatch.distance)//筛选出符合条件的点
        {
            matches.push_back(bestmatch);//将符合条件的点保存在matches
        }
    }
    cout << "match个数:" << matches.size() << endl;
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值