Сравнение экстракторов объектов (или сравнение выровненных изображений) - PullRequest
0 голосов
/ 14 апреля 2019

Я бы хотел сравнить ORB, SIFT, BRISK, AKAZE и т. Д., Чтобы найти, что лучше всего подходит для моего конкретного набора изображений.Меня интересует окончательное выравнивание изображений.

Есть ли стандартный способ сделать это?

Я рассматриваю это решение: взять каждый алгоритм, извлечь особенности, вычислить гомографиюи преобразуйте изображение.

Теперь мне нужно проверить, какое преобразованное изображение ближе к целевому шаблону.

Может быть, я могу повторить процесс с целевым шаблоном и преобразованным изображением и найтиГомографическая матрица ближе всего к идентичности, но я не уверен, как точно вычислить эту близость.И я не уверен, какой алгоритм я должен использовать для этой проверки, я полагаю, фиксированный.

Или я мог бы сделать некоторое сравнение на уровне пикселей между изображениями, используя хэш восприятия разницы (dHash).Но я подозреваю, что следующее расстояние Хемминга может быть не очень хорошим для изображений, которые будут почти идентичны.

Я мог бы размыть их и сделать простое вычитание, но звучит довольно слабо.

Спасибо за любыепредложения.

РЕДАКТИРОВАТЬ: У меня есть тысячи изображений для тестирования.Это картины реального мира.Изображения представляют собой документы разных видов, некоторые с большим количеством графики, другие в основном геометрические.У меня около 30 разных шаблонов.Я подозреваю, что разные шаблоны лучше всего работают с разными алгоритмами (я заранее знаю шаблон, чтобы я мог выбрать лучший).

Сейчас я использую cv2.matchTemplate, чтобы найти некоторые эталонные патчи в преобразованных изображениях, и сравниваюих местоположения к эталонным.Это работает, но я бы хотел улучшить это.

1 Ответ

0 голосов
/ 15 апреля 2019

Судя по вашему вопросу, задача состоит не в том, чтобы сравнить сами экстракторы элементов, а в том, чтобы найти, какой тип экстрактора элементов приводит к наилучшему выравниванию.

Для этого вам понадобятся две вещи:

  • способ выполнения выравнивания с использованием функций из разных экстракторов
  • способ проверки точности выравнивания

Алгоритм, который вы предложили, является хорошим подходом для выполнения выравнивания. Чтобы проверить точность, вам нужно знать, что такое хорошее выравнивание.

Вы можете начать с выравнивания, которое вы уже знаете. И самый простой способ узнать выравнивание между двумя изображениями, если вы сделали обратную операцию самостоятельно. Например, начиная с одного изображения, вы поворачиваете его на определенную величину, переводите / обрезаете / масштабируете или объединяете все эти операции. Зная, как вы получили изображение, вы можете получить идеальное выравнивание (то, которое отменяет ваши операции).

Затем, имея идеальное выравнивание и выравнивание, сгенерированное вашим алгоритмом, вы можете использовать одну метрику для оценки ее точности в зависимости от вашего определения «хорошего выравнивания».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...