Я пытаюсь вычислить подобие (чтение: Расстояние Левенштейна) двух изображений, с помощью Python 2.6 и PIL.
Я планирую на нас e библиотека python-levenshtein для быстрого сравнения.
Основной вопрос:
Что такое хорошая стратегия сравнения изображений? Моя идея - что-то как:
Конечно, это не обработает случаи как зеркальные изображения, кадрированные изображения, и т.д. Но для основного сравнения, это должно быть полезно.
Существует ли лучшая стратегия, зарегистрированная где-нибудь?
Править: Aaron H прав относительно проблемы скорости. Вычисление Levelshtein сопровождает навсегда для изображений, больше затем несколько сотен на несколько сотен пикселей. Однако различие между результатами после уменьшения масштаба к 100x100 и 200x200 - меньше затем 1% в моем примере, таким образом, могло бы быть мудро настроить максимальный размер изображения ~100px или так...
Править: Спасибо PreludeAndFugue, тот вопрос - то, что я искал.
Между прочим, расстояние Левенштейна может быть оптимизировано, это кажется, но это дает мне некоторые действительно плохие результаты, возможно, из-за существует много избыточных элементов в фонах. Добрался для рассмотрения некоторых других алгоритмов.
EIDT: Среднеквадратичное отклонение и порция максимального сигнала к шуму, кажется, еще две опции, которые не очень трудно реализовать и являются по-видимому не очень дорогими ЦП. Однако кажется, что я испытываю необходимость в некотором анализе контекста для распознавания форм и т.д.
Так или иначе, спасибо за все ссылки, и также за указание на направление к NumPy/SciPy.
Вы можете взглянуть на библиотеку stsci, она создана для сравнения и анализа изображений. Она должна дать вам то, что вы хотите, но может быть немного избыточной.
Если вы хотите все упростить, можно сначала уменьшить количество цветов и разрешение, а затем рассчитать расстояние.