Scegliere un'impostazione di qualità AVIF è semplice se l'unica preoccupazione è la dimensione dei file. La parte difficile è stabilire quanta perdita di qualità visibile sia accettabile. Un valore di qualità pari a 40 non corrisponde a un punteggio di qualità percettiva pari a 40, né garantisce lo stesso risultato per ogni immagine. Sorgenti diverse possono reagire in modo molto differente alle stesse impostazioni dell'encoder.
SSIMULACRA2 aiuta a colmare questa distanza confrontando un'immagine compressa e poi decodificata con un riferimento. Ma cercare in modo esaustivo il valore di qualità ottimale per ogni immagine può trasformare una semplice pipeline di conversione in un processo di codifica oneroso. Quando l'obiettivo è ottenere una qualità ragionevole per le immagini sul web, anziché ottimizzare perfettamente ogni singolo file, esiste un approccio più semplice: calibrare un unico valore di qualità AVIF su un campione rappresentativo, esaminare i risultati e usare quel valore per il resto della raccolta.
La qualità AVIF e SSIMULACRA2 sono due valori diversi
L'opzione quality passata a un encoder AVIF è un'istruzione relativa alla compressione. SSIMULACRA2 è una misurazione del risultato codificato. Le rispettive scale non sono intercambiabili: AVIF quality: 40 non implica un punteggio SSIMULACRA2 pari a 40, a 60 o a qualsiasi altro valore fisso.
Per misurare la qualità di una codifica, decodifica l'immagine e confrontala con il riferimento:
ssimulacra2 reference.png encoded-decoded.png
Punteggi SSIMULACRA2 più alti indicano una maggiore somiglianza percettiva. La sua documentazione ufficiale descrive un punteggio intorno a 50 come qualità media e uno intorno a 70 come qualità alta. Una soglia di 60 può essere un obiettivo pragmatico utile, ma è una scelta di criterio, non una definizione universale di immagine accettabile. Controlla sempre risultati rappresentativi alle effettive dimensioni di visualizzazione.
Perché l'ottimizzazione esaustiva per singola immagine è costosa
Un ottimizzatore rigoroso può codificare più volte un'immagine con valori di qualità diversi, misurare ogni variante con SSIMULACRA2 e conservare il file più piccolo che soddisfa il criterio. Questo approccio permette spesso di ottenere una compressione più efficiente, perché un'immagine facile può superare la soglia con una qualità bassa, mentre una più difficile richiede un valore maggiore.
Lo svantaggio è il numero di codifiche. Se ci sono N immagini e ciascuna richiede K codifiche candidate per trovare un'impostazione accettabile, si arriva nell'ordine di N × K codifiche, oltre alle operazioni di decodifica e valutazione. Nella pratica, la codifica AVIF con un livello di sforzo elevato può rappresentare la parte principale del costo; il calcolo della metrica SSIMULACRA2 non è necessariamente l'operazione più onerosa.
Scegliere una qualità per cartella riduce il lavoro di ricerca, ma richiede comunque campionamento, misurazioni e gestione di impostazioni separate per i vari gruppi. Per raccolte con requisiti di distribuzione uniformi e una certa tolleranza per i casi anomali, la complessità aggiuntiva potrebbe non valerne la pena.
| Strategia | Lavoro di calibrazione | Compromesso principale |
|---|---|---|
| Qualità adattiva per immagine | Più codifiche candidate per ogni immagine | Controllo granulare, massimo costo di calibrazione |
| Qualità adattiva per gruppo | Più codifiche candidate per il campione di ciascun gruppo | Meno lavoro, ma più configurazioni e risultati dipendenti dal gruppo |
| Un'unica qualità fissa | Codifiche candidate su un campione di calibrazione limitato | Bassa complessità operativa, accettando immagini a volte compresse troppo o troppo poco |
La distinzione fondamentale: punteggio medio o percentuale di superamento
Prima di scegliere un valore di qualità, definisci cosa significa «sufficientemente buono». Due obiettivi che a prima vista sembrano simili portano a impostazioni dell'encoder molto diverse:
- Obiettivo sul punteggio medio: la media dei punteggi SSIMULACRA2 del campione dovrebbe essere circa 60.
- Obiettivo sulla percentuale di superamento: circa il 90% delle immagini dovrebbe ottenere SSIMULACRA2 ≥ 60, mentre le restanti possono rimanere sotto la soglia.
Non sono obiettivi equivalenti. Nel calcolo della media, il punteggio alto di un'immagine semplice può compensare il risultato scarso di una difficile. Per esempio, se metà delle immagini ottiene 75 e l'altra metà 55, la media è 65, ma solo metà raggiunge la soglia di 60.
Per un utilizzo generico delle immagini sul web, in cui la maggioranza dovrebbe avere un aspetto accettabile e una minoranza di risultati insufficienti è tollerabile, la percentuale di superamento è spesso più utile. Calcola:
pass_rate = count(scores >= 60) / count(all_scores)
Registra anche la distribuzione dei risultati insufficienti e osserva le immagini che appaiono peggiori. Un campione in cui il 9% ottiene 59 è sostanzialmente diverso da uno in cui il 9% ottiene 30, anche se entrambi hanno la stessa percentuale di superamento.
Che cosa ha mostrato una calibrazione reale
In una calibrazione esplorativa di AVIF, una procedura adattiva ha selezionato valori di qualità diversi per gruppi di immagini differenti, approssimativamente dalla metà della fascia dei 30 alla metà di quella dei 40. Era prevedibile: alcuni gruppi comprendevano immagini che superavano presto la soglia SSIMULACRA2 scelta, mentre alcuni campioni difficili richiedevano valori di qualità dell'encoder sensibilmente più alti.
Tuttavia, la regola adattiva era più rigorosa dei requisiti effettivi di distribuzione. Cercava di far superare la soglia a quasi tutte le immagini testate in ciascun gruppo, ammettendo soltanto un numero estremamente limitato di eccezioni. Questo tutela le immagini difficili, ma può anche portare a impostare una qualità più alta per un intero gruppo a causa di un unico campione eccezionale.
Riesaminando le misurazioni rispetto a un obiettivo diverso — circa nove immagini su dieci con un punteggio SSIMULACRA2 pari almeno a 60 —, un unico valore di qualità AVIF intorno a 39–40 è risultato un compromesso plausibile. In quel confronto, 39 favoriva file più piccoli, mentre 40 offriva più margine alle immagini vicine alla soglia. Quei valori derivavano dai dati di calibrazione e da un'analisi successiva; una conversione completa a qualità fissa e una validazione indipendente sull'intero corpus non erano state effettuate. Il vantaggio esatto in termini di dimensione dei file passando da 40 a 39 non era stato determinato.
La conclusione non è che la qualità AVIF 39 o 40 vada bene ovunque. È che un'impostazione fissa può essere ragionevole quando corrisponde a una distribuzione di qualità scelta esplicitamente. Un encoder diverso, un diverso insieme di immagini, una diversa pipeline di gestione del colore o una diversa soglia percettiva possono portare a una risposta differente.
Come calibrare la qualità AVIF una sola volta
- Scegli una percentuale di risultati insufficienti accettabile. Per esempio, richiedi che circa il 90% delle immagini raggiunga SSIMULACRA2 ≥ 60. Stabilisci se si tratta di un obiettivo flessibile o di un requisito rigoroso per il rilascio.
- Costruisci un campione davvero rappresentativo. Includi dimensioni e formati sorgente diversi, sfumature, bordi netti, texture e immagini con pochi dettagli. Estrai un campione casuale dal carico di lavoro reale e usa un campionamento stratificato se altrimenti qualche categoria rischia di mancare. Selezionare i file soltanto in base ai byte compressi per pixel è un'euristica utile per coprire casi diversi, non una garanzia di rappresentatività percettiva.
- Prova un intervallo ristretto di valori di qualità. Parti da qualche candidato vicino a un'impostazione visivamente accettabile, invece di esplorare l'intera scala. Per esempio, prova valori vicini come 38, 39, 40 e 42 sulle stesse immagini.
- Mantieni identica la pipeline di codifica. Tieni costanti risoluzione, orientamento, conversione del colore, implementazione dell'encoder, sforzo di codifica, sottocampionamento della crominanza, profondità in bit e pre-elaborazione. Se applichi una filigrana, l'immagine di riferimento deve includere la stessa filigrana e le stesse trasformazioni prima del confronto con il risultato compresso.
- Registra insieme punteggio e dimensione. Per ciascun valore candidato calcola la quota di immagini che raggiunge almeno 60, la distribuzione dei punteggi sotto soglia e il totale dei byte codificati sullo stesso campione. Non dedurre il risparmio di banda dal solo valore di qualità.
- Esamina i risultati insufficienti. Controlla volti, testo, linee sottili, sfumature e altri dettagli importanti per la visualizzazione prevista. Valuta le immagini a dimensioni di visualizzazione realistiche, non soltanto con confronti ingranditi.
- Scegli il valore soddisfacente più basso e poi convalidalo. Prova il candidato su un campione casuale separato, che non abbia influenzato la scelta. Se mancare l'obiettivo del 90% sarebbe costoso, mantieni un margine di sicurezza e considera seriamente l'incertezza dovuta al campionamento. Se qualche risultato insufficiente è accettabile, può essere ragionevole un valore più aggressivo.
Calibrare una sola volta non significa ignorare i cambiamenti futuri. Ripeti una piccola verifica su un campione quando cambiano la composizione delle sorgenti, le dimensioni delle immagini, la versione dell'encoder, le trasformazioni usate per la distribuzione o i requisiti visivi.
Un confronto minimo con Sharp e SSIMULACRA2
Questo esempio semplificato usa l'encoder AVIF di Sharp per generare due candidati a partire dallo stesso file. È uno snippet illustrativo per la calibrazione, non un'affermazione secondo cui ogni progetto debba usare queste opzioni dell'encoder o questi valori di qualità. Eseguilo come modulo ES dopo aver installato 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`);
}
Poi confronta i candidati decodificati con il riferimento preparato:
ssimulacra2 reference.png candidate-q39.png
ssimulacra2 reference.png candidate-q40.png
Per un test reale, automatizza la procedura sulle immagini campionate e raccogli punteggio e dimensione del file per ogni candidato. Se la pipeline di produzione ridimensiona, ritaglia, sovrappone elementi o trasforma in altro modo le immagini, applica le stesse operazioni al riferimento usato per il confronto. Altrimenti SSIMULACRA2 misurerà in parte la trasformazione anziché la perdita dovuta alla compressione.
Una volta scelta una qualità globale, la codifica in produzione diventa una normale conversione AVIF in un singolo passaggio. Non serve più cercare il valore di qualità per ogni immagine o cartella. Questo elimina le codifiche di prova ripetute, ma non il costo dell'unica codifica che resta necessaria per ogni immagine prodotta.
Quando un'unica qualità AVIF non è la scelta giusta
Un'impostazione fissa è un compromesso, non un optimum universale. La codifica adattiva resta utile quando soglie minime di qualità per singola immagine sono previste contrattualmente, i difetti visivi sono inaccettabili, le sorgenti variano enormemente oppure ottimizzare ogni byte giustifica i calcoli aggiuntivi e la maggiore complessità di implementazione.
Fai particolare attenzione alle raccolte che mescolano tipi diversi di immagini. Fotografie, grafica con campiture piatte, testo sottile e sorgenti già compresse non reagiscono necessariamente allo stesso modo. Se una categoria non supera ripetutamente il test di accettazione, un numero limitato di profili specifici per formato o contenuto può essere più efficiente di entrambe le soluzioni estreme: un'unica qualità universale oppure l'ottimizzazione completa di ogni immagine.
Distingui anche la velocità dell'encoder dalla velocità di calibrazione. Usare un'unica qualità evita esperimenti ripetuti, ma codificare tutte le immagini con un valore di effort molto alto può comunque richiedere molte risorse di calcolo. Un profilo dell'encoder con sforzo minore è un'altra ottimizzazione valida, purché si ripeta la calibrazione: il rapporto tra impostazione di qualità e punteggio può cambiare al variare delle opzioni dell'encoder.
La regola pratica
Usa SSIMULACRA2 come strumento di calibrazione, non necessariamente come passaggio obbligatorio in produzione per ogni immagine. Scegli un obiettivo di qualità che rifletta il modo in cui le immagini verranno effettivamente visualizzate, codifica un campione rappresentativo con pochi valori vicini, confronta sia i punteggi percettivi sia i byte, esamina i risultati insufficienti e fissa il valore più basso che soddisfa la tolleranza scelta.
In una calibrazione esplorativa, una qualità AVIF intorno a 39–40 sembrava un punto d'arrivo ragionevole. Era una decisione presa con una soglia e una tolleranza specifiche, non un'impostazione universale né un benchmark confermato sull'intero corpus. La lezione più generale è semplice: quando tempo e risorse di calcolo sono limitati, una qualità fissa convalidata con cura è spesso più pratica che ottimizzare all'infinito ogni singola immagine.