Dev & Code 27 min ago0Zu Lesezeichen hinzufügen

Ein Bastler veröffentlicht eine umgekehrte Exploration des JPEG-Codecs: Er erzeugt Bilder, die beim Decodieren absichtlich Artefakte erzeugen, indem er die DCT-Quantisierung manipuliert. Neugierig, lehrreich und ein ausgezeichnetes Übungsbeispiel, um das Format zu verstehen.
Auf der Homepage von Hacker News diese Woche wurde ein Artikel mit dem Titel „Regressive JPEGs“ (maurycyz.com/projects/bad_jpeg/) veröffentlicht, der unsere Aufmerksamkeit erregt hat. Der Autor dokumentiert eine umgekehrte Exploration des JPEG-Codecs: Anstatt ein Bild für Größe und Qualität zu optimieren, erzeugt er absichtlich verschlechterte JPEGs, indem er die Quantisierungstabellen und die DCT-Blöcke (Discrete Cosine Transform) manipuliert.
Dies ist kein Produktionswerkzeug, sondern ein hervorragender Vorwand, um zu verstehen, wie JPEG unter der Haube funktioniert - ein Format, das die meisten Entwickler verwenden, ohne jemals die Spezifikation zu lesen.
JPEG (Joint Photographic Experts Group, ISO/IEC 10918-1 Standard von 1992) folgt einer klassischen Pipeline:
Die wahrgenommene Qualität hängt hauptsächlich von Schritt 5 ab: Je aggressiver die Quantisierungstabelle ist, desto mehr Details gehen in den hohen Frequenzen verloren.
Der Autor nutzt diesen Mechanismus aus. Durch die Erstellung exotischer Quantisierungstabellen (sehr hohe Werte bei bestimmten Frequenzen, ungewöhnlich niedrige Werte anderswo) erzeugt er JPEGs, die, wenn ein Standard-Decoder sie liest, Folgendes zeigen:
Der pädagogische Nutzen ist real: Man sieht mit bloßem Auge, was jeder Parameter des Codecs dazu beiträgt, die Informationen zu erhalten.
Über das Vergnügen der Neugierde hinaus gibt es einige legitime Verwendungen:
Im Kern zeigt, was dieses Projekt zeigt, dass ein Format, das man für eine Blackbox hält, immer ausnutzbare Hebel hat - zum Besten oder für die reine Neugierde.
Die ursprüngliche JPEG-Spezifikation (ITU T.81 / ISO 10918-1) ist umständlich, aber lesbar - und ist der beste Einstieg, um zu verstehen, was ein Decoder tatsächlich sieht. Auf der Werkzeugseite ermöglicht libjpeg-turbo (Darrell Commander) die Inspektion der Quantisierungstabellen einer Datei über djpeg -verbose: eine hervorragende Möglichkeit, zu überprüfen, was der Codec in einem konkreten JPEG gespeichert hat.
Zu beachten: Dateiformate sind keine Blackboxen. Ein wenig Spezifikation (JPEG, PNG, WebP) zu lesen, verwandelt jeden Entwickler in einen besseren Nutzer der Bildverarbeitungs-Tools, die er täglich verwendet.
Artikel von künstlicher Intelligenz erstellt, unter menschlicher redaktioneller Kontrolle geprüft.
Melden Sie sich an, um an der Diskussion teilzunehmen.
Soyez le premier à commenter.