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

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

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

Спасибо.

Ответы

Ответ 1

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

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

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

 compare first.jpg second.png difference.gif

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

Все это прекрасно описано здесь.

Ответ 2

TortoiseIDiff - это бесплатный просмотрщик изображений:

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

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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