Программа, которая различает 2 изображения

ДВК

Программа, которая различает 2 изображения

Я ищу программу, которая делает «diff» между двумя изображениями JPG.

Требования:

  1. Алгоритм сравнения , используемый приложением, известен .

    В идеале это должно поддаваться проверке с помощью проверки кода, но это желательно, а не требование.

    Это исключает такие вещи, как Beyond Compare .

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

    «проверено» означает что-то вроде консенсуса экспертов в области обработки изображений/компьютерного зрения; рецензируемые публикации, опубликованные результаты крупномасштабных испытаний и т. д.

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

  4. Программа должна иметь возможность обрабатывать изображения, которые были незначительно изменены по сравнению друг с другом, например:

    • Небольшая обрезка краев (скажем, <10%)

    • Изменение качества изображения (сохранение с немного другим сжатием)

    • Прочие незначительные изменения (резкость, контрастность).

  5. Желаемый результат должен указывать степень сходства либо в текстовом виде (92% похоже), либо визуально (тепловая карта, карта с цветовой кодировкой различий и т. д.).


Приятно иметь :

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

  • Предпочтительно бесплатное или недорогое ПО. Это не требование, а сильное предпочтение. Профессиональная услуга стоимостью 100 долларов за изображение (или лицензия на 100 тысяч долларов) — не лучший вариант.

ОС/платформа не имеет большого значения (Windows, Linux, OS/2, веб-приложение и т. д.).

ДВК

ПРИМЕЧАНИЕ. Я НЕ ищу что-то, что скажет мне, было ли изображение отфотошоплено, как в предыдущем аналогичном вопросе. Я ищу JPG-эквивалент команды Unix diff.

Ник Дикинсон-Уайлд

Этот ответ будет не таким хорошим, как мне обычно нравится (из-за недостатка знаний с моей стороны), но я думаю, что он должен хорошо сработать для вас.

Я бы предложил функцию сравнения ImageMagick . Это только командная строка, но она выводит 2 (ошибка), 0 (похоже) или 1 (непохоже), а также карту различий изображений — есть несколько разных типов, которые она может выводить — см. документы для всех МНОГИЕ параметры. Что касается ваших требований:

  • 1: Не знаю, какой алгоритм они используют, но это с открытым исходным кодом (Apache 2.0)
  • 2: То же, что и № 1
  • 3: примерно то же самое, что и № 1, но есть также варианты управления порогами, так что вы можете немного настроить это.
  • 4: Он может обнаруживать, когда изображение включено в другое изображение, он также может обнаруживать только различия в резкости и т. д.
  • 5: визуальное и двоичное сходство.

иавр

На самом деле это не ответ, но если ничего лучшего не появится, он может дать ответ в будущем :-)

Существует наше собственное онлайн-приложение VIRaL , которое позволяет вносить гораздо более серьезные изменения, такие как

  • существенное изменение точки зрения (совпадение широкой базовой линии), приводящее, например, к существенному изменению масштаба или произвольной ориентации;
  • большая окклюзия или частичное совпадение до такой степени, что два изображения могут иметь только небольшую часть (<20%) общего;
  • резкое изменение условий освещения.

Пример , пример .

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

Он использует хорошо известные методы компьютерного зрения, некоторые из которых являются нашими собственными, и оценивались в научных публикациях. Подробнее здесь .

Приложение доступно только онлайн. Он может получить изображение запроса через загрузку пользователя, но сравнивает его только со своей собственной базой данных. Впрочем, если есть интерес, то вообще можно упаковать хотя бы часть этого софта по вашим требованиям. Типичное время выполнения для одного сравнения составляет порядка одной секунды.

Это можно было бы сделать с открытым исходным кодом, но некоторые компоненты по-прежнему будут использовать существующее программное обеспечение, а некоторые из них могут быть проприетарными (хотя соответствующие методы задокументированы в публикациях).

Кстати, вас может заинтересовать предложение SE по компьютерному зрению .

игорёня

Мне нравится использовать BeyondCompare для любого сравнения, даже для сравнения изображений, потому что BeyondCompare может показать разницу в тепловой карте.
Кроме того, вы можете использовать арифметические фильтры PSP Paint Shop Pro. Там вы можете отличить два изображения и получить новое изображение, которое выявит различия.