Wie wir Qualität messen

Jedes Ergebnis dieses Werkzeugs trägt eine Zahl, die sagt, wie weit es sich von deiner Vorlage entfernt hat. Diese Seite erklärt, wie die Zahl entsteht — und wo sie an ihre Grenzen kommt. Beides gehört zusammen: Ein Qualitätswert, dessen Verfahren man nicht nachlesen kann, ist eine Behauptung wie jede andere.

Was SSIM misst

SSIM steht für Structural Similarity. Der Wert vergleicht zwei Bilder nicht Bildpunkt für Bildpunkt, sondern in kleinen Fenstern, die über das ganze Bild wandern. In jedem Fenster werden drei Größen verglichen: mittlere Helligkeit, Kontrast und das örtliche Muster. Der Gesamtwert ist der Mittelwert über alle Fenster.

Der Unterschied zu einer Abweichung pro Bildpunkt ist entscheidend. Ein Bild, das gleichmäßig um zwei Helligkeitsstufen heller ist, sieht praktisch unverändert aus — eine Fehlerquadratsumme bestraft es trotzdem. Umgekehrt fällt ein Verlust feiner Kanten kaum ins Gewicht, wenn man nur Mittelwerte betrachtet, während man ihn sofort sieht. SSIM gewichtet das so, wie es der Wahrnehmung näher kommt.

Gemessen wird auf der Helligkeit, nicht auf den Farbkanälen: Das Auge ist für Helligkeitsstruktur deutlich empfindlicher als für Farbverläufe, und die verbreiteten Bildformate rechnen aus demselben Grund so. Unsere Umsetzung arbeitet mit gleichgewichteten Fenstern von 8 × 8 Bildpunkten.

Wogegen gemessen wird — und warum das der wichtigste Satz ist

Verglichen wird nicht mit deiner Originaldatei, sondern mit einem eingefrorenen Referenzbild: dem dekodierten Bild in genau der Auflösung, in der auch das Ergebnis entsteht. Verlangt eine Vorgabe eine kleinere Breite, wird zuerst verkleinert, dann eingefroren, dann gemessen.

Der Grund: Wird gegen das unverkleinerte Original gemessen, fließt der Schaden durch das Verkleinern in den Qualitätswert ein. Er hätte dann zwei Ursachen — Skalierung und Kompression —, und die Suche könnte nur eine davon steuern. Der Wert würde mit steigender Verkleinerung immer schlechter, egal wie gut komprimiert wird. Er sagte dann nichts mehr über die Kompression aus, und die Suche fände kein Optimum.

Deshalb steht unter jedem Ergebnis „SSIM gegen das skalierte Original". Das ist keine Einschränkung des Werts, sondern seine Definition.

Wie die Suche abläuft

  1. Bildtyp bestimmen. Foto oder Grafik, anhand der Farbanzahl. Davon hängt ab, welche Formate überhaupt antreten.
  2. Referenz einfrieren. Nach einer etwaigen Verkleinerung, siehe oben.
  3. Grob suchen. Auf einer auf höchstens 512 Pixel verkleinerten Fassung wird die Kompressionsstufe per Intervallhalbierung eingegrenzt. Das ist der schnelle Teil — ein Encode-Durchgang in voller Auflösung kostet ein Vielfaches.
  4. In voller Auflösung nachprüfen. Die gefundene Stufe wird in echter Größe kodiert und gemessen. Hält sie das Ziel nicht, wird weiter halbiert, bis das Intervall zusammenfällt.
  5. Formate vergleichen. Gewonnen hat die kleinste Datei, die das Qualitätsziel hält. WebP muss dabei mindestens acht Prozent kleiner sein als JPEG, damit es gewinnt — sonst wechselte die Ausgabe bei ähnlichen Bildern willkürlich das Format.
  6. Gegen die Vorlage antreten lassen. Deine eigene Datei ist ein Kandidat wie jeder andere und wird genauso gemessen. Ist keine Neukodierung mindestens zwei Prozent kleiner, bekommst du sie unverändert zurück.
  7. Ziel-Dateigröße anwenden, falls die Vorgabe eine nennt: erst weiter komprimieren, dann in Zehn-Prozent-Schritten verkleinern. Wird sie nur unterhalb des Qualitätsziels erreicht, steht das im Ergebnis.

Was am Testkorpus herauskam

Der Testkorpus dieses Projekts besteht aus Fotos, Produktaufnahmen, Screenshots, Logos, transparenten PNGs und bereits komprimierten JPEGs. Die folgenden Zahlen sind festgeschriebene Läufe — sie werden bei jeder Änderung an der Engine neu gefahren und gegen die hinterlegten Werte geprüft, mit einer Toleranz von ± 0,003 beim Qualitätswert und ± 3 % bei den Bytes.

Kennzahlen der Korpusläufe bei Qualitätsziel SSIM ≥ 0,98
Läufe in der Messreihe 20 Bilder
Qualitätsziel SSIM ≥ 0,98
Läufe unter dem Ziel 0
niedrigster gemessener Wert 0,98006
Median der gemessenen Werte 0,9812350000000001
Datenmenge vorher 15,1 MB
Datenmenge nachher 11,0 MB
Ersparnis insgesamt 27,5 %
Median je Bild 43,8 %
unverändert zurückgegeben 0 von 20
Ergebnis größer als die Vorlage 0

Messreihe vom 19.09.2026, erzeugt aus tests/corpus.manifest.json. Nicht mitgezählt: wide-gamut-p3.jpg — Entscheidung 44: Display-P3-Profil, unter Node ohne Farbumrechnung dekodiert. Sein SSIM unter Node ist nicht das des Produkts; das Bild prüft die ICC-Erkennung und zählt in keiner Qualitäts- oder Größenaussage mit.

