Ich versuche, einige BMP-Dateien in das JPEG-Format mit höchster Qualität (Q = 100) zu konvertieren, bis mir klar wird, dass es hier eine „Progressive“ Option gibt.
Eine meiner BMP-Dateien ist 2,9 MB groß. Nach der Konvertierung ins JPEG-Format ohne Progressive beträgt die neue Dateigröße 338,2 KB und mit Progressive verringert sich die neue Dateigröße auf nur 283,2 KB.
Ich habe einen Wikipedia-Artikel darüber gelesen, wozu dieses progressive JPEG dient, aber meine Sorge ist, dass die Qualität des progressiven JPEG im Vergleich zu normalem JPEG schlechter sein wird oder dass sie gleich bleiben werden?
Antwort1
Es gibt ein paar nette BeiträgeHierDies scheint zu erklären, warum die progressive Komprimierung möglicherweise besser ist. Es scheint darauf hinauszulaufen, dass im progressiven JPEG die komprimierten Daten effizienter angeordnet werden und dass blockförmige Bilddaten und Rauschen getrennt und separat komprimiert werden.
Ich habe die wichtigen Teile unten hervorgehoben, sie beschreiben es besser, als ich es je könnte.
Als Ergebnis würde ich erwarten, dass progressive JPEGbesserKomprimierung, aber keine nennenswerte Änderung der Bildqualität.
Progressives JPEG verfügt über zwei verschiedene Kodierungsmerkmale:
- Spektrale Auswahl
- Sukzessive Approximation
Was Sie beschreiben, ist nur das erste Feature (zuerst DC-, dann AC-Bänder). Es ist jedoch das zweite Feature, das den Hauptgrund für die unterschiedliche Kodierungseffizienz von Progressive JPEG darstellt.Bei der sukzessiven Approximation werden zuerst die höheren Bits der Koeffizienten gespeichert (geringe Genauigkeit, grobes Bild), dann die niedrigeren Bits (hohe Genauigkeit, detailliertes Bild). Bei normalen Bildern konzentriert sich das Rauschen in den niedrigeren Bits. Daher kann der Huffman-Encoder bei der Symbolcodierung im höheren Bitbereich, wo weniger Rauschen auftritt, effizienter sein.Die sukzessive Approximation Kodierungtrenntdas Rauschen aus dem Bild, und das ist der Grund für die bessere Kodierungseffizienz (Rauschen ist kaum komprimierbar).
Je mehr Rauschen (Details) das Bild hat, desto besser ist die Kodierungseffizienz von Progressive JPEG. Je weniger Rauschen (Unschärfe) das Bild hat, desto besser ist die Kodierungseffizienz von Sequential (Non-Progressive) JPEG.
Beachten Sie, dass die meisten Progressive JPEG-Codierer eine Mischung aus Spectral Selection-Codierung und Successive Approximation-Codierung verwenden. Für eine bessere Codierungseffizienz ist hauptsächlich Successive Approximation relevant, und Sie können versuchen, optimale Parameter für Successive Approximation (den Punkt, an dem die Präzision getrennt wird – Ah/Al im JPEG-Standard) für Ihre Bildklasse zu finden. Beispielsweise habe ich manchmal einen optimalen Punkt Al=4 für meine Bilder gefunden (4 untere Bits separat codiert).
Antwort2
Der Vorteil von progressivem JPEG besteht darin, dass man, wenn man ein Bild während der Übertragung direkt betrachtet, sehr schnell eine Annäherung an das gesamte Bild sehen kann, wobei sich die Qualität mit zunehmender Wartezeit allmählich verbessert. Das ist viel schöner als eine langsame Anzeige des Bildes von oben nach unten. Der Nachteil besteht darin, dass jeder Scan etwa den gleichen Rechenaufwand erfordert wie die Anzeige einer vollständigen JPEG-Basisdatei.
Das Bild sollte exakt dasselbe sein, es bedarf lediglich einer intensiveren Verarbeitung zur Anzeige.