"Diff" изображение с помощью ImageMagick



Как я могу получить разницу между двумя изображениями? У меня есть исходное изображение. Кто-то написал на точной копии оригинального изображения. Теперь мне нужно сравнить оригинал с написанным на изображении и извлечь только запись в формате изображения.



пример: у меня есть картинка дома. Кто-то взял копию и написал "Привет!"на копии. Я хочу как-то сравнить две картинки, снять дом, и остаться с изображением слов "Привет!".



Is это возможно с помощью ImageMagick? Я знаю, что есть способы получить статистическую разницу между изображениями, но это не то, что я ищу.

698   2  

2 ответов:

мои собственные фавориты эти два:

 compare image1 image2 -compose src diff.png
 compare image1 image2 -compose src diff.pdf

единственное различие между двумя командами выше: первый показывает визуальную разницу между двумя изображениями в виде файла PNG, второй-в виде PDF.

полученный файл diff показывает все пиксели, которые отличаются красным цветом. Те, которые остаются неизменными, выглядят белыми.

короткий и сладкий.

обратите внимание, ваши изображения нужны не быть того же типа. Вы даже можете смешивать JPEG, TIFF, PNG -- при одном условии: изображения должны быть одного размера (размер изображения в пикселях). Формат вывода определяется расширением выходного файла.

Если вам по какой-то причине нужно более высокое разрешение, чем по умолчанию (72 dpi) - тогда просто добавьте соответствующий :

 compare -density 300 image1 image2 -compose src diff.jpeg

примеры

вот несколько иллюстраций результатов для вариаций выше команда. Примечание: два сравниваемых файла были дажеPDF-файлы, так что он работает с ними тоже (пока они 1-пейджеры)!


слева: Изображение с текстом центр: оригинал изображения правильно: различия (=текст) в красных пикселях. Red difference pixels only; identical pixels are white

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -compose src \
        diff-compose-default.pdf

это та же команда, которую я предложил ранее выше.


слева: изображения с текстом центр: оригинал изображения правильно: различия в пикселях' seagreen'. Seagreen difference pixels only; identical pixels are white

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -compose src \
       -highlight-color seagreen \
        diff-compose-default.pdf

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


слева: Изображение с текстом центр: оригинал изображения правильно: синие различия (но w. некоторый фон контекста) Blue difference pixels only; first of the compared images as a lightened-up backgroundl

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -highlight-color blue \
        diff-compose-default.pdf

эта команда удаляет -compose src часть-результатом является поведением по умолчанию compare который сохраняет в качестве освещенного фона первый из 2-х рассеянных изображений. (На этот раз с добавленным параметром, чтобы сделать различия пикселей отображаются синим цветом.)

пока compare делает хорошую работу для многих приложений, я обнаружил, что иногда я предпочитаю другой подход, особенно при сравнении изображений, которые в основном оттенки серого:

convert '(' file1.png -flatten -grayscale Rec709Luminance ')' \
        '(' file2.png -flatten -grayscale Rec709Luminance ')' \
        '(' -clone 0-1 -compose darken -composite ')' \
        -channel RGB -combine diff.png

идея заключается в следующем: конвертировать оба file1.png и file2.png в оттенки серого. Затем трат первый как красный канал результирующего изображения, второй как зеленый канал. Синий канал формируется из этих двух с помощью darken оператор compose, что по существу означает принятие минимальный.

так что вещи, которые являются белыми в обоих изображениях остаются белыми. Вещи, которые являются черными на обоих изображениях, остаются черными. То, что на первом изображении белое, а на втором-черное, становится красным, а то, что на втором-белое, а на первом-черное, становится зеленым.

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

enter image description here

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

Comments

    Ничего не найдено.