Was die Schwelle 0,98 belegt — und was nicht

Eine Messgröße sagt für sich genommen nichts darüber, was ein Mensch sieht. Deshalb ist die Schwelle am 13.09.2026 gegen den Augenschein gehalten worden: erzwungene Wahl zwischen zwei Bildern, Ansicht 1:1, Ausschnitt auf der kontrastreichsten Bildstelle, die Seite des Originals zufällig. 21 Bilder, 84 Entscheidungen. Eine Ankerstufe bei 0,93 prüft den Aufbau selbst — dort wurden 76 % richtig erkannt (p = 0,013), der Versuch misst also überhaupt etwas.

Ergebnis der Schwellenkalibrierung vom 13.09.2026
SSIM-Ziel Entscheidungen richtig p gegen Raten Ø Dateigröße
0,93 (Anker) 21 76 % 0,013 67 KB
0,97 21 86 % < 0,001 143 KB
0,98 21 67 % 0,095 210 KB
0,99 21 62 % 0,192 392 KB

0,98 besteht — knapp. Bei 67 % richtigen Entscheidungen liegt p bei 0,095, und das reicht nicht, um einen sichtbaren Unterschied nachzuweisen. Genau so steht es hier: Nachgewiesen ist, dass ein Unterschied nicht belegbar ist, nicht, dass keiner existiert. Bei 0,97 ist er es deutlich — 86 % richtig, p unter 0,001 —, und die Datei ist dabei nur rund zwei Drittel so groß. Die Schwelle zahlt also etwas für ihre Sicherheit.

Auffällig ist die Stufe 0,99. Auch dort fällt die Trefferquote nicht auf den Ratewert, sondern bleibt bei 62 %. Das deutet darauf hin, dass es nicht eine Schwelle für alle Bilder gibt: Bei harten Kanten — Screenshots, Logos, Text — sieht man offenbar länger etwas als bei Fotos. Ob das so ist, entscheidet die Aufschlüsselung nach Bildtyp, und die steht aus. Das Werkzeug ist darauf vorbereitet: Ein Qualitätsziel je Bildtyp lässt sich setzen, sobald es gemessen ist. Bis dahin ist keines gesetzt.

Einschränkung zum Verfahren: Die Vergleichsvarianten sind mit den WebP-Encodern des Browsers erzeugt worden, nicht mit derselben Bibliothek, die dieses Werkzeug über WebAssembly benutzt. Die SSIM-Werte sind vergleichbar, die Struktur der Artefakte kann geringfügig abweichen.

Wo dieses Verfahren ungenau ist

Die grobe Suche misst anders als die Prüfung. Sie läuft auf einer auf 512 Pixel verkleinerten Fassung, und deren Werte weichen von denen in voller Auflösung ab. Wir haben das gemessen, an sechs Bildern über alle Kompressionsstufen: Die verkleinerte Fassung misst durchgehend niedriger, im Mittel um 0,0155, im Maximum um 0,0562. Deshalb wird die gefundene Stufe in voller Auflösung nachgeprüft und nicht einfach übernommen — der ausgewiesene Wert stammt immer aus der vollen Auflösung.

Die gefundene Kompressionsstufe ist nicht immer die kleinstmögliche. Der Qualitätswert steigt mit der Kompressionsstufe nicht streng monoton; eine Intervallhalbierung setzt das aber voraus. In einer eigenen Messung über 36 Läufe lag die gefundene Stufe in 26 Fällen höher als nötig. Die Folge ist eine Datei, die größer ist als sie sein müsste — nie eine, die schlechter ist als ausgewiesen. Der Befund ist aufgeschrieben und nicht behoben; er gehört zur Leistungsarbeit.

SSIM ist kein Wahrnehmungsmodell. Der Wert korreliert mit dem, was Menschen sehen, besser als eine Fehlerquadratsumme — aber er ersetzt kein Auge. Bei Rauschen verhält er sich eigenwillig: Rauschen sieht für ihn aus wie Struktur. Nacht- und Makroaufnahmen sind deshalb die Härtefälle im Testkorpus.

Ein Bild zählt hier nicht mit. Das Foto mit Display-P3-Farbprofil wird in der Testumgebung ohne Farbumrechnung dekodiert, im Browser dagegen mit. Sein gemessener Wert wäre nicht der, den das Produkt liefert. Es bleibt im Korpus, weil es die Profilerkennung prüft, und ist aus allen Qualitäts- und Größenaussagen herausgenommen — sichtbar, nicht stillschweigend.

Warum die Zahl überhaupt dasteht

Bildkompression können viele Werkzeuge. Der Unterschied liegt darin, ob das Ergebnis behauptet wird oder nachgewiesen. Ein Regler mit „Qualität: 80" sagt dir, was der Encoder eingestellt bekam — nicht, was dabei aus deinem Bild geworden ist. Dieselbe Einstellung bedeutet bei einem Logo etwas völlig anderes als bei einem Nachtfoto.

Deshalb steht hier eine gemessene Zahl, auch wenn sie ungünstig ausfällt. Wenn ein Bild sein Ziel nicht erreicht, steht das im Ergebnis. Wenn deine Vorlage besser ist als alles, was wir daraus machen können, bekommst du sie zurück. Und wenn ein Ergebnis größer wird als die Vorlage, wird auch das ausgewiesen — es zu verschweigen wäre einfacher und würde genau das Versprechen brechen, für das es dieses Werkzeug gibt.