Сравнение (подобных) изображений с Python/PIL

Я пытаюсь вычислить подобие (чтение: Расстояние Левенштейна) двух изображений, с помощью Python 2.6 и PIL.

Я планирую на нас e библиотека python-levenshtein для быстрого сравнения.

Основной вопрос:

Что такое хорошая стратегия сравнения изображений? Моя идея - что-то как:

  • Преобразуйте в RGB (прозрачный-> белый) (или, возможно, преобразуйте в монохром?)
  • Увеличьте масштаб меньшего до большего размер
  • Преобразуйте каждый канал (= единственный канал, если преобразовано в монохром) к последовательности (значение объекта = значение цвета пикселя)
  • Вычислите расстояние Левенштейна между двумя последовательностями

Конечно, это не обработает случаи как зеркальные изображения, кадрированные изображения, и т.д. Но для основного сравнения, это должно быть полезно.

Существует ли лучшая стратегия, зарегистрированная где-нибудь?

Править: Aaron H прав относительно проблемы скорости. Вычисление Levelshtein сопровождает навсегда для изображений, больше затем несколько сотен на несколько сотен пикселей. Однако различие между результатами после уменьшения масштаба к 100x100 и 200x200 - меньше затем 1% в моем примере, таким образом, могло бы быть мудро настроить максимальный размер изображения ~100px или так...

Править: Спасибо PreludeAndFugue, тот вопрос - то, что я искал.

Между прочим, расстояние Левенштейна может быть оптимизировано, это кажется, но это дает мне некоторые действительно плохие результаты, возможно, из-за существует много избыточных элементов в фонах. Добрался для рассмотрения некоторых других алгоритмов.

EIDT: Среднеквадратичное отклонение и порция максимального сигнала к шуму, кажется, еще две опции, которые не очень трудно реализовать и являются по-видимому не очень дорогими ЦП. Однако кажется, что я испытываю необходимость в некотором анализе контекста для распознавания форм и т.д.

Так или иначе, спасибо за все ссылки, и также за указание на направление к NumPy/SciPy.

8
задан pnuts 1 November 2015 в 03:08
поделиться

1 ответ

Вы можете взглянуть на библиотеку stsci, она создана для сравнения и анализа изображений. Она должна дать вам то, что вы хотите, но может быть немного избыточной.

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

2
ответ дан 5 December 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: