Gibt es eine Qualität, Dateigröße oder andere Vorteile zu JPEG Größen ein Vielfaches von 8 Pixel oder 16px zu sein?

StackOverflow https://stackoverflow.com/questions/74892

Frage

Die JPEG-Kompressionscodierungsprozess spaltet ein gegebenes Bild in Blöcke von 8x8 Pixeln, wobei diese Blöcke in Zukunft verlustbehaftete und verlustfreie Komprimierungen arbeiten. [Quelle]

Es wird auch erwähnt, dass, wenn das Bild ein mehrfacher 1MCU Block (definiert als Minimum Coded Einheit ‚in der Regel 16 Pixel in beiden Richtungen‘), dass lossless Änderungen an einen JPEG durchgeführt werden kann. [Quelle]

Ich arbeite mit Produktabbildungen und mag beide wissen, ob und wie viel Nutzen aus mit Vielfachen von 16 in meiner letzten Bildgröße (zum Beispiel unter Verwendung ein Bild mit der Größe 480px von 360px) im Vergleich zu einem nicht abgeleitet werden -Multiple von 16 (wie beispielsweise 484x362). In diesem Beispiel bin ich nicht daran interessiert, weitere Veränderungen, Bearbeiten oder Rekompression des endgültigen Bildes.

Um zu versuchen, auf eine bestimmte Antwort näher zu kommen, wo ich es weiß, weitgehend Verallgemeinerungen sein muss: ein 480x360 Bild gegeben, dass bei maximaler Qualität in Photoshop [Beispiel] :

  • Kann ich erwarten, dass alle Qualitätsverlust aus einem Bild, das 484x362
  • ist
  • Welche Menge an Dateigröße hinaus kann ich erwarten (für dieses Beispiel würde der zusätzliche Raum weißen Pixel sein)
  • Gibt es andere Nachteile zu wachsen größer als die 8px Gitter?

Ich weiß, dass es willkürlich ist, dass konkretes Beispiel zu verwenden, aber es wäre noch hilfreich sein (für mich und möglicherweise eine Bildgröße alle anderen grübeln) zu verstehen, welche Ebene des Kompromisses würde ich mit zu tun, die nicht-8px Gitter brechen .

Die zentrale Frage ist hier eine Debatte habe ich habe, ist, ob 8-Pixel teilbar Bilder sind höhere Qualität als Bilder, die nicht teilbar sind durch 8-Pixel.

War es hilfreich?

Lösung

8 Pixel sind der Cutoff. Der Grund ist, weil JPEG-Bilder einfach ein Array von 8x8 DCT-Blöcken sind; wenn die Bildauflösung in beiden Richtungen nicht Mod8 ist, hat die Encoder-Pad die Seiten bis zur nächsten Mod8 Auflösung. Dies ist in der Praxis nicht sehr teuer bitweise; was ist viel schlimmer sind die Fälle, wenn ein Bild scharf schwarze Linien (wie ein Letterbox-Bild) hat, die auf Blockgrenzen liegt nicht. Dies ist besonders problematisch bei der Videocodierung. Der Grund dafür ist ein Problem ist, dass die Frequenz einer scharfen Linie Transformation ist eine Gaußsche Verteilung von Koeffizienten -. Was zu einer enormen Anzahl von Bits Code

Für jene gespannt, die gebräuchlichste Methode des Auffüllens Kanten in intra-Kompression (wie beispielsweise JPEG-Bilder) ist, um die Zeilen von Pixeln vor dem Rand zu spiegeln. Zum Beispiel, wenn Sie Pad benötigen drei Zeilen und die Linie X ist die Kante, Zeile X + 1 gleich Linie X, Zeile X + 2 gleich Linie X-1, und die Linie X + 3 gleich X- auszuzukleiden 2. Diese recht effektiv minimiert die Kosten in Koeffizienten der zusätzlichen Zeilen verwandeln.

In Intercodierung jedoch die Polsterung Algorithmen einfach im Allgemeinen die letzte Zeile duplizieren, da das Spiegel-Verfahren nicht gut für inter Kompression funktioniert, wie in Videokompression.

Andere Tipps

Manchmal braucht man 16 Pixelgrenzen zu verwenden, anstatt 8 wegen Subsampling; jedes zweite Pixel wird während des Codierungsprozesses weggeworfen, und die 8x8-DCT-Blöcke begann als 16x16 und wird zurück zu 16x16 dekodieren. Dies wird kein Problem bei den höchsten Qualitätseinstellungen sein.

Die Bildabmessungen ist ein Vielfaches von 8 oder 16 ist nicht die Größe auf der Festplatte beeinflussen gehen sehr viel, aber Sie können drastische Einsparungen, wenn man die visuellen Inhalte auf dem 8x8-Pixelraster ausrichten kann, wie wenn es eine ist wiederholende Muster oder Textur im Bild.

Ein JPG mit Größen vervielfachen von 8 sein kann auch ohne Qualitätsverlust gedreht / gespiegelt werden. Zum Beispiel gthumb kann auf Linux dies tun.

Was Tometzky sagte. Wenn Sie nicht die richtig mehrere haben, die lossless Flip und drehen Algorithmen funktionieren nicht. Das ist, weil die Polsterung auf der rechts / unten, die sicher jetzt auf der linken / oberen Enden nach oben ignoriert werden kann, wo es nicht kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top