Elegir un valor de calidad para AVIF es sencillo si lo único que importa es el tamaño del archivo. Lo difícil es decidir cuánta degradación visible resulta aceptable. Un valor de calidad de 40 no equivale a una puntuación de calidad perceptual de 40, ni garantiza el mismo resultado para todas las imágenes. Distintas imágenes de origen pueden responder de manera muy diferente a una misma configuración del codificador.
SSIMULACRA2 ayuda a evaluar esa diferencia comparando una imagen comprimida y posteriormente decodificada con una imagen de referencia. Sin embargo, realizar una búsqueda exhaustiva del valor de calidad para cada imagen puede convertir un proceso de conversión relativamente sencillo en una tarea de codificación costosa. Cuando el objetivo es obtener una calidad razonable para imágenes web, en lugar de optimizar perfectamente cada archivo, existe un método más simple: calibrar un único valor de calidad AVIF con una muestra representativa, inspeccionar los resultados y utilizar ese valor para el resto de la colección.
La calidad de AVIF y SSIMULACRA2 son valores diferentes
La opción quality que se pasa a un codificador AVIF es una instrucción sobre la compresión. SSIMULACRA2 es una medición del resultado codificado. Sus escalas no son intercambiables: un valor AVIF de quality: 40 no implica una puntuación SSIMULACRA2 de 40, 60 ni ningún otro valor fijo.
Para medir el resultado de una codificación, hay que decodificar la imagen y compararla con la referencia:
ssimulacra2 reference.png encoded-decoded.png
Las puntuaciones más altas de SSIMULACRA2 indican una mayor similitud perceptual. Su documentación oficial describe una puntuación cercana a 50 como calidad media y una cercana a 70 como calidad alta. Un umbral de 60 puede ser un objetivo práctico útil, pero es una decisión sobre los criterios de calidad, no una definición universal de lo que constituye una imagen aceptable. Siempre conviene inspeccionar resultados representativos al tamaño real en el que se mostrarán.
Por qué la optimización exhaustiva de cada imagen resulta costosa
Un optimizador estricto puede codificar repetidamente una imagen con distintos valores de calidad, medir cada resultado candidato mediante SSIMULACRA2 y conservar el archivo más pequeño que cumpla los criterios. Esto suele permitir una compresión más eficiente, porque una imagen fácil de comprimir puede superar el umbral con una calidad baja, mientras que otra más difícil necesita un valor superior.
La desventaja es la cantidad de codificaciones. Si hay N imágenes y cada una necesita K codificaciones candidatas para encontrar un valor aceptable, el trabajo será del orden de N × K codificaciones, además de la decodificación y la evaluación de las puntuaciones. En la práctica, la codificación AVIF con un nivel de esfuerzo elevado puede dominar el coste computacional; calcular la propia métrica SSIMULACRA2 no es necesariamente la parte más costosa.
Elegir un valor de calidad por carpeta reduce el trabajo de búsqueda, pero sigue siendo necesario seleccionar muestras, realizar mediciones y mantener configuraciones independientes para distintos grupos. En colecciones con requisitos de presentación uniformes y cierta tolerancia a los casos excepcionales, esa complejidad adicional puede no compensar.
| Estrategia | Trabajo de calibración | Principal ventaja y desventaja |
|---|---|---|
| Calidad adaptativa por imagen | Varias codificaciones candidatas por imagen | Control detallado, con el mayor coste de calibración |
| Calidad adaptativa por grupo | Varias codificaciones candidatas para la muestra de cada grupo | Menos trabajo, pero más configuración y resultados dependientes de cada grupo |
| Un único valor de calidad fijo | Codificaciones candidatas sobre una muestra de calibración limitada | Poca complejidad operativa, pero admite imágenes con compresión excesiva o insuficiente |
La diferencia importante: puntuación media frente a tasa de cumplimiento
Antes de elegir un valor de calidad, hay que definir qué significa que el resultado sea «suficientemente bueno». Dos objetivos aparentemente similares producen configuraciones del codificador muy diferentes:
- Objetivo de puntuación media: la media de SSIMULACRA2 en la muestra debe situarse aproximadamente en 60.
- Objetivo de tasa de cumplimiento: aproximadamente el 90% de las imágenes debe alcanzar SSIMULACRA2 ≥ 60, mientras que las restantes pueden quedar por debajo.
No son objetivos equivalentes. Al calcular la media, una puntuación alta en una imagen sencilla puede compensar una puntuación baja en una imagen difícil. Por ejemplo, si la mitad de las imágenes obtiene 75 y la otra mitad obtiene 55, la media será 65, aunque solo la mitad cumpla el umbral de 60.
Para un flujo de trabajo general de imágenes web, donde la mayoría debería tener una apariencia aceptable y se tolera una minoría de resultados deficientes, el objetivo basado en la tasa de cumplimiento suele ser más útil. Hay que medir:
pass_rate = count(scores >= 60) / count(all_scores)
También conviene registrar la distribución de los resultados que no cumplen el umbral e inspeccionar las imágenes con peor apariencia. Una muestra en la que el 9% obtiene una puntuación de 59 es sustancialmente diferente de otra en la que el 9% obtiene 30, aunque ambas tengan la misma tasa de cumplimiento.
Qué mostró un ejercicio real de calibración
En una calibración exploratoria de AVIF, un procedimiento adaptativo seleccionó diferentes valores de calidad para distintos grupos de imágenes, desde aproximadamente 35 hasta 45. Era un resultado esperado: algunos grupos contenían imágenes que superaban pronto el umbral elegido de SSIMULACRA2, mientras que unas pocas muestras difíciles necesitaban valores de calidad del codificador considerablemente superiores.
Sin embargo, la regla adaptativa era más estricta que los requisitos reales de presentación. Intentaba conseguir que prácticamente todas las imágenes evaluadas de cada grupo superaran el umbral, permitiendo únicamente un caso excepcional muy limitado. Esto protege las imágenes difíciles, pero también puede elevar la calidad de todo un grupo por una sola muestra excepcional.
Al volver a examinar las mediciones con un objetivo diferente —aproximadamente nueve de cada diez imágenes con una puntuación SSIMULACRA2 de 60 o superior—, un único valor de calidad AVIF cercano a 39–40 parecía una solución de compromiso plausible. En esa comparación, 39 favorecía archivos más pequeños, mientras que 40 ofrecía un mayor margen para las imágenes próximas al umbral. Estos valores se obtuvieron a partir de los datos de calibración y un análisis posterior; no se había realizado una conversión completa con calidad fija ni una validación independiente de toda la colección. Tampoco se había determinado el beneficio exacto en tamaño de archivo de utilizar 39 en lugar de 40.
La conclusión no es que una calidad AVIF de 39 o 40 funcione en cualquier situación. Es que un valor fijo puede ser razonable cuando se ajusta a una distribución de calidad elegida explícitamente. Otro codificador, una composición diferente de imágenes, otro proceso de tratamiento del color o un umbral perceptual distinto pueden llevar a una conclusión diferente.
Cómo calibrar una sola vez la calidad AVIF
- Elegir la tasa de incumplimiento aceptable. Por ejemplo, exigir que aproximadamente el 90% de las imágenes alcance SSIMULACRA2 ≥ 60. Hay que decidir si se trata de un objetivo flexible o de un requisito estricto para publicar los resultados.
- Construir una muestra verdaderamente representativa. Incluir distintas dimensiones, formatos de origen, degradados, bordes definidos, texturas e imágenes con pocos detalles. Seleccionar archivos aleatoriamente de la carga de trabajo real y utilizar un muestreo estratificado si, de otro modo, alguna categoría quedaría fuera. Seleccionar archivos únicamente según los bytes comprimidos por píxel es una heurística útil para cubrir distintos rangos, pero no garantiza la representatividad perceptual.
- Probar un intervalo pequeño de valores de calidad. Empezar con unos pocos candidatos próximos a un valor que ofrezca una apariencia visual aceptable, en lugar de recorrer toda la escala de calidad. Por ejemplo, probar valores cercanos como 38, 39, 40 y 42 sobre las mismas imágenes.
- Mantener idéntico el proceso de codificación. Conservar constantes la resolución, la orientación, la conversión de color, la implementación del codificador, el nivel de esfuerzo, el submuestreo de crominancia, la profundidad de bits y el preprocesamiento. Si se aplica una marca de agua, la imagen de referencia debe incluir esa misma marca y las mismas transformaciones antes de compararla con el resultado comprimido.
- Registrar conjuntamente la puntuación y el tamaño. Para cada candidato, calcular la proporción de imágenes que alcanza al menos 60, la distribución de las puntuaciones inferiores al umbral y el total de bytes codificados para la misma muestra. No se debe deducir el ahorro de ancho de banda únicamente a partir del valor de calidad.
- Inspeccionar los resultados que no cumplen el umbral. Examinar rostros, texto, líneas finas, degradados y otros detalles importantes para la presentación prevista. Comprobar las imágenes a tamaños de visualización realistas, no solo mediante comparaciones con mucho aumento.
- Elegir el valor de calidad más bajo que resulte satisfactorio y después validarlo. Probar el candidato con una muestra aleatoria independiente que no haya influido en la elección. Si no alcanzar el objetivo del 90% tendría consecuencias importantes, conviene dejar un margen de seguridad y tomar en serio la incertidumbre del muestreo. Si se aceptan fallos ocasionales, puede ser razonable elegir un valor más agresivo.
Calibrar una sola vez no significa ignorar los cambios futuros. Conviene repetir una comprobación con una muestra pequeña cuando cambien los tipos de imágenes de origen, sus dimensiones, la versión del codificador, las transformaciones aplicadas para su distribución o los requisitos visuales.
Una comparación mínima con Sharp y SSIMULACRA2
Este ejemplo simplificado utiliza el codificador AVIF de Sharp para generar dos resultados candidatos a partir de una misma imagen de entrada. Es un ejemplo ilustrativo de calibración, no una afirmación de que todos los proyectos deban utilizar estas opciones del codificador o estos valores de calidad. Hay que ejecutarlo como módulo ES después 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`);
}
Después, hay que comparar los archivos candidatos decodificados con la referencia preparada:
ssimulacra2 reference.png candidate-q39.png
ssimulacra2 reference.png candidate-q40.png
En una prueba real, este proceso debe automatizarse para todas las imágenes de la muestra, recopilando la puntuación y el tamaño de archivo de cada candidato. Si el proceso de producción cambia el tamaño, recorta, superpone elementos o transforma las imágenes de cualquier otra forma, hay que aplicar las mismas operaciones a la referencia utilizada en la comparación. De lo contrario, SSIMULACRA2 medirá parcialmente los efectos de esas transformaciones en lugar de limitarse a la pérdida causada por la compresión.
Una vez seleccionado un valor de calidad global, la codificación en producción se convierte en una conversión AVIF normal de una sola pasada. Ya no es necesario buscar un valor de calidad para cada imagen o carpeta. Esto elimina las codificaciones de prueba repetidas, pero no el coste de la codificación individual que sigue necesitando cada imagen de salida.
Cuándo un único valor de calidad AVIF no es la opción adecuada
Una configuración fija supone aceptar ventajas y desventajas, no encontrar un óptimo universal. La codificación adaptativa sigue siendo útil cuando existen requisitos contractuales de calidad mínima para cada imagen, los defectos visuales son inaceptables, las fuentes varían enormemente o la optimización de cada byte justifica el mayor coste computacional y la complejidad adicional de implementación.
Hay que tener especial cuidado al combinar diferentes tipos de imágenes. Las fotografías, los gráficos planos, el texto pequeño y las imágenes comprimidas previamente no necesariamente responden de la misma manera. Si una categoría incumple repetidamente los criterios de aceptación, utilizar un pequeño número de perfiles específicos por formato o tipo de contenido puede resultar más eficiente que cualquiera de los dos extremos: un único valor universal o una optimización completa de cada imagen.
También hay que distinguir la velocidad de codificación de la velocidad de calibración. Utilizar un único valor de calidad evita experimentos repetidos, pero codificar todas las imágenes con un valor de effort muy elevado puede seguir siendo costoso en términos computacionales. Un perfil de codificación con menor esfuerzo es otra optimización válida, siempre que se vuelva a calibrar: la relación entre el valor de calidad y la puntuación puede cambiar con las opciones del codificador.
La regla práctica
Utiliza SSIMULACRA2 como un instrumento de calibración, no necesariamente como un paso obligatorio de producción para cada imagen. Elige un objetivo de calidad que refleje cómo se verán realmente las imágenes, codifica una muestra representativa con unos pocos valores cercanos, compara tanto las puntuaciones perceptuales como los bytes, inspecciona los resultados deficientes y establece el valor más bajo que cumpla los criterios de tolerancia.
En una calibración exploratoria, una calidad AVIF cercana a 39–40 parecía un punto razonable para detener la búsqueda. Fue una decisión tomada bajo un umbral y una tolerancia específicos, no una configuración universal ni un resultado de referencia confirmado para toda la colección. La enseñanza aplicable de forma general es más sencilla: cuando el tiempo y los recursos computacionales son limitados, un valor de calidad fijo y cuidadosamente validado suele ser más práctico que optimizar indefinidamente cada imagen por separado.