Например, для недавнего разговора о сжатии JPEG я хотел сравнить пиксель за пикселем, который изменился между двумя JPEG (один с уровнем сжатия 100, а другой с уровнем сжатия 95).
Как создать хорошие визуальные карты того, что изменилось, без утомительного пользовательского программирования?
Ответы:
Фотошоп + Слои FTW. (Да, вы также можете использовать Gimp или любое другое программное обеспечение для редактирования с теми же функциями.)
Начнем с базового изображения, в приведенном выше случае я использовал изображение в формате jpeg quality 100.
В полученном изображении любой пиксель, который в любом случае отличается от двух изображений, будет белым. Вы можете настроить его так, чтобы все было немного иначе, изменив пороговое значение.
Пример, показывающий много различий между jpeg 92 и 100 от Lightroom.
Пример, не показывающий никакой разницы между 95 и 100.
Не просто показывает, что двоичный файл "изменен или нет", а что, если вы хотите узнать больше о том, насколько он изменился, скажем, по цветному каналу?
Чем ярче получаемые пиксели, тем больше они отличаются по цвету. Недостатком является то, что вы в конечном итоге получаете много серой грязи ... поэтому иногда проще просто ограничить ее, чтобы увидеть различия. Вот почему я строю оба и переключаю, какой из них виден.
источник
Если вы используете Photoshop, вот как я это сделаю:
Поместите два файла JPEG в один файл PSD, в два отдельных слоя. Они должны точно совпадать, поскольку их размеры одинаковы. (который идет сверху не имеет значения).
Установите режим смешивания слоя на «Разница». Вы увидите в основном черный результат. В зависимости от разницы в качестве между двумя исходными слоями вы можете увидеть больше или меньше шума.
источник
Все пакеты обработки изображений должны сделать это легко. Я покажу вам, как это сделать в Mathematica, если у вас есть доступ к этой системе. Mathematica - это язык программирования, но манипулировать этим видом действительно легко, поэтому, если у вас есть доступ к нему (например, через лицензию сайта университета), я рекомендую вам попробовать!
Сначала импортируйте изображение:
Перепрессуйте его, используя сжатие JPEG
Теперь возьмите разницу значений пикселей, сначала преобразовав их в числа с плавающей запятой, чтобы гарантировать сохранение отрицательных значений.
На разностном изображении мало что видно (разница крошечная), а отрицательные значения обрезаются до черного. Итак, давайте изменим масштаб всех значений, чтобы заполнить весь динамический диапазон (минимум будет масштабироваться до 0, максимум до 1):
ImageDifference
дает абсолютную разницу двух изображений и не дает отрицательных чисел. Эту операцию вы, скорее всего, найдете в пакетах обработки изображений, особенно с графическим интерфейсом (Photoshop, GIMP).Мы также можем взять один канал RGB, например, красный, и визуализировать положительные и отрицательные различия, используя «противоположные» цвета:
Вот тоже самое, с 5-кратным усилением различий. Артефакты JPEG теперь более узнаваемы.
Преимущество использования языка программирования состоит в том, что мы можем легко автоматизировать это и увидеть, как меняется разница для «уровней сжатия» между 0,1 и 1,0:
источник
Вы можете использовать инструменты командной строки Imagemagick.
обеспечит абсолютную величину различий для каждого канала RGB.
источник
GitHub имеет несколько интересных инструментов различий в изображениях, встроенных в него в Интернете, как описано здесь и продемонстрировано в этой демонстрации .
источник
На полученном изображении черные части показывают, где исходные изображения идентичны, а все, что светлее, показывает различия.
источник