Я бы хотел сравнить ORB, SIFT, BRISK, AKAZE и т. Д., Чтобы найти, что лучше всего подходит для моего конкретного набора изображений.Меня интересует окончательное выравнивание изображений.
Есть ли стандартный способ сделать это?
Я рассматриваю это решение: взять каждый алгоритм, извлечь особенности, вычислить гомографиюи преобразуйте изображение.
Теперь мне нужно проверить, какое преобразованное изображение ближе к целевому шаблону.
Может быть, я могу повторить процесс с целевым шаблоном и преобразованным изображением и найтиГомографическая матрица ближе всего к идентичности, но я не уверен, как точно вычислить эту близость.И я не уверен, какой алгоритм я должен использовать для этой проверки, я полагаю, фиксированный.
Или я мог бы сделать некоторое сравнение на уровне пикселей между изображениями, используя хэш восприятия разницы (dHash).Но я подозреваю, что следующее расстояние Хемминга может быть не очень хорошим для изображений, которые будут почти идентичны.
Я мог бы размыть их и сделать простое вычитание, но звучит довольно слабо.
Спасибо за любыепредложения.
РЕДАКТИРОВАТЬ: У меня есть тысячи изображений для тестирования.Это картины реального мира.Изображения представляют собой документы разных видов, некоторые с большим количеством графики, другие в основном геометрические.У меня около 30 разных шаблонов.Я подозреваю, что разные шаблоны лучше всего работают с разными алгоритмами (я заранее знаю шаблон, чтобы я мог выбрать лучший).
Сейчас я использую cv2.matchTemplate, чтобы найти некоторые эталонные патчи в преобразованных изображениях, и сравниваюих местоположения к эталонным.Это работает, но я бы хотел улучшить это.