flann cv2:如何对从Lowe比率检验获得的“良好”匹配描述符进行排名?

时间:2018-09-19 09:19:50

标签: match ranking cv2 descriptor flann

我想在两个不同的图像上找到特定数量的相似特征。我使用SURF查找关键点和描述符,并使用FLANN来匹配描述符。基于Lowe的比率测试,可以选择良好的匹配项。从这些好的比赛中,我想选择第X个最佳比赛,但我没有找到方法。

有什么想法吗?到目前为止,这是我的代码:

# Open images as grayscale
im1 = cv2.imread(path_to_image1, 0)
im2 = cv2.imread(path_to_image2, 0)

# Create SURF object and find keypoints and descriptors
surf1 = cv2.xfeatures2d.SURF_create(400, upright=0, extended=1)
kp1, des1 = surf1.detectAndCompute(im1, mask=mask_data)
surf2 = cv2.xfeatures2d.SURF_create(400, upright=0, extended=1)
kp2, des2 = surf2.detectAndCompute(im2, mask=mask_data)

# Match descriptor vectors using FLANN
flann_params = dict(algorithm=0, trees=5, table_number=6, key_size=12, multi_probe_level=1)  
search_params = dict(checks=50)  

flann = cv2.FlannBasedMatcher(flann_params, search_params)  
matches = flann.knnMatch(des1, des2, k=2)

# Select only the good matches
good_matches = [m for (m, n) in matches if m.distance < 0.7 * n.distance]  # ratio test as per Lowe's paper (Figure 11 in: https://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf)

rank_ good_matches  = ?

比方说,我有3000场比赛(len(good_matches)= 3000)。我如何对它们进行排名?我想从这3000个最佳中选择1000个。我该如何存档?

预先感谢:-)

没人吗?也许是摄影测量界的某人?

0 个答案:

没有答案