Voltar ao blog
27 de outubro de 2026Sergei Solod11 min de leitura

Como escolher a qualidade AVIF com SSIMULACRA2 sem otimizar cada imagem

Calibre um valor fixo de qualidade AVIF com SSIMULACRA2 e verificações visuais, em vez de codificar repetidamente cada imagem. Saiba como medir taxas de aprovação, comparar tamanhos de ficheiros e escolher um valor prático.

AVIFSSIMULACRA2Compressão de imagensSharpOtimização de imagens

Escolher um valor de qualidade para AVIF é simples quando a única preocupação é o tamanho do ficheiro. O difícil é decidir quanta degradação visível é aceitável. Um valor de qualidade de 40 não corresponde a uma pontuação de qualidade percetiva de 40, nem garante o mesmo resultado para todas as imagens. Diferentes imagens de origem podem reagir de formas muito distintas às mesmas definições do codificador.

O SSIMULACRA2 ajuda a avaliar essa diferença ao comparar uma imagem comprimida e posteriormente descodificada com uma imagem de referência. No entanto, realizar uma pesquisa exaustiva do valor de qualidade para cada imagem pode transformar um processo de conversão relativamente simples numa tarefa de codificação dispendiosa. Quando o objetivo é obter uma qualidade razoável para imagens na Web, em vez de otimizar perfeitamente cada ficheiro, existe uma abordagem mais simples: calibrar um único valor de qualidade AVIF com uma amostra representativa, examinar os resultados e utilizar esse valor no resto da coleção.

A qualidade AVIF e o SSIMULACRA2 são valores diferentes

A opção quality fornecida a um codificador AVIF é uma instrução relativa à compressão. O SSIMULACRA2 é uma medição do resultado codificado. As duas escalas não são intercambiáveis: um valor AVIF de quality: 40 não implica uma pontuação SSIMULACRA2 de 40, 60 ou qualquer outro valor fixo.

Para medir o resultado de uma codificação, é necessário descodificar a imagem e compará-la com a referência:

ssimulacra2 reference.png encoded-decoded.png

Pontuações mais elevadas no SSIMULACRA2 indicam maior semelhança percetiva. A sua documentação oficial descreve uma pontuação próxima de 50 como qualidade média e uma próxima de 70 como qualidade alta. Um limiar de 60 pode ser um objetivo prático útil, mas representa uma escolha de critérios de qualidade, não uma definição universal de imagem aceitável. É sempre aconselhável examinar resultados representativos no tamanho em que serão efetivamente apresentados.

Porque é que a otimização exaustiva de cada imagem se torna dispendiosa

Um otimizador rigoroso pode codificar repetidamente uma imagem com diferentes valores de qualidade, medir cada resultado candidato com o SSIMULACRA2 e conservar o menor ficheiro que cumpra os critérios. Esta abordagem permite muitas vezes uma compressão mais eficiente, porque uma imagem fácil de comprimir pode atingir o limiar com uma qualidade baixa, enquanto uma imagem mais difícil precisa de um valor superior.

A desvantagem é o número de codificações. Se existirem N imagens e cada uma necessitar de K codificações candidatas para encontrar um valor aceitável, o trabalho será da ordem de N × K codificações, além da descodificação e do cálculo das pontuações. Na prática, a codificação AVIF com um nível de esforço elevado pode representar a maior parte do custo computacional; o cálculo da própria métrica SSIMULACRA2 não é necessariamente a parte mais dispendiosa.

Escolher um valor de qualidade por pasta reduz o trabalho de pesquisa, mas continua a exigir a seleção de amostras, a realização de medições e a manutenção de configurações separadas para diferentes grupos. Em coleções com requisitos de apresentação uniformes e alguma tolerância a casos excecionais, essa complexidade adicional pode não compensar.

EstratégiaTrabalho de calibraçãoPrincipal vantagem e desvantagem
Qualidade adaptativa por imagemVárias codificações candidatas por imagemControlo detalhado, com o maior custo de calibração
Qualidade adaptativa por grupoVárias codificações candidatas para a amostra de cada grupoMenos trabalho, mas mais configuração e resultados dependentes de cada grupo
Um único valor de qualidade fixoCodificações candidatas numa amostra de calibração limitadaBaixa complexidade operacional, mas admite imagens com compressão excessiva ou insuficiente

A diferença importante: pontuação média ou taxa de aprovação

Antes de escolher um valor de qualidade, é necessário definir o que significa um resultado «suficientemente bom». Dois objetivos aparentemente semelhantes produzem configurações do codificador muito diferentes:

  • Objetivo de pontuação média: a média do SSIMULACRA2 na amostra deve situar-se aproximadamente em 60.
  • Objetivo de taxa de aprovação: aproximadamente 90% das imagens devem obter SSIMULACRA2 ≥ 60, enquanto as restantes podem ficar abaixo desse valor.

