Gibt es eine Qualität, Dateigröße oder einen anderen Vorteil für JPEG-Formate, die ein Vielfaches von 8px oder 16px sind?

8

Beim JPEG-Komprimierungscodierungsprozess wird ein gegebenes Bild in Blöcke von 8x8 Pixeln aufgeteilt, wobei mit diesen Blöcken in zukünftigen verlustbehafteten und verlustfreien Komprimierungen gearbeitet wird. [Quelle]

Es wird auch erwähnt, dass, wenn das Bild ein multipler 1MCU-Block ist (definiert als eine minimale codierte Einheit, gewöhnlich 16 Pixel in beiden Richtungen), dass verlustfreie Änderungen an einem JPEG durchgeführt werden können. [Quelle]

Ich arbeite mit Produktbildern und würde gerne wissen, ob und wie viel Nutzen aus der Verwendung von Vielfachen von 16 in meiner endgültigen Bildgröße (sagen wir, ein Bild mit der Größe 480px um 360px) im Vergleich zu einem non abgeleitet werden kann -multiple von 16 (wie 484x362). In diesem Beispiel bin ich nicht an weiteren Änderungen, Bearbeitungen oder Neukomprimierungen des endgültigen Bildes interessiert.

Ich versuche, näher an eine bestimmte Antwort heranzukommen, von der ich weiß, dass sie weitgehend allgemeingültig sein muss: Ein 480x360-Bild, das 64k groß ist und in Photoshop mit maximaler Qualität gespeichert wird, wird

Dave Rutledge 16.09.2008, 17:37
quelle

5 Antworten

18

8 Pixel ist der Cutoff. Der Grund dafür ist, dass JPEG-Bilder einfach ein Array von 8x8 DCT-Blöcken sind; Wenn die Bildauflösung in beiden Richtungen nicht mod8 ist, muss der Encoder die Seiten bis zur nächsten Mod8-Auflösung auffüllen. Dies ist in der Praxis nicht sehr kostenintensiv; Was viel schlimmer ist, sind die Fälle, in denen ein Bild scharfe schwarze Linien aufweist (z. B. ein Letterbox-Bild), die nicht an Blockgrenzen liegen. Dies ist besonders problematisch bei der Videokodierung. Der Grund dafür ist, dass die Frequenztransformation einer scharfen Linie eine Gauß-Verteilung von Koeffizienten ist - was zu einer enormen Anzahl von zu codierenden Bits führt.

Für diejenigen, die neugierig sind, besteht die gängigste Methode zum Auffüllen von Kanten in der Intra-Komprimierung (wie JPEG-Bildern) darin, die Pixellinien vor der Kante zu spiegeln. Wenn Sie zum Beispiel drei Linien und die Linie X die Kante füllen müssen, ist die Linie X + 1 gleich der Linie X, die Linie X + 2 ist gleich der Linie X-1 und die Linie X + 3 ist gleich der Linie X- 2. Dies minimiert ziemlich effektiv die Kosten der Transformationskoeffizienten der zusätzlichen Zeilen.

Bei der Intercodierung duplizieren die Auffüllalgorithmen jedoch im Allgemeinen einfach die letzte Zeile, weil die Mirror-Methode nicht gut für die Interkomprimierung funktioniert, z. B. bei der Videokomprimierung.

    
Dark Shikari 16.09.2008, 17:57
quelle
3

Manchmal müssen Sie wegen Unterabtastung 16 Pixelgrenzen anstelle von 8 verwenden. Jedes zweite Pixel wird während des Codierprozesses weggeworfen, und diese 8 × 8 DCT-Blöcke begannen als 16 × 16 und werden zu 16 × 16 dekodiert. Dies ist bei den höchsten Qualitätseinstellungen kein Problem.

    
Mark Ransom 22.09.2008 19:57
quelle
2

Die Bilddimensionen, die ein Vielfaches von 8 oder 16 sind, beeinflussen die Größe auf der Festplatte nicht sehr, aber Sie können drastische Einsparungen erzielen, wenn Sie den visuellen Inhalt auf das Raster von 8x8 Pixel ausrichten können wiederholendes Muster oder Textur im Bild.

    
Mike Ivanov 16.09.2008 17:57
quelle
2

Ein JPG mit Größen multipliziert mit 8 kann auch ohne Qualitätsverlust gedreht werden. Zum Beispiel kann Gthumb dies unter Linux tun.

    
Tometzky 17.09.2008 15:04
quelle
1