"Diff" изображение с помощью ImageMagick
Как я могу получить разницу между двумя изображениями? У меня есть исходное изображение. Кто-то написал на точной копии оригинального изображения. Теперь мне нужно сравнить оригинал с написанным на изображении и извлечь только запись в формате изображения.
пример: у меня есть картинка дома. Кто-то взял копию и написал "Привет!"на копии. Я хочу как-то сравнить две картинки, снять дом, и остаться с изображением слов "Привет!".
Is это возможно с помощью ImageMagick? Я знаю, что есть способы получить статистическую разницу между изображениями, но это не то, что я ищу.
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-пейджеры)!
слева: Изображение с текстом центр: оригинал изображения правильно: различия (=текст) в красных пикселях.
compare \ porsche-with-scratch.pdf porsche-original.pdf \ -compose src \ diff-compose-default.pdfэто та же команда, которую я предложил ранее выше.
слева: изображения с текстом центр: оригинал изображения правильно: различия в пикселях' seagreen'.
compare \ porsche-with-scratch.pdf porsche-original.pdf \ -compose src \ -highlight-color seagreen \ diff-compose-default.pdfэта команда добавляет параметр, чтобы сделать разницу пикселей "seagreen" вместо красного по умолчанию.
слева: Изображение с текстом центр: оригинал изображения правильно: синие различия (но w. некоторый фон контекста)
l
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, что по существу означает принятие минимальный.так что вещи, которые являются белыми в обоих изображениях остаются белыми. Вещи, которые являются черными на обоих изображениях, остаются черными. То, что на первом изображении белое, а на втором-черное, становится красным, а то, что на втором-белое, а на первом-черное, становится зеленым.
результат дает вам красиво цветное изображение, где вы можете легко связать зеленый с первым входом и красный со вторым. Вот пример, где я использую это для сравнения выходных данных Латекс против этого от компании (прежде чем я исправлены некоторые ошибки сделать это лучше):
вы можете комбинировать подходы, используя
compareпосмотреть здесь что-то изменилось, а затем с помощью выше, чтобы увидеть более подробно как она изменилась.


l
Comments