Ищете способ «авторитетного», проверенного метода, чтобы доказать, что два фотоизображения «почти идентичны»?

В обычном дискурсе, глядя на сфотографированное изображение (A) в формате JPG и его слегка отфотошопленную версию (A2), большинство людей могут интуитивно сравнить их и визуально оценить, что это действительно одно и то же изображение, за исключением для небольшого числа различий.

Однако это не является формальным доказательством того, что два изображения «почти идентичны», и поэтому могут быть оспорены в условиях, когда требуется более строгий стандарт доказательства (правовые условия или Skeptics.SE).

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

Но поскольку это изображения в формате JPG, я ожидаю, что эффект от фотошопа и сохранения второй версии — с немного другой степенью сжатия для загрузки — приведет к тому, что прямой diff будет на 100% бесполезен.

  1. Существуют ли формальные методологии обработки изображений, которые можно использовать для «различения» двух сохраненных фотоизображений с использованием сжатия с потерями (JPG) ?

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

    Желаемый результат - либо числовой % изменения; или какой-то метод визуализации.

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

  2. Если да, то существуют ли общедоступные веб-сайты или бесплатные программы, которые (а) могут загружать 2 JPG и создавать «diff»; (б) Публиковать точную методологию, которую они используют, которая соответствует #1.

Будет ли выравнивание изображения и режим наложения «Разница» (доступный во многих редакторах) не тем, что вам нужно?
Практически дубликат этих трех вопросов на SO: 1 2 3
@ user28116 - бьет меня. Я не знаю, какие алгоритмы они используют, и поэтому не могу доказать, что они делают то, о чем заявляют, если их бросят на вызов для предоставления доказательств.
Это, вероятно, самый близкий к автоматизированному процессу с визуализацией: scootersoftware.com/help/index.html?picture_compare.html
Вейвлет-разложение?
@MarcinWolny - я не думаю, что BC публикует свою методологию сравнения (по крайней мере, не по приведенной вами ссылке). И это не с открытым исходным кодом, поэтому я не могу проверить код.
@PhilipKendall - ни один из ответов на эти ТАК вопросы, адресованные «является ли метод проверенным рецензируемым способом» (я не утверждаю, что это не так, просто ответы не касаются этого, что имеет смысл, учитывая, что это ТАК)
Режим наложения Difference — это визуализация абсолютной разницы между пикселями — это просто прямое вычитание в каждом из цветовых каналов без учета знака. Эффекты сжатия JPEG, кадрирование, незначительные изменения контрастности и т. д. можно легко отличить от замены пикселей.
@DVK Учитывая, что ни в одном из этих ответов никто не указал на «окончательный» метод, я думаю, что простой ответ на ваш вопрос - «нет».
@PhilipKendall - я не ищу ни одного «окончательного» метода. Просто тот, у которого есть доказательство того, что он работает (доказательством является «вот используемый алгоритм. Вот исследование, доказывающее, что алгоритм работает, теоретически, или путем запуска множества изображений и отсутствия ошибок типа 1 или типа 2)
И я все еще думаю, что ответ на ваш вопрос "нет".
Я бы не беспокоился о попытке соответствовать «стандартам» SkepticsSE - они, похоже, работают с логическими системами и «стандартами [sic] доказательства», неизвестными в научном или инженерном мире. Просто скажите им, что вы видели веб-сайт, на котором говорится, что это одно и то же, и они будут счастливы. (Возможно, вам придется опубликовать их обоих на сайте и сказать, что они одинаковы, и дать им ссылку, если они находятся в строгом режиме).
Как бы то ни было, не существует криминалистических методов любого типа анализа изображений, которые бы доказывали... что-либо. Вместо этого методы предоставляют данные. В зависимости от ситуации, аналитик или правоохранительные органы, а в некоторых ситуациях, в конечном счете, судья или присяжные должны сказать, что данные являются доказательством. Однако, если вы ищете что-то для предоставления данных, которые могут показать, было ли содержание изображения обработано фотошопом, анализ уровня ошибок существует уже несколько лет только для этого.
@BSaw - это правильно. Я не ищу "Подделка/не подделка". Я ищу данные уровня «это изображение на 97% похоже на это изображение (с уверенностью xxx)».

Ответы (4)

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

Страница википедии описывает, как его рассчитать: http://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio

Это математическая оценка, основанная на числовой разнице между значениями пикселей. Сначала необходимо выровнять два изображения. Небольшое смещение может привести к плохой оценке совпадения, даже если в остальном изображение идентично.

