Guia Prático do Comando compare no Ubuntu: Diff Visual

Visão Geral

No ecossistema de administração Linux, auditar arquivos gráficos e quantificar divergências pixel a pixel direto pelo shell torna-se uma tarefa ágil com a ferramenta compare. Neste guia prático, exploramos desde a geração de mapas de discrepância (diffs visuais) até a extração de métricas analíticas e ajustes de tolerância a ruídos para esteiras de integração contínua e testes automatizados.

1. Instalação do ImageMagick e Verificação do Binário

Para iniciar os ensaios no terminal, sincronizamos os índices de repositórios do APT e realizamos o provisionamento da suíte imagemagick:

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

Integrada ao ImageMagick, a ferramenta compare avalia dois arquivos de entrada paralelamente, computando tanto variações matemáticas estruturais quanto renderizando uma nova imagem com o mapa de discrepâncias.
Podemos validar os parâmetros de compilação da ferramenta e inspecionar a versão em execução por meio da instrução compare -version.
⚙️ [Parâmetros Essenciais]

-metric : Define o algoritmo matemático de erro para calcular a divergência (como AE, RMSE ou PSNR).
-fuzz : Estabelece uma margem de tolerância percentual (por exemplo, 5%) para desconsiderar sutis variações tonais.
-highlight-color : Determina a cor de destaque aplicada sobre as coordenadas de pixels divergentes.
-lowlight-color : Configura a tonalidade de segundo plano atribuída aos segmentos coincidentes.
-compose : Seleciona a técnica de mesclagem gráfica na sobreposição dos artefatos durante a análise.

compare -version

2. Geração de Amostras de Teste e Extração do Diff Gráfico

Como base de referência analítica, recorremos ao utilitário convert para estruturar um canvas quadrado branco contendo um bloco geométrico vermelho sob o arquivo base.png:

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

Para introduzir a mutação intencional necessária aos testes comparativos, desenhamos uma figura azul centralizada sobre a imagem primária, salvando o arquivo resultante como modified.png:

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

Ao invocar o comando compare confrontando base.png com modified.png, o sistema gera o arquivo diff.png, demarcando todas as seções contrastantes. Por padrão, a ferramenta atenua as áreas idênticas conferindo-lhes semi-transparência, ao passo que as discrepâncias ganham evidência imediata em tons avermelhados:

compare base.png modified.png diff.png

Para inspecionar o sucesso na gravação dos três arquivos gráficos e conferir seus respectivos tamanhos no sistema de arquivos, executamos ls -lh base.png modified.png diff.png:

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

3. Quantificação de Erro e Discrepâncias com a Flag -metric

Quando o objetivo em pipelines de CI/CD é capturar unicamente o montante absoluto de pixels alterados sem onerar o disco com artefatos visuais, aciona-se a instrução compare -metric AE base.png modified.png null: 2>&1. O algoritmo AE (Absolute Error) totaliza a quantidade pontual de coordenadas incompatíveis, enquanto o pseudodispositivo null: direciona o processamento para descartar a geração de bitmaps, canalizando o relatório numérico diretamente pelo descritor stderr:

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

Para uma medição estatística mais refinada da dispersão e do desvio quadrático cromático, executamos compare -metric RMSE base.png modified.png null: 2>&1. A métrica RMSE (Root Mean Squared Error) produz uma escala normalizada da distorção sobre o conjunto de pixels, representando uma referência ideal para construir regras de limiar (thresholds) em validações de qualidade e regressão visual:

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

4. Calibração de Ruído (-fuzz) e Customização de Cores

Com o intuito de neutralizar artefatos de compressão e flutuações cromáticas mínimas, configuramos uma tolerância de 5% via compare -fuzz 5% base.png modified.png diff_fuzz.png. Esse modificador -fuzz desconsidera variações quase imperceptíveis ao olho humano, garantindo que o bitmap resultante diff_fuzz.png isole exclusivamente mutações estruturais relevantes:

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

Para elevar a legibilidade em relatórios técnicos, podemos personalizar o esquema de pintura de saída por meio de compare -highlight-color magenta -lowlight-color gray base.png modified.png diff_custom.png. Com as diretivas -highlight-color em magenta e -lowlight-color em tom cinza neutro (gray), criamos a imagem diff_custom.png, viabilizando um contraste cristalino entre as zonas inalteradas e as alterações introduzidas:

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

Por fim, confirmamos os metadados e o espaço ocupado em disco pelos novos arquivos customizados invocando o utilitário de listagem ls -lh diff_fuzz.png diff_custom.png:

ls -lh diff_fuzz.png diff_custom.png

Examinamos as principais abordagens para comparar imagens graficamente e extrair dados quantitativos no Ubuntu empregando o comando compare. A integração desses parâmetros avançados nos seus fluxos de trabalho permitirá estabelecer rotinas robustas de validação visual e auditoria técnica com total automação.