Estes objetivos não são equivalentes. Ao calcular a média, uma pontuação elevada numa imagem simples pode compensar uma pontuação baixa numa imagem difícil. Por exemplo, se metade das imagens obtiver 75 e a outra metade obtiver 55, a média será 65, embora apenas metade atinja o limiar de 60.

Num processo geral de tratamento de imagens para a Web, em que a maioria das imagens deve ter um aspeto aceitável e se tolera uma minoria de resultados insatisfatórios, o objetivo baseado na taxa de aprovação costuma ser mais útil. É necessário medir:

pass_rate = count(scores >= 60) / count(all_scores)

Também é importante registar a distribuição dos resultados que ficam abaixo do limiar e examinar as imagens com pior aspeto. Uma amostra em que 9% das imagens obtêm uma pontuação de 59 é substancialmente diferente de outra em que 9% obtêm 30, apesar de ambas apresentarem a mesma taxa de aprovação.

O que revelou um exercício real de calibração

Numa calibração exploratória de AVIF, um procedimento adaptativo selecionou diferentes valores de qualidade para diferentes grupos de imagens, aproximadamente entre 35 e 45. Este resultado era esperado: alguns grupos continham imagens que ultrapassavam rapidamente o limiar escolhido de SSIMULACRA2, enquanto algumas amostras difíceis exigiam valores de qualidade do codificador consideravelmente mais elevados.

No entanto, a regra adaptativa era mais rigorosa do que os requisitos reais de apresentação. Procurava fazer com que praticamente todas as imagens testadas de cada grupo atingissem o limiar, permitindo apenas um caso excecional muito limitado. Isto protege as imagens difíceis, mas também pode elevar a qualidade de todo um grupo devido a uma única amostra excecional.

Ao reexaminar as medições segundo um objetivo diferente — aproximadamente nove em cada dez imagens com uma pontuação SSIMULACRA2 igual ou superior a 60 —, um único valor de qualidade AVIF próximo de 39–40 pareceu uma solução de compromisso plausível. Nessa comparação, 39 favorecia ficheiros menores, enquanto 40 proporcionava uma maior margem para imagens próximas do limiar. Estes valores resultaram dos dados de calibração e de uma análise posterior; não tinha sido realizada uma conversão completa com qualidade fixa nem uma validação independente de toda a coleção. A vantagem exata de utilizar 39 em vez de 40 em termos de tamanho dos ficheiros também não tinha sido determinada.

A conclusão não é que uma qualidade AVIF de 39 ou 40 funcione em todas as situações. É que um valor fixo pode ser razoável quando corresponde a uma distribuição de qualidade escolhida explicitamente. Um codificador diferente, uma composição diferente das imagens, outro processo de tratamento de cor ou um limiar percetivo distinto podem levar a uma resposta diferente.

Como calibrar a qualidade AVIF uma única vez

  1. Escolher a taxa de incumprimento aceitável. Por exemplo, exigir que aproximadamente 90% das imagens atinjam SSIMULACRA2 ≥ 60. É necessário decidir se este é um objetivo flexível ou um requisito rigoroso para disponibilizar os resultados.
  2. Construir uma amostra verdadeiramente representativa. Incluir diferentes dimensões, formatos de origem, gradientes, contornos bem definidos, texturas e imagens com poucos detalhes. Selecionar ficheiros aleatoriamente da carga de trabalho real e utilizar amostragem estratificada se, de outra forma, alguma categoria ficar excluída. Selecionar ficheiros apenas com base nos bytes comprimidos por píxel é uma heurística útil para abranger diferentes intervalos, mas não garante representatividade percetiva.
  3. Testar um intervalo pequeno de valores de qualidade. Começar com alguns candidatos próximos de um valor que ofereça um aspeto visual aceitável, em vez de percorrer toda a escala de qualidade. Por exemplo, testar valores próximos, como 38, 39, 40 e 42, nas mesmas imagens.
  4. Manter o processo de codificação idêntico. Conservar constantes a resolução, a orientação, a conversão de cor, a implementação do codificador, o nível de esforço, a subamostragem de crominância, a profundidade de bits e o pré-processamento. Se for aplicada uma marca de água, a imagem de referência deve incluir a mesma marca e as mesmas transformações antes de ser comparada com o resultado comprimido.
  5. Registar a pontuação e o tamanho em conjunto. Para cada candidato, calcular a proporção de imagens que atinge pelo menos 60, a distribuição das pontuações abaixo do limiar e o total de bytes codificados para a mesma amostra. Não se deve deduzir a poupança de largura de banda apenas a partir do valor de qualidade.
  6. Examinar os resultados que não atingem o limiar. Observar rostos, texto, linhas finas, gradientes e outros detalhes importantes para a apresentação pretendida. Verificar as imagens em tamanhos de visualização realistas, e não apenas através de comparações muito ampliadas.
  7. Escolher o menor valor de qualidade satisfatório e depois validá-lo. Testar o candidato numa amostra aleatória independente que não tenha influenciado a escolha. Se não atingir o objetivo de 90% tiver consequências importantes, é aconselhável deixar uma margem de segurança e considerar seriamente a incerteza da amostragem. Se forem aceitáveis falhas ocasionais, um valor mais agressivo pode ser razoável.

