FLANN 快速特徵匹配

2021-10-12 17:45:57 字數 1300 閱讀 7617

輸入:

相同維度的兩個特徵描述

n行 m列,n是關鍵點個數,m是每個關鍵點特徵描述的維度

輸出:前k個最相近的特徵向量

import cv2

from numpy import

*# while using orb, you can pass the following.

flann_index_lsh =

6index_params =

dict

(algorithm=flann_index_lsh,

table_number=6,

# 12

key_size=12,

# 20

multi_probe_level=1)

# 2search_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.0trainidx: 2

0.0trainidx: 0

0.0trainidx: 1

由此看出,在查詢影象中找到了每個最相似的關鍵點的索引

SIFT特徵匹配

影象特徵分很多種,例如顏色特徵 紋理特徵 形狀特徵 空間關係特徵等。常用的特徵為sift特徵。sift scale invariantfeaturetransform,sift 具有以下特性 1 對平移 旋轉 伸縮 亮度 遮擋和雜訊等具有良好的不變性,對視覺變化 仿射變換也有一定的穩定性。2 即使少...

特徵點匹配

一 特徵點 角點 匹配 影象匹配能夠應用的場合非常多,如目標跟蹤,檢測,識別,影象拼接等,而角點匹配最核心的技術就要屬角點匹配了,所謂角點匹配是指尋找兩幅影象之間的特徵畫素點的對應關係,從而確定兩幅影象的位置關係。角點匹配可以分為以下四個步驟 1 提取檢測子 在兩張待匹配的影象中尋找那些最容易識別的...

opencv python 特徵匹配

feature matching brute force匹配非常簡單,首先在第一幅影象中選取乙個關鍵點然後依次與第二幅影象的每個關鍵點進行 描述符 距離測試,最後返回距離最近的關鍵點.對於bf匹配器,首先我們必須使用cv2.bfmatcher 建立bfmatcher物件。它需要兩個可選的引數.第乙個...