Интерпретировать ORB-совпадения в opencv Python
Мне нужно оценить результаты после использования ORB и BFMatcher в OpenCV, чтобы я интерпретировал совпадения после сравнения img1 с img3 и img2 с img3. Я понимаю, что совпадения ORB содержат список расстояний Хэмминга, но я хочу преобразовать этот вектор в скалярное значение подобия.
Я подумал о двух сценариях: 1) используя длину совпадений, чем выше, тем больше сходство. Но как нам поступить, если длина match1 = длина match2?. В этом случае мы можем 2) сложить все расстояния, причем минимум предпочтительнее.
Можем ли мы объединить все случаи в одну метрику?
Вот минимум моей работы:
orb = cv2.ORB()
kp1, des1 = orb.detectAndCompute(img1,None)
kp2, des2 = orb.detectAndCompute(img2,None)
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches = bf.match(des1,des2)
matches = sorted(matches, key = lambda x:x.distance)
return len(matches)
Спасибо