Все пакеты обработки изображений должны сделать это легко. Я покажу вам, как это сделать в Mathematica, если у вас есть доступ к этой системе. Mathematica - это язык программирования, но манипулировать этим видом действительно легко, поэтому, если у вас есть доступ к нему (например, через лицензию сайта университета), я рекомендую вам попробовать!
Сначала импортируйте изображение:
img = Import["http://farm1.staticflickr.com/62/171463865_36ee36f70e.jpg"]
Перепрессуйте его, используя сжатие JPEG
img2 = ImportString@ExportString[img, "JPEG", "CompressionLevel" -> 0.35]
Теперь возьмите разницу значений пикселей, сначала преобразовав их в числа с плавающей запятой, чтобы гарантировать сохранение отрицательных значений.
diff = ImageSubtract[Image[img, "Real"], Image[img2, "Real"]]
На разностном изображении мало что видно (разница крошечная), а отрицательные значения обрезаются до черного. Итак, давайте изменим масштаб всех значений, чтобы заполнить весь динамический диапазон (минимум будет масштабироваться до 0, максимум до 1):
ImageAdjust[diff]
ImageDifference
дает абсолютную разницу двух изображений и не дает отрицательных чисел. Эту операцию вы, скорее всего, найдете в пакетах обработки изображений, особенно с графическим интерфейсом (Photoshop, GIMP).
ImageDifference[img, img2]
Мы также можем взять один канал RGB, например, красный, и визуализировать положительные и отрицательные различия, используя «противоположные» цвета:
ArrayPlot[0.5 + ImageData[First@ColorSeparate[diff, "Red"]],
ColorFunction -> "RedGreenSplit", ColorFunctionScaling -> False]
Вот тоже самое, с 5-кратным усилением различий. Артефакты JPEG теперь более узнаваемы.
ArrayPlot[0.5 + 5 ImageData[First@ColorSeparate[diff, "Red"]],
ColorFunction -> "RedGreenSplit", ColorFunctionScaling -> False]
Преимущество использования языка программирования состоит в том, что мы можем легко автоматизировать это и увидеть, как меняется разница для «уровней сжатия» между 0,1 и 1,0:
Grid@Partition[Table[
ArrayPlot[
0.5 + ImageData[
First@ColorSeparate[
ImageSubtract[Image[img, "Real"],
Image[ImportString@
ExportString[img, "JPEG", "CompressionLevel" -> c],
"Real"]], "Red"]], ColorFunction -> "RedGreenSplit",
ColorFunctionScaling -> False],
{c, 0.1, 1, 0.1}
], 5]