compare
Exemplos de uso • Resumo das opções
Use o programa compare para anotar matematicamente e visualmente a diferença entre uma imagem e sua reconstrução. Consulte Processamento de linha de comando para orientações sobre como estruturar seu comando compare ou veja abaixo exemplos de uso do comando.
Exemplos de uso
Listamos aqui alguns exemplos do comando compare para ilustrar sua utilidade e facilidade de uso. Para começar, vamos comparar uma imagem com outra que foi nitidamente realçada:
magick rose.jpg -sharpen 0x1 reconstruct.jpg
magick compare rose.jpg reconstruct.jpg difference.png
magick compare -compose src rose.jpg reconstruct.jpg difference.png
As áreas vermelhas da imagem de diferença enfatizam (destacam) os pixels afetados pelo realce de nitidez da imagem, enquanto o branco atenua (suaviza) os pixels não tocados pelo processo de realce.
Além da interpretação visual da diferença entre uma imagem e sua reconstrução, informamos uma medida matemática da diferença:
$ magick compare -verbose -metric rmse rose.jpg reconstruct.jpg difference.png
Image: rose.jpg
Channel distortion: RMSE
red: 2833.91 (0.0432427)
green: 2401.45 (0.0366438)
blue: 2560.43 (0.0390696)
all: 2604.73 (0.0397456)
Ou, se você quiser apenas a distorção do canal vermelho, use este comando:
$ magick compare -channel red -metric PSNR rose.jpg reconstruct.jpg difference.png
27.2817 (0.227348)
Ou, se você quiser apenas a distorção geral da imagem, use este comando:
$ magick compare -metric PSNR rose.jpg reconstruct.jpg difference.png
28.0142 (0.233452)
Se a imagem reconstruída for uma subimagem da imagem, o programa compare retorna o deslocamento da melhor correspondência. Além disso, retorna uma imagem de similaridade na qual o local de correspondência exata fica completamente branco e, se nenhum dos pixels corresponder, preto; caso contrário, um nível de cinza intermediário:
$ magick compare -metric NCC -subimage-search logo.png hat.png similarity.pfm
0 (0) @ 417,44 [0]
$ magick identify -define identify:locate=maximum -define identify:limit=1 similarity.pfm
Channel maximum locations:
Gray: 65532.9 (0.999967) 417,44
O valor entre colchetes é a métrica de similaridade normalizada.
Observe que a busca de similaridade respeita o deslocamento de página virtual. Para garantir os resultados esperados, certifique-se de que o deslocamento de página da sua imagem seja +0+0.
O recurso de busca de subimagem no ImageMagick pode ser bastante lento devido à sua natureza iterativa. No entanto, se a sua versão do ImageMagick incluir suporte a FFTW (Fastest Fourier Transform in the West) e a sua métrica for DPC, MSE, NCC, RMSE, PHASE ou PSNR, você pode esperar um aumento de uma ordem de magnitude no tempo de processamento. Para uma discussão, consulte Accelerated Subimage-search Compare.
Se a opção -subimage-search não estiver habilitada, o ImageMagick realiza uma comparação direta pixel a pixel entre as duas imagens, começando pelo deslocamento de página, normalmente os cantos superiores esquerdos. Nos casos em que as imagens diferem em tamanho, a imagem menor é alinhada com a maior. As áreas extras da imagem menor são tratadas como pixels virtuais. Esses pixels virtuais podem ser processados de acordo com o método de pixel virtual escolhido, o que influencia como as regiões não correspondentes são tratadas na comparação. Consequentemente, as métricas de comparação podem ser afetadas por essas áreas adicionais, podendo impactar a avaliação geral de similaridade. Para comparar apenas os pixels autênticos, use -define compare:virtual-pixels=false.
Você pode encontrar mais exemplos de uso do compare em Examples of ImageMagick Usage.
Duas imagens são consideradas similares se a diferença entre elas, de acordo com a métrica e o valor de fuzz especificados, for 0, com exceção da métrica de correlação cruzada normalizada (NCC), na qual duas imagens são consideradas similares quando sua correlação cruzada normalizada é 1. A métrica padrão é NCC.
O programa compare retorna 2 em caso de erro, 0 se as imagens forem similares, ou um valor entre 0 e 1 se elas não forem similares.
Resumo das opções
O comando compare reconhece estas opções. Clique em uma opção para obter mais detalhes sobre como ela funciona.
| Opção | Descrição |
|---|---|
| -adjoin | une imagens em um único arquivo multi-imagem |
| -alpha | on, activate, off, deactivate, set, opaque, copy, transparent, extract, background ou shape do canal alfa |
| -authenticate value | descriptografa a imagem com esta senha |
| -auto-orient | orienta a imagem automagicamente |
| -background color | cor de fundo |
| -brightness-contrast geometry | melhora o brilho / contraste da imagem |
| -channel type | aplica a opção aos canais de imagem selecionados |
| -colorspace type | define o espaço de cor da imagem |
| -compose operator | define o operador de composição da imagem |
| -crop geometry | recorta a imagem |
| -decipher filename | converte pixels cifrados em texto simples |
| -debug events | exibe informações copiosas de depuração |
| -define format:option | define uma ou mais opções de formato de imagem |
| -density geometry | densidade horizontal e vertical da imagem |
| -depth value | profundidade da imagem |
| -dissimilarity-threshold value | distorção máxima para correspondência de (sub)imagem (padrão 0.2) |
| -distort type coefficients | distorce a imagem |
| -encipher filename | converte pixels de texto simples em pixels cifrados |
| -extract geometry | extrai uma área da imagem |
| -fuzz distance | cores dentro desta distância são consideradas iguais |
| -gravity type | posicionamento horizontal e vertical do texto |
| -help | exibe as opções do programa |
| -highlight-color color | enfatiza as diferenças de pixel com esta cor |
| -identify | identifica o formato e as características da imagem |
| -interlace type | tipo do esquema de entrelaçamento de imagem |
| -level value | ajusta o nível de contraste da imagem |
| -limit type value | limite de recurso do cache de pixels |
| -log format | formato das informações de depuração |
| -lowlight-color color | atenua as diferenças de pixel com esta cor |
| -metric type | mede as diferenças entre imagens com esta métrica. A métrica padrão é RMSE. |
| -negate | substitui cada pixel por sua cor complementar |
| -profile filename | adiciona, exclui ou aplica um perfil de imagem |
| -quality value | nível de compressão JPEG/MIFF/PNG |
| -quantize colorspace | reduz as cores da imagem neste espaço de cor |
| -quiet | suprime todas as mensagens de aviso |
| -read-mask filename | associa uma máscara de leitura à imagem |
| -regard-warnings | dá atenção às mensagens de aviso |
| -repage geometry | tamanho e localização de uma tela de imagem |
| -resize geometry | redimensiona a imagem |
| -respect-parentheses | as configurações permanecem em vigor até o limite dos parênteses |
| -rotate degrees | aplica a rotação Paeth à imagem |
| -sampling-factor geometry | fator de amostragem horizontal e vertical |
| -seed value | semeia uma nova sequência de números pseudoaleatórios |
| -separate | separa um canal de imagem em uma imagem em escala de cinza |
| -set attribute value | define um atributo da imagem |
| -sigmoidal-contrast geometry | aumenta o contraste sem saturar realces ou sombras |
| -similarity-threshold value | distorção mínima para correspondência de (sub)imagem (padrão 0.0) |
| -size geometry | largura e altura da imagem |
| -subimage-search | busca por subimagem |
| -synchronize | sincroniza a imagem com o dispositivo de armazenamento |
| -taint | marca a imagem como modificada |
| -transparent-color color | cor transparente |
| -trim | apara as bordas da imagem |
| -verbose | exibe informações detalhadas sobre a imagem |
| -version | exibe informações de versão |
| -virtual-pixel method | método de acesso para pixels fora dos limites da imagem |
| -write-mask filename | associa uma máscara de escrita à imagem |


