Сравнение изображений в Ubuntu: утилита compare на практике

Обзор возможностей

Консольная утилита compare, входящая в состав графического пакета ImageMagick, предоставляет администраторам и инженерам удобный способ поиска различий между растровыми файлами. Инструмент позволяет как сгенерировать наглядную визуальную карту расхождений, так и вычислить точные математические метрики отклонений для интеграции в CI/CD-пайплайны. Ниже представлено практическое руководство по работе с этой утилитой: от базового развертывания до фильтрации фоновых артефактов и автоматизации проверок.

1. Установка пакета ImageMagick и диагностика утилиты compare

Для подготовки рабочей среды синхронизируем локальные списки репозиториев и установим пакет imagemagick.

sudo apt-get update -qq && sudo apt-get install -y imagemagick

Утилита compare предназначена для сопоставления двух изображений, выявления несовпадающих пикселей и построения результирующего файла с графической разметкой изменений.
Чтобы убедиться в корректности установки и просмотреть сведения о сборке и активных функциях, выполним команду compare -version.
⚙️ [Ключевые параметры запуска]

-metric : определяет алгоритм расчета математической погрешности между файлами (AE, RMSE, PSNR и др.).
-fuzz : устанавливает порог чувствительности (например, 5%), позволяющий игнорировать едва заметные цветовые сдвиги.
-highlight-color : задает оттенок для явного выделения изменившихся областей на результирующем изображении.
-lowlight-color : определяет оформление неизмененных фрагментов (фоновых пикселей) для повышения контрастности.
-compose : задает алгоритм композитинга при объединении исходных слоев в карте различий.

compare -version

2. Генерация тестовых паттернов и рендеринг визуального diff

Для проведения наглядного теста подготовим базовый эталон: с помощью утилиты convert создадим файл base.png с белым фоном и расположенным по центру красным прямоугольником.

convert -size 200x200 xc:white -fill red -draw “rectangle 40,40 160,160” base.png

Теперь сформируем второй файл modified.png, добавив поверх исходного изображения синий блок для имитации правок в интерфейсе или графике.

convert base.png -fill blue -draw “rectangle 70,70 130,130” modified.png

Запустим команду compare, передав исходник base.png и модифицированную версию modified.png, чтобы сохранить карту несовпадений в файл diff.png.
По умолчанию совпадающие области отображаются бледным полупрозрачным фоном, тогда как затронутые модификацией пиксели акцентируются ярко-красным цветом.

compare base.png modified.png diff.png

Проконтролируем факт создания всех графических файлов и их размер с помощью вызова ls -lh base.png modified.png diff.png.

ls -lh base.png modified.png diff.png

3. Расчет численных метрик расхождения с флагом -metric

Если сохранять визуальный файл не требуется, а нужно лишь мгновенно узнать суммарный объем несовпадающих пикселей, выполняют команду compare -metric AE base.png modified.png null: 2>&1.
Метрика AE (Absolute Error) возвращает точное количество отличающихся точек, а перенаправление вывода в псевдоустройство null: исключает запись на диск, транслируя итоговое число прямо в стандартный поток ошибок.

compare -metric AE base.png modified.png null: 2>&1

Для более глубокого статистического анализа расхождений с учетом разницы в цветовых каналах используют расчет среднеквадратичной ошибки: compare -metric RMSE base.png modified.png null: 2>&1.
Индикатор RMSE (Root Mean Squared Error) рассчитывает нормализованную погрешность по всем пикселям, что делает его оптимальным критерием для пороговых проверок в автотестах графического интерфейса.

compare -metric RMSE base.png modified.png null: 2>&1

4. Сглаживание артефактов через -fuzz и настройка палитры подсветки

При артефактах сжатия или незначительных колебаниях рендеринга целесообразно задать допустимую погрешность в 5%, выполнив compare -fuzz 5% base.png modified.png diff_fuzz.png.
Параметр -fuzz отсекает микроскопические различия оттенков, незаметные человеческому глазу, и формирует итоговый файл diff_fuzz.png только с существенными структурными несовпадениями.

compare -fuzz 5% base.png modified.png diff_fuzz.png

Для более комфортного визуального разбора можно переопределить цветовую гамму сопоставления: compare -highlight-color magenta -lowlight-color gray base.png modified.png diff_custom.png.
Опция -highlight-color выделяет измененные зоны контрастным пурпурным цветом (magenta), а -lowlight-color окрашивает идентичный фон в нейтральный серый (gray), делая результирующий снимок diff_custom.png максимально читаемым.

compare -highlight-color magenta -lowlight-color gray base.png modified.png diff_custom.png

Проверим созданные конфигурации масок и их файловые атрибуты в терминале командой ls -lh diff_fuzz.png diff_custom.png.

ls -lh diff_fuzz.png diff_custom.png

Мы подробно рассмотрели сценарии применения инструмента compare в дистрибутиве Ubuntu для обнаружения расхождений в изображениях и автоматизации контроля качества медиафайлов.
Используя разобранные опции и метрики, вы сможете без труда настроить надежные скрипты регрессионного визуального тестирования под требования вашего проекта.