SIFT特徵檢測 最近鄰近似匹配 2NN優化

2021-10-04 22:18:13 字數 1331 閱讀 2336

import math

from matplotlib import pyplot as plt

import matplotlib

%matplotlib inline

book_l = cv2.imread(

'./images/book_l.png'

)book_r = cv2.imread(

'./images/book_r.png'

)# sift運算元

gray1 = cv2.cvtcolor(book_l, cv2.color_bgr2gray)

gray2 = cv2.cvtcolor(book_r, cv2.color_bgr2gray)

maxcorners =

1000

# 特徵點檢測計算描述子

sift = cv2.xfeatures2d_sift.create(nfeatures=maxcorners)

kp1, descriptors1 = sift.detectandcompute(gray1,

none

)kp2, descriptors2 = sift.detectandcompute(gray2,

none

)# 最近鄰近似匹配

fbmatcher = cv2.flannbasedmatcher(

)matches = fbmatcher.knnmatch(descriptors1, descriptors2, k=2)

# 2nn匹配優化

最近鄰近似匹配flannbasedmatcher的匹配速度要比暴力匹配bfmatcher的速度要快,但是匹配效果會比較低,因此使用2nn優化、根據最臨近m和此臨近n之間如果滿足m

近似最近鄰演算法 annoy解析

annoy是高維空間求近似最近鄰的乙個開源庫。annoy構建一棵二叉樹,查詢時間為o logn annoy通過隨機挑選兩個點,並使用垂直於這個點的等距離超平面將集合劃分為兩部分。如圖所示,圖中灰色線是連線兩個點,超平面是加粗的黑線。按照這個方法在每個子集上迭代進行劃分。依此類推,直到每個集合最多剩餘...

最近鄰搜尋和近似最近鄰搜尋(NN和ANN)和庫

這樣查詢返回的前k個向量並不一定是最相似的k個向量,衡量ann演算法好不好的乙個依據是召回,每次ann請求返回的k個結果與使用暴力查詢的k個結果去比較,如果完全一致,說明是最好的。因為省了搜尋時間卻沒有影響效果。目前的ann演算法有基於圖 hnswlib 的,基於樹 pysparnn 的,基於雜湊 ...

SIFT特徵檢測與RANSAC過濾

function siftdetect.cpp brief 對sift特徵檢測和匹配進行測試,並實現ransac演算法進行過濾錯配點 author ltc date 11 20 saturday,28 november,2015 include include includeusing namesp...