Простой способ (инструмент?) Сравнить пиксель изображения на пиксель в разных форматах?

Что ж, я написал базовую вещь для объединения jpeg без потерь на java, но я хотел бы сравнить файлы, которые он создает, с исходными файлами.

Я могу сравнивать только в шестнадцатеричном редакторе, знает ли кто-нибудь простой способ, основанный на программном обеспечении или java (желательно программном обеспечении, поскольку я больше не чувствую необходимости кодировать сейчас!), Что я могу сравнить два изображения и создать "карту различий" "где пиксели не совпадают?

Спасибо.


person joinJpegs    schedule 27.03.2009    source источник


Ответы (8)


Спасибо за предложения.

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

В конце концов, я использовал ImageMagick то, что недавно установил и о котором совсем забыл. Создать изображение разницы / сравнения так же просто, как набрать:

 compare first.jpg second.png difference.gif

в командной строке.

Все это прекрасно объяснено здесь.

person joinJpegs    schedule 31.03.2009

TortoiseIDiff - это бесплатная программа для просмотра различий изображений:

http://tortoisesvn.tigris.org/TortoiseIDiff.html

Он является частью TortoiseSVN, но может использоваться без Subversion.

В зависимости от вашего проекта не все файлы, находящиеся под контролем версий, являются текстовыми. Скорее всего, у вас тоже будут изображения, например скриншоты и схемы для документации / файла помощи.

Для этих файлов невозможно использовать обычный инструмент сравнения файлов, потому что они работают только с текстовыми файлами и сравнивают их построчно. Здесь на помощь приходит инструмент Tortoise Image Diff (TortoiseIDiff). Он может показывать два изображения бок о бок или даже отображать изображения друг над другом с альфа-смешением.

person mjn    schedule 01.04.2009

Вы могли бы сделать намного хуже, чем Perceptual Diff.

person Mark Simpson    schedule 28.03.2009
comment
Это выглядит очень хорошо, но, вероятно, это намного больше, чем то, что мне нужно сделать. Я просто хочу сравнить изображения попиксельно и увидеть точные различия. Это нужно для того, чтобы проверить, насколько хорошо работает мое редактирование jpeg без потерь. - person joinJpegs; 31.03.2009
comment
Я должен был пояснить немного больше: вы можете указать флаг, который будет выводить изображение, содержащее попиксельные различия, используя PDiff. Единственный недостаток - это странный формат (PPM) :) - person Mark Simpson; 01.04.2009
comment
Порт Java инструмента Perceptual Diff Гектора Йи может генерировать разностное изображение .png: bitbucket.org/joebowbeer/perceptualdiff - person Joe Bowbeer; 23.10.2012

Лучшим подходом было бы использовать Pix для Windows (поставляется с DirectX SDK). Поддерживает Bitmap, PNG и Jpeg ... Наслаждайтесь!

person Bryan Mackenzie    schedule 19.08.2011

Используйте редактор изображений, например Photoshop, GIMP или что-то еще, в котором есть несколько слоев. Создайте изображение, в котором каждое исходное изображение находится в отдельном слое.

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

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

person Doug    schedule 28.03.2009

Для подобных вещей мне нравится netpbm / _ 2_ инструментарий. Вы можете использовать djpeg и pnmtoplainpnm для преобразования каждого изображения в простой формат ASCII. Затем вы просто читаете оба файла и генерируете новое изображение, которое показывает, где различаются пиксели. Вы можете, например, вычислить евклидово расстояние в пространстве RGB между старыми и новыми пикселями и испускать белый пиксель для нулевой разницы, светло-серый для небольшой разницы, более темный для больших различий и т. Д. Формат ASCII прост и хорошо документирован на страницах руководства, и все стандартные программы просмотра могут просматривать его напрямую.

person Norman Ramsey    schedule 28.03.2009

Последняя версия Araxis Merge позволяет сравнивать изображения (http://www.araxis.com/merge/topic_comparing_image_files.html).

К сожалению, это не бесплатное приложение, поэтому другое дело, готовы ли вы за него платить ...

person Narcissus    schedule 28.03.2009

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

person Pavel Vladov    schedule 14.04.2016