FLANN特征点匹配问题

使用FLANN进行特征点匹配:
使用FlannBasedMatcher接口以及函数FLANN()函数实现快速高效的匹配(快速最近邻逼近搜索函数库)FLANN
FlannBasedMatcher类也是继承自DescriptorMatcher,并且也是match方法进行匹配,
找到最佳的匹配方法:DescriptorMatch::match方法match函数从每个描述符中查询集中找到最佳匹配,C++ void DescriptorMatch::matcher(const Mat& queryDescriptors,const Mat& trainDescriptors,vector& matches,const Mat& mask=Mat())
1.查询描述符
2.训练描述符
3.得到的匹配,若查询描述符有在腌膜中被标记出来,则没有匹配添加到描述符中去,
4.指定输入查询和训练描述符循序匹配的腌膜
采用FLANN算法匹配描述符向量的过程和暴力匹配的过程程序是一致的
FlannBasedMatcher matcher;
vector matches;
matcher.match(Descriptors1,Descriptors2,matches); matches就是匹配到的向量
可以使用FLANN结合SURF进行关键点的描述和匹配:
1.用SURF进行关键点和描述符的提取。
SURF detector.detect(),extractor.compute();
2.接下来就是用FLANN进行匹配的
创建基于FLANN的描述符匹配对象
FlannBasedMatcher matcher;
vector train_desc_collection(1,srcImgDescriptors);
matcher.add(train_desc_collection);
matcher.train();

在摄像头下要进行连续匹配的:
匹配训练和测试描述符
vector<vector> matches;
matcher.knnMatch(captureDescriptors,matches,2); matches就是匹配到的特征向量

传说中的劳式算法: 目的就是得到优秀的匹配点
vector goodMatches;
for(unsigned int i=0;i<matches.size();i++)
{
if(matches[i][0].distance < 0.6*matches[i][1].distance)
goodMatches.push_back(matches[i][0]);
}goodMatches就是最佳的匹配了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FLANN(Fast Library for Approximate Nearest Neighbors)算法是一种用于在高维空间中进行快速最近邻搜索的算法。在计算机视觉中,FLANN算法常用于特征匹配,例如在图像配准、图像拼接和三维重建等领域。 特征匹配是指在两个或多个图像中找到相似的特征点,并将它们匹配起来。在匹配过程中,通常需要计算两个图像中每个特征点的相似度,然后找到相似度最高的一对特征点。FLANN算法可以帮助我们快速地找到每个特征点在另一个图像中的最近邻点,从而加速特征匹配的过程。 FLANN算法的核心思想是利用空间划分来降低最近邻搜索的时间复杂度。它将高维空间中的数据点分成多个子空间,并建立一棵KD树(k-dimension tree)来表示这些子空间。在搜索最近邻点时,FLANN算法会利用KD树的结构来避免对所有数据点进行线性搜索,从而提高搜索效率。 使用FLANN算法进行特征匹配的步骤通常包括以下几个步骤: 1. 提取图像中的特征点,并计算它们的特征描述子。 2. 建立KD树,并将特征描述子插入到KD树中。 3. 对于每个特征点,在KD树中搜索它在另一个图像中的最近邻点。 4. 计算每一对匹配点之间的相似度,并找到相似度最高的匹配点对。 FLANN算法的优点是它能够在高维空间中进行快速最近邻搜索,并且在大规模数据集上也能够保持高效率。但是,FLANN算法的缺点是它需要大量的内存来存储KD树,因此在处理大规模数据集时,可能会面临内存不足的问题

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值