Die richtige AVIF-Qualität zu wählen, ist einfach, wenn es nur um die Dateigröße geht. Schwieriger ist die Frage, wie viel sichtbarer Qualitätsverlust akzeptabel ist. Ein Qualitätswert von 40 entspricht weder einem wahrnehmungsbasierten Qualitätswert von 40 noch garantiert er bei jedem Bild das gleiche Ergebnis. Unterschiedliche Ausgangsbilder können auf identische Encodereinstellungen ganz verschieden reagieren.
SSIMULACRA2 hilft dabei, diese Lücke zu schließen: Die Metrik vergleicht ein dekodiertes, komprimiertes Bild mit einer Referenz. Eine umfassende Qualitätssuche für jedes einzelne Bild kann eine ansonsten unkomplizierte Konvertierung aber zu einem aufwendigen Encoding-Prozess machen. Wenn es um eine vernünftige Bildqualität fürs Web geht und nicht darum, jede Datei bis ins Letzte zu optimieren, gibt es einen einfacheren Weg: Eine AVIF-Qualitätsstufe anhand einer repräsentativen Stichprobe kalibrieren, die Ergebnisse visuell prüfen und diese Einstellung anschließend für die übrige Sammlung verwenden.
AVIF-Qualität und SSIMULACRA2 sind unterschiedliche Kennzahlen
Die Option quality, die an einen AVIF-Encoder übergeben wird, legt einen Komprimierungsparameter fest. SSIMULACRA2 ist dagegen eine Messung des tatsächlich codierten Ergebnisses. Die Skalen sind nicht austauschbar: AVIF quality: 40 bedeutet nicht, dass SSIMULACRA2 den Wert 40, 60 oder einen anderen festen Wert erreicht.
Um ein codiertes Bild zu bewerten, dekodiert man es und vergleicht es mit der Referenz:
ssimulacra2 reference.png encoded-decoded.png
Höhere SSIMULACRA2-Werte stehen für eine größere wahrnehmbare Ähnlichkeit. Die offizielle Dokumentation beschreibt einen Wert um 50 als mittlere und einen Wert um 70 als hohe Qualität. Ein Grenzwert von 60 kann ein sinnvoller pragmatischer Richtwert sein, ist aber eine selbst gewählte Vorgabe und keine allgemeingültige Definition akzeptabler Bildqualität. Repräsentative Ergebnisse sollte man immer in ihrer tatsächlichen Darstellungsgröße prüfen.
Warum die vollständige Optimierung jedes einzelnen Bildes teuer wird
Ein strenger Optimierer kann ein Bild mehrfach mit unterschiedlichen Qualitätswerten codieren, jeden Kandidaten mit SSIMULACRA2 bewerten und anschließend die kleinste Datei behalten, die die Qualitätsanforderung erfüllt. So lässt sich die Komprimierung häufig effizienter ausreizen: Ein einfach zu komprimierendes Bild erreicht den Grenzwert vielleicht schon bei niedriger Qualität, während ein schwieriges Bild eine höhere Einstellung benötigt.
Der Nachteil ist die Anzahl der Codierungen. Bei N Bildern und K getesteten Qualitätsstufen pro Bild, bis eine akzeptable Einstellung gefunden ist, ergibt sich eine Größenordnung von N × K Codierungen – zusätzlich zum Dekodieren und Bewerten. In der Praxis kann besonders aufwendiges AVIF-Encoding den größten Teil der Rechenzeit beanspruchen; die Berechnung von SSIMULACRA2 selbst muss nicht der teure Teil sein.
Eine Qualitätsstufe pro Ordner verringert den Suchaufwand, erfordert aber weiterhin Stichproben, Messungen und eigene Einstellungen für verschiedene Gruppen. Bei Sammlungen mit einheitlichen Anforderungen an die Auslieferung und einer gewissen Toleranz gegenüber Ausreißern lohnt sich die zusätzliche Komplexität möglicherweise nicht.
| Strategie | Kalibrierungsaufwand | Wichtigster Kompromiss |
|---|---|---|
| Adaptive Qualität pro Bild | Mehrere Testcodierungen pro Bild | Fein abgestimmte Kontrolle, höchster Kalibrierungsaufwand |
| Adaptive Qualität pro Gruppe | Mehrere Testcodierungen für die Stichprobe jeder Gruppe | Weniger Aufwand, aber mehr Konfiguration und gruppenabhängige Ergebnisse |
| Eine feste Qualitätsstufe | Testcodierungen an einer begrenzten Kalibrierungsstichprobe | Geringe betriebliche Komplexität, dafür einige zu stark oder zu schwach komprimierte Bilder |
Der entscheidende Unterschied: Durchschnittswert oder Bestehensquote
Bevor man einen Qualitätswert auswählt, muss klar sein, was „gut genug“ bedeutet. Zwei auf den ersten Blick ähnliche Ziele führen zu ganz unterschiedlichen Encodereinstellungen:
- Ziel für den Durchschnitt: Der mittlere SSIMULACRA2-Wert der Stichprobe soll ungefähr 60 betragen.
- Ziel für die Bestehensquote: Etwa 90 % der Bilder sollen SSIMULACRA2 ≥ 60 erreichen; die übrigen dürfen darunterliegen.
Das ist nicht gleichbedeutend. Bei der Berechnung des Mittelwerts kann ein hoher Wert für ein einfaches Bild einen niedrigen Wert für ein schwieriges Bild ausgleichen. Wenn beispielsweise die Hälfte der Bilder 75 und die andere Hälfte 55 Punkte erzielt, beträgt der Durchschnitt 65 – aber nur die Hälfte erreicht den Grenzwert von 60.
Für einen allgemeinen Web-Bild-Workflow, bei dem die meisten Bilder akzeptabel aussehen sollen und eine Minderheit von Ausreißern toleriert wird, ist die Bestehensquote oft aussagekräftiger. Berechnet wird:
pass_rate = count(scores >= 60) / count(all_scores)
Zusätzlich sollte man die Verteilung der nicht bestandenen Ergebnisse erfassen und die am schlechtesten aussehenden Bilder prüfen. Eine Stichprobe, in der 9 % einen Wert von 59 erzielen, unterscheidet sich erheblich von einer Stichprobe, in der 9 % nur 30 erreichen – obwohl beide dieselbe Bestehensquote haben.
Was eine tatsächliche Kalibrierung ergab
Bei einer explorativen AVIF-Kalibrierung wählte ein adaptives Verfahren für unterschiedliche Bildgruppen verschiedene Qualitätsstufen aus, ungefähr im Bereich von Mitte 30 bis Mitte 40. Das war zu erwarten: Manche Gruppen enthielten Bilder, die den gewählten SSIMULACRA2-Grenzwert schon früh überschritten, während einige schwierige Beispiele deutlich höhere Encoderqualität benötigten.
Die adaptive Regel war allerdings strenger als die eigentliche Anforderung an die ausgelieferten Bilder. Sie versuchte, in jeder Gruppe nahezu alle getesteten Bilder über den Grenzwert zu bringen und ließ nur einen sehr eng begrenzten Ausreißer zu. Das schützt schwierige Bilder, kann aber auch dazu führen, dass wegen einer einzigen außergewöhnlichen Stichprobe für eine ganze Gruppe eine höhere Qualitätsstufe gewählt wird.
Als die Messwerte anhand eines anderen Ziels neu betrachtet wurden – ungefähr neun von zehn Bildern mit SSIMULACRA2 60 oder höher –, erschien eine einheitliche AVIF-Qualität von etwa 39–40 als plausibler Kompromiss. Bei diesem Vergleich sprach 39 für kleinere Ausgabedateien, während 40 etwas mehr Spielraum für Bilder nahe am Grenzwert bot. Diese Werte ergaben sich aus den Kalibrierungsdaten und der anschließenden Analyse; eine vollständige Konvertierung mit fester Qualität und eine unabhängige Validierung über den gesamten Bildbestand waren nicht durchgeführt worden. Wie groß der tatsächliche Dateigrößenvorteil von 39 gegenüber 40 wäre, wurde nicht ermittelt.
Die Lehre daraus ist nicht, dass AVIF-Qualität 39 oder 40 überall funktioniert. Vielmehr kann eine feste Einstellung sinnvoll sein, wenn sie zu einer ausdrücklich festgelegten Verteilung der Qualitätswerte passt. Ein anderer Encoder, eine andere Bildauswahl, eine andere Farbverarbeitung oder ein anderer Wahrnehmungsgrenzwert können zu einem anderen Ergebnis führen.
AVIF-Qualität einmalig kalibrieren
- Akzeptable Fehlerquote festlegen. Beispielsweise kann die Vorgabe lauten, dass etwa 90 % der Bilder SSIMULACRA2 ≥ 60 erreichen müssen. Dabei ist zu entscheiden, ob dies ein flexibler Zielwert oder eine verbindliche Freigabeanforderung ist.
- Eine wirklich repräsentative Stichprobe zusammenstellen. Sie sollte verschiedene Bildabmessungen, Quellformate, Farbverläufe, scharfe Kanten, Texturen und detailarme Bilder umfassen. Die Dateien sollten zufällig aus dem tatsächlichen Bestand gezogen werden; falls eine Kategorie sonst fehlen würde, hilft eine geschichtete Stichprobe. Eine Auswahl allein nach komprimierten Bytes pro Pixel kann die Bandbreite der Beispiele besser abdecken, garantiert aber keine repräsentative Auswahl hinsichtlich der wahrgenommenen Qualität.
- Einen kleinen Bereich von Qualitätsstufen testen. Statt die gesamte Qualitätsskala zu durchsuchen, beginnt man mit wenigen Kandidaten rund um eine visuell akzeptable Einstellung. Beispielsweise lassen sich die benachbarten Werte 38, 39, 40 und 42 an denselben Bildern testen.
- Die Encoding-Pipeline unverändert halten. Auflösung, Ausrichtung, Farbraumkonvertierung, Encoderimplementierung,
effort, Chroma-Subsampling, Bittiefe und Vorverarbeitung müssen konstant bleiben. Wird ein Wasserzeichen eingeblendet, muss das Referenzbild vor dem Vergleich dasselbe Wasserzeichen und dieselben Transformationen enthalten. - Qualitätswert und Dateigröße gemeinsam erfassen. Für jeden Kandidaten sind der Anteil der Bilder mit mindestens 60 Punkten, die Verteilung der Ergebnisse unterhalb des Grenzwerts und die Gesamtgröße der codierten Dateien für dieselbe Stichprobe zu berechnen. Die Bandbreitenersparnis lässt sich nicht allein aus der Qualitätszahl ableiten.
- Die nicht bestandenen Bilder untersuchen. Gesichter, Text, dünne Linien, Farbverläufe und weitere für die Darstellung wichtige Details sollten visuell geprüft werden. Maßgeblich sind realistische Darstellungsgrößen und nicht nur stark vergrößerte Vergleiche.
- Die niedrigste geeignete Qualitätsstufe wählen und anschließend validieren. Der Kandidat wird an einer separaten zufälligen Teststichprobe geprüft, die seine Auswahl nicht beeinflusst hat. Wenn ein Verfehlen der 90-%-Vorgabe teuer wäre, sollte man eine Sicherheitsreserve einplanen und die Stichprobenunsicherheit ernst nehmen. Sind vereinzelte Fehlschläge akzeptabel, kann ein aggressiverer Wert sinnvoll sein.
Eine einmalige Kalibrierung bedeutet nicht, spätere Änderungen zu ignorieren. Sobald sich Bildmaterial, Bildabmessungen, Encoderversion, Transformationen bei der Auslieferung oder visuelle Anforderungen ändern, sollte man erneut eine kleine Stichprobe prüfen.
Ein einfacher Vergleich mit Sharp und SSIMULACRA2
Dieses vereinfachte Beispiel verwendet den AVIF-Encoder von Sharp, um aus derselben Eingabedatei zwei Kandidaten zu erzeugen. Der Code dient nur zur Veranschaulichung der Kalibrierung; er bedeutet nicht, dass jedes Projekt diese Encoderoptionen oder Qualitätswerte verwenden sollte. Nach der Installation von sharp wird er als ES-Modul ausgeführt.
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`);
}
Anschließend werden die dekodierten Kandidaten mit der vorbereiteten Referenz verglichen:
ssimulacra2 reference.png candidate-q39.png
ssimulacra2 reference.png candidate-q40.png
Für einen echten Test sollte dieser Ablauf über sämtliche Bilder der Stichprobe automatisiert werden, wobei für jeden Kandidaten sowohl Qualitätswert als auch Dateigröße erfasst werden. Wenn die produktive Verarbeitung Bilder skaliert, zuschneidet, mit Overlays versieht oder anderweitig verändert, müssen dieselben Schritte auch auf die Vergleichsreferenz angewendet werden. Andernfalls misst SSIMULACRA2 zum Teil die Transformation statt des Komprimierungsverlusts.
Ist eine globale Qualitätsstufe gewählt, wird die produktive Verarbeitung zu einer gewöhnlichen AVIF-Konvertierung in einem einzigen Durchgang. Eine Qualitätssuche für jedes Bild oder jeden Ordner ist dann nicht mehr nötig. Dadurch entfallen wiederholte Testcodierungen – nicht aber der Aufwand für die eine Codierung, die jedes Ausgabebild weiterhin benötigt.
Wann eine einheitliche AVIF-Qualität die falsche Wahl ist
Eine feste Einstellung ist ein Kompromiss, kein universelles Optimum. Adaptive Codierung bleibt wertvoll, wenn Mindestqualitätswerte für jedes einzelne Bild vertraglich zugesichert werden müssen, sichtbare Fehler inakzeptabel sind, sich die Ausgangsbilder stark unterscheiden oder die Einsparung jedes einzelnen Bytes den zusätzlichen Rechen- und Implementierungsaufwand rechtfertigt.
Besondere Vorsicht ist bei gemischten Bildtypen geboten. Fotografien, flächige Grafiken, feine Schrift und bereits komprimierte Vorlagen reagieren nicht unbedingt gleich. Wenn eine Bildklasse den Akzeptanztest regelmäßig nicht besteht, können einige wenige format- oder inhaltsabhängige Profile effizienter sein als die beiden Extreme: eine universelle Qualitätsstufe oder die vollständige Optimierung jedes einzelnen Bildes.
Außerdem muss zwischen Encodergeschwindigkeit und Kalibrierungsgeschwindigkeit unterschieden werden. Mit einer festen Qualitätsstufe entfallen wiederholte Versuche; trotzdem kann die Codierung aller Bilder mit einem sehr hohen effort-Wert rechenintensiv bleiben. Ein Encoderprofil mit geringerem Aufwand ist eine weitere mögliche Optimierung, sofern man neu kalibriert: Die Beziehung zwischen Qualitätsstufe und Messwert kann sich mit den Encoderoptionen verändern.
Die praktische Faustregel
SSIMULACRA2 sollte als Werkzeug zur Kalibrierung dienen und nicht zwingend als Produktionsschritt für jedes Bild. Man legt ein Qualitätsziel fest, das der tatsächlichen Betrachtung der Bilder entspricht, codiert eine repräsentative Stichprobe mit einigen benachbarten Einstellungen, vergleicht sowohl die wahrnehmungsbasierten Qualitätswerte als auch die Dateigrößen, untersucht die Ausreißer und übernimmt die niedrigste Einstellung, die die eigene Fehlertoleranz erfüllt.
Bei einer explorativen Kalibrierung erschien eine AVIF-Qualität von ungefähr 39–40 als sinnvoller Endpunkt. Das war eine Entscheidung auf Grundlage eines bestimmten Grenzwerts und einer bestimmten Toleranz – keine universelle Voreinstellung und kein bestätigter Benchmark für den gesamten Bildbestand. Die allgemeine Erkenntnis ist einfacher: Wenn Zeit und Rechenleistung begrenzt sind, ist eine sorgfältig validierte feste Qualitätsstufe oft praktischer, als jedes einzelne Bild endlos weiter zu optimieren.