Calibrar uma única vez não significa ignorar alterações futuras. É aconselhável repetir uma verificação com uma amostra pequena quando mudarem os tipos de imagens de origem, as suas dimensões, a versão do codificador, as transformações aplicadas na distribuição ou os requisitos visuais.

Uma comparação mínima com Sharp e SSIMULACRA2

Este exemplo simplificado utiliza o codificador AVIF do Sharp para gerar dois resultados candidatos a partir da mesma imagem de entrada. É um exemplo ilustrativo de calibração, não uma afirmação de que todos os projetos devam utilizar estas opções do codificador ou estes valores de qualidade. Deve ser executado como módulo ES depois de instalar sharp.

import sharp from 'sharp';

const source = 'sample.png';
const encoding = {
 effort: 9,
 chromaSubsampling: '4:4:4',
 bitdepth: 8,
 tune: 'iq',
 lossless: false
};

// Use the same orientation and color conversion in both paths.
await sharp(source)
 .rotate()
 .toColourspace('srgb')
 .png()
 .toFile('reference.png');

for (const quality of [39, 40]) {
 const encoded = `candidate-q${quality}.avif`;
 await sharp(source)
 .rotate()
 .toColourspace('srgb')
 .avif({ ...encoding, quality })
 .toFile(encoded);

 await sharp(encoded)
 .png()
 .toFile(`candidate-q${quality}.png`);
}

Em seguida, é necessário comparar os ficheiros candidatos descodificados com a referência preparada:

ssimulacra2 reference.png candidate-q39.png
ssimulacra2 reference.png candidate-q40.png

Num teste real, este processo deve ser automatizado para todas as imagens da amostra, recolhendo a pontuação e o tamanho do ficheiro de cada candidato. Se o processo de produção redimensionar, recortar, sobrepor elementos ou transformar as imagens de qualquer outra forma, as mesmas operações devem ser aplicadas à referência utilizada na comparação. Caso contrário, o SSIMULACRA2 medirá parcialmente os efeitos dessas transformações, em vez de medir apenas a perda provocada pela compressão.

Depois de escolhido um valor de qualidade global, a codificação em produção passa a ser uma conversão AVIF normal de uma única passagem. Deixa de ser necessário pesquisar um valor de qualidade para cada imagem ou pasta. Isto elimina as codificações experimentais repetidas, mas não o custo da codificação individual que continua a ser necessária para cada imagem de saída.

Quando um único valor de qualidade AVIF não é a escolha certa

Uma configuração fixa implica aceitar vantagens e desvantagens, não encontrar um valor ótimo universal. A codificação adaptativa continua a ser útil quando existem requisitos contratuais de qualidade mínima para cada imagem, as falhas visuais são inaceitáveis, as fontes variam drasticamente ou a otimização de cada byte justifica o maior custo computacional e a complexidade adicional de implementação.

É necessário ter especial cuidado ao combinar diferentes tipos de imagens. Fotografias, gráficos com áreas de cor uniforme, texto pequeno e imagens anteriormente comprimidas não respondem necessariamente da mesma forma. Se uma categoria falhar repetidamente os critérios de aceitação, utilizar um pequeno número de perfis específicos por formato ou tipo de conteúdo pode ser mais eficiente do que qualquer um dos dois extremos: um único valor universal ou a otimização completa de cada imagem.

Também é importante distinguir a velocidade de codificação da velocidade de calibração. Utilizar um único valor de qualidade evita experiências repetidas, mas codificar todas as imagens com um valor de effort muito elevado pode continuar a ser computacionalmente dispendioso. Um perfil de codificação com menor esforço é outra otimização válida, desde que seja feita uma nova calibração: a relação entre o valor de qualidade e a pontuação pode mudar conforme as opções do codificador.

A regra prática

Utilize o SSIMULACRA2 como um instrumento de calibração, não necessariamente como uma etapa obrigatória de produção para cada imagem. Escolha um objetivo de qualidade que reflita a forma como as imagens serão realmente visualizadas, codifique uma amostra representativa com alguns valores próximos, compare tanto as pontuações percetivas como o número de bytes, examine os resultados insatisfatórios e estabeleça o menor valor que cumpra os critérios de tolerância.

Numa calibração exploratória, uma qualidade AVIF próxima de 39–40 pareceu um ponto razoável para terminar a pesquisa. Foi uma decisão tomada com um limiar e uma tolerância específicos, não uma configuração universal nem um resultado de referência confirmado para toda a coleção. A conclusão que pode ser aplicada de forma mais ampla é simples: quando o tempo e os recursos computacionais são limitados, um valor de qualidade fixo e cuidadosamente validado costuma ser mais prático do que otimizar indefinidamente cada imagem individualmente.