Судя по последнему абзацу, требование "нечувствительности к масштабированию" похоже сильно нарушено?
Является ли PSNR значимым показателем сам по себе или его можно использовать только для сравнения различных моделей? Сначала я подумал о MAE, который тривиально вычислить в PS, используя разностный режим и среднее значение пикселя из информации гистограммы. Однако вы можете использовать MAE, только если у вас есть другое значение MAE для сравнения. Вот почему я рекомендовал корреляцию.
@DVK PSNR не чувствителен к масштабированию, я не знаю стандартной метрики. Так что краткий ответ на ваш вопрос будет "нет". Существует SIFT (преобразование инвариантных к масштабу признаков), которое работает для элементов изображения (линий, углов и т. д.), но не для целых изображений. Вы могли бы придумать способ преобразования изображений в функции SIFT, а затем сравнить функции, но тогда этот метод не был бы общепринятым, поскольку вы бы его только что изобрели.
@AndyBlankertz да, оценки PSNR имеют смысл сами по себе - в отличие от MAE, ошибка выражается относительно сигнала.

Вы можете использовать Photoshop и слои, чтобы увидеть «разницу» между ними. Мне известно о приложении diff для Mac, которое делает это с изображениями: область изображения Kaleidoscope звучит так, как вы хотите.

Какая методология используется для любого из них, и доказала ли она свою эффективность?
В обоих случаях это просто вычитание разницы между наложенными пикселями, чтобы визуализировать изменения. Это доказано тем, что это работает хорошо, да, но предоставит ли это вам необходимую информацию, зависит от вас. Я сомневаюсь, что это будет делать то, что вы хотите, потому что, как упомянул пользователь 28116 в комментариях к вопросу, любое изменение изображения приводит к тому, что оно появляется в режиме смешивания различий.
@DanWolfgang: Небольшие различия будут отображаться в виде темно-серых значений, которые легко интерпретируются. Например, если вы возьмете два идентичных слоя изображения, преобразуете их в цветовой режим Lab и добавите 1 к каналу L для всех пикселей в одном слое, вы получите сплошной очень темно-серый результат. Это настоящая проблема с техникой различия: ваш монитор, вероятно, настроен так, что вы не можете отличить 99% черного от 100% черного. Он просто будет выглядеть черным. При этом я добавляю корректирующий слой Levels или Curves поверх, чтобы увеличить контраст.

Что вам нужно, так это мера сходства изображений.

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

Это за платной бумагой также связано с использованием техники, которую я использовал раньше, называемой NCD (нормализованное расстояние сжатия). Результатом такой меры является значение от 0 до 1, где 0 указывает, что оба изображения идентичны (хорошо, я никогда не видел, чтобы это было 0 даже для идентичных файлов, но значения очень близки к 0).

Мое чтение статьи FCD говорит, что она хороша только для обнаружения изображений, которые либо идентичны, либо отличаются только частями изображения. Я считаю, что если вы возьмете изображение, преобразуете его в цветовое пространство HSL и добавите 1 ко всем компонентам L, сделав его немного ярче, вы получите результат 1 из алгоритма FCD, что означает, что они совершенно разные. . Я не думаю, что ОП хочет этого.

Как насчет расчета корреляции изображений? Это хорошо зарекомендовавший себя метод поиска различий между изображениями, и он дает полезное число, определяющее разницу.

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

Не могли бы вы подробнее рассказать о методе? (можно ссылки на ссылки). Спасибо
Я узнал об этом из бесплатной книги на dspguide.com
Вы просто берете несколько небольших областей с обоих изображений и выравниваете эти небольшие области по отдельности, максимизируя корреляцию между ними. Затем вы видите, совместимы ли отдельные выравнивания с одним глобальным преобразованием выравнивания (например, если вы перемещаете две области друг над другом, вы проверяете, могут ли другие области быть выровнены одним вращением вокруг двух, которые вы поместили). Топ). Если это работает, вы можете проверить корреляции между частями изображения, которые должны соответствовать друг другу. Затем вы рассматриваете корреляцию между многими такими случайно выбранными областями.
Размер областей следует брать достаточно маленьким, чтобы изменения яркости в основном были связаны с тем, как камера обрабатывала изображение. Вы не хотите, чтобы какая-либо корреляция, которую вы сейчас обнаружите, была подчинена сходству изображенного физического объекта.