Es gibt zwei Hauptfaktoren, die beim Erstellen von JPEG-Bildern zu digitalen Artefakten führen: Aliasing und Komprimierung.
Beispiel:
Das Konvertieren eines PNG mit Zeichen in ein JPEG oder das Platzieren von Vektorbildern über einem Foto führt zu einer Pixelung an den Rändern. Das Antialiasing erzeugt im Allgemeinen eine Art Unschärfe um sie herum. Wenn das Bild jedoch verlustbehaftet komprimiert wird , gehen auch Teile der Details verloren, sodass die Unschärfe und die Pixelung möglicherweise weniger auffällig werden.
Ist das das Richtige? Das heißt, da eine verlustfreie Komprimierung ein sehr detailliertes Bild erzeugt, sind die durch Aliasing resultierenden Artefakte deutlicher erkennbar, sodass durch Verwendung der richtigen Komprimierung ein Gleichgewicht gefunden werden kann, obwohl die Bildqualität beeinträchtigt wird.
Bearbeiten
Ich habe gerade dieses JPEG in mspaint (3.46KB) gespeichert:
Hier ist das gleiche JPEG mit maximaler Komprimierung (niedrigste Qualität, 0,5 KB):
Hier ist noch das gleiche JPEG mit 50% Komprimierung (beachten Sie den Größenunterschied von 1,29 KB):
Dieselbe 50% ige Komprimierung, jedoch als "progressives JPG" gespeichert, die ursprünglichen EXIF- und XMP-Daten beibehalten und "versucht, mit der ursprünglichen JPG-Qualität zu speichern" (Sie können feststellen, dass keine grauen Pixel vorhanden sind, 2,96 KB):
Und schließlich das gleiche wie zuvor mit deaktiviertem Chroma-Subsampling (gleiche Dateigröße, 2,96 KB):
quelle
mozjpeg
Kompressor einen besonderen Trick hat, um bei solchen Bildern weniger Verzerrungen zu erzeugen. (und es ist im Allgemeinen effizienter als übliche JPEG-Autoren.) Haben Sie es versucht?Antworten:
Die JPEG-Komprimierung umfasst drei Hauptschritte:
Chroma-Unterabtastung . Das Bild wird von RGB in den YCbCr-Farbraum konvertiert, in dem die Luma oder Helligkeit (Y) getrennt von den Chroma- oder Farbkomponenten Cb und Cr gespeichert wird . Die Y-Komponente wird bei voller Auflösung gehalten, aber Cb und Cr werden heruntergetastet, typischerweise auf die halbe Auflösung auf jeder Achse. Dies nutzt die Tatsache aus, dass das menschliche visuelle System empfindlicher auf feine Details der Helligkeit als auf Farbe reagiert.
Frequenzquantisierung. Die Y-, Cb- und Cr-Bilder werden in eine Frequenzdarstellung umgewandelt, indem sie in 8 × 8-Blöcke aufgeteilt und die diskrete Cosinustransformation (eine Variante der Fourier-Transformation) auf jeden Block angewendet werden. Das Ergebnis ist eine Zahlenmatrix, die die Amplituden verschiedener Raumfrequenzen im Block beschreibt. Diese Zahlen können dann quantisiert werden (auf eine ausgewählte Anzahl von Genauigkeitsbits gerundet). Unterschiedliche Quantisierungsstufen werden für unterschiedliche Frequenzen verwendet, wobei die relativ geringe Empfindlichkeit unseres visuellen Systems für hohe Frequenzen ausgenutzt wird. Hier kommt die Qualitätseinstellung des JPEG-Encoders ins Spiel: Niedrigere Qualitäten verwenden eine gröbere Quantisierung.
Entropiecodierung . Die quantisierten DCT-Werte werden durch einen Entropiecodierer geleitet, der den Bitstrom verlustfrei komprimiert, indem weniger Bits verwendet werden, um die allgemeineren Werte darzustellen, ähnlich einer Zip-Datei.
Die Schritte 1 und 2 sind verlustbehaftet und jedes erzeugt seine eigene Art von Artefakten (obwohl es einige Überlappungen gibt). Die Chroma-Unterabtastung neigt dazu, scharfe Kanten zwischen Regionen unterschiedlicher Farben zu verwischen. Dies ist besonders in der Vektorgrafik sichtbar, wo bunte Formen bösartige Zacken an ihren Rändern aufnehmen. Die Frequenzquantisierung verwischt im Allgemeinen feine Details und erzeugt auch blockförmige Artefakte bei Einstellungen geringer Qualität, da die DCT blockweise durchgeführt wird. Es ist besonders im Text sichtbar.
Aus diesem Grund wird JPEG normalerweise nicht für Bilder verwendet, die Vektorgrafiken oder Text enthalten. Die Komprimierungsalgorithmen sind für diese Fälle schlecht geeignet, obwohl sie für Fotos und andere Bilder mit komplexer Textur und nicht zu scharfen Kanten gut geeignet sind.
quelle