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 image compression jpeg lossy-compression
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.
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.
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.
Tags und Links image compression jpeg lossy-compression