FLANN 快速特征匹配

  • 用来快速匹配特征。

  • 名词含义:

    des1:第一组特征向量
    des2:第二组特征向量

  • 基于opencv,该方法得到des1在des2中前k个最近的特征

输入:
相同维度的两个特征描述
n行 m列,n是关键点个数,m是每个关键点特征描述的维度

输出:
前k个最相近的特征向量

import cv2
from numpy import *


# While using ORB, you can pass the following.
FLANN_INDEX_LSH = 6
index_params = dict(algorithm=FLANN_INDEX_LSH,
                    table_number=6,  # 12
                    key_size=12,  # 20
                    multi_probe_level=1)  # 2
search_params = dict(checks=50)  # or pass empty dictionary  这是第二个字典,指定了索引里的树应该被递归遍历的次数

flann = cv2.FlannBasedMatcher(index_params, search_params)


# 制作描述子
des_1 = array([[0, 0], [1, 1], [3, 3]]).astype(uint8)  # 训练  模板
des_2 = array([[3, 3], [0, 0], [1, 1]]).astype(uint8)  # 查询

# queryDescriptors, trainDescriptors, k, mask, compactResult
matches = flann.knnMatch(des_2, des_1, k=2)

# print(matches)
for (m, n) in matches:  # m是最小距离  n是次小距离(或者一会加上过滤)
    print(m.distance)
    # print('m.queryIdx:', m.queryIdx)  # 查询
    print('trainIdx:', m.trainIdx)  # 训练

输出结果:

0.0
trainIdx: 2
0.0
trainIdx: 0
0.0
trainIdx: 1

由此看出,在查询图像中找到了每个最相似的关键点的索引

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值