我正在比較影像并且我曾經BFMatcher執行過特征匹配
我的實際代碼是:
def get_similarity_from_desc(approach, query_desc, corp_desc):
if approach == 'sift':
# BFMatcher with euclidean distance
bf = cv.BFMatcher()
else:
# BFMatcher with hamming distance
bf = cv.BFMatcher(cv.NORM_HAMMING)
matches = bf.knnMatch(query_desc,corp_desc,k=2)
# Apply ratio test
good = []
for m,n in matches:
if m.distance < 0.75*n.distance:
good.append([m])
similarity = ??
return similarity
我想知道是否可以在給定良好匹配串列和兩個影像的描述符的情況下計算相似性度量goodquery_desccorp_desc
這一刻我在想:
similarity = len(good) / len(matches)
但我認為這不是確定兩個影像之間相似性的正確方法
您知道計算此度量的更好方法嗎?
uj5u.com熱心網友回復:
我終于做到了,這似乎運作良好:
def get_similarity_from_desc(approach, search_desc, idx_desc):
if approach == 'sift' or approach == 'orb_sift':
# BFMatcher with euclidean distance
bf = cv.BFMatcher()
else:
# BFMatcher with hamming distance
bf = cv.BFMatcher(cv.NORM_HAMMING)
matches = bf.match(search_desc, idx_desc)
# Distances between search and index features that match
distances = [m.distance for m in matches]
# Distance between search and index images
distance = sum(distances) / len(distances)
# If distance == 0 -> similarity = 1
similarity = 1 / (1 distance)
return similarity
來源:https ://linuxtut.com/en/c9497ffb5240622ede01/
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/450094.html
上一篇:有沒有辦法根據影像的寬度、高度和檔案大小來確定Bitmap.getByteCount?
下一篇:numpy陣列的輪廓檢測
