Я пытаюсь найти совпадающие элементы в двух больших изображениях (ортофотопланы, охватывающие сотни акров с разрешением 5 см), чтобы я мог их зарегистрировать.Я нахожу многие тысячи ключевых точек на двух изображениях, а затем нахожу перекрестные проверки совпадений, сортирую их и беру лучшие ~ 30% совпадений.Географически спички не очень хорошие.Вот код:
def find_matches(key1, dsc1, key2, dsc2):
#Match features - this uses the BFmatcher class, I use it to take advantage of crossCheck
matcher = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches = matcher.match(dsc1, dsc2)
# Sort matches by score
matches.sort(key=lambda x:x.distance, reverse=False)
# Remove not so good matches Is this needed when we do geo sort?
print("cross-check matches = ", len(matches))
numGoodMatches = int(len(matches) * GOOD_MATCH_PERCENT)
matches = matches[:numGoodMatches]
# Draw top matches
imMatches = cv2.drawMatches(refimgGray, key1, imgGray, key2, matches, None, flags=4,)
cv2.imwrite(r"C:\AV GIS\matches.jpg", imMatches)
return matches
Когда я смотрю на график расстояния, связанного с отсортированными совпадениями, я вижу много значений расстояния Хэмминга одного и того же значения: График расстояний совпадений - ось Xотсортированный номер совпадения, ось Y - расстояние Хэмминга.Это похоже на лестничные ступени, с множеством спичек на одном и том же расстоянии Хэмминга.
Я добавляю дополнительную фильтрацию совпадений, чтобы гарантировать, что они географически близки, но я думаю, что я пропускаю много хороших совпадений только потому, что они "невидимы" для сопоставителя.
Здесьмой вопрос: может ли кто-нибудь объяснить, как решаются совпадения, когда нужно оценить только один балл, а он не уникален?Я попробовал то же самое с изображением с одной камеры (на порядок меньше по количеству пикселей), и даже тогда оценки расстояния не были уникальными.Я неправильно понимаю, как найти и использовать эти совпадения?
ДОБАВЛЕНО - вот график наилучших совпадений ключевых точек, окрашенных по географическим расстояниям. график наилучших совпадений ключевых точек в цвете по географическим расстояниям