Ähnliche Bilder verlustfrei komprimieren?

10

Ich muss die Größe meiner Fotobibliothek reduzieren, damit ich sie natürlich komprimieren kann. Viele von ihnen sind nicht ganz identisch, aber immer noch sehr ähnlich (nachfolgende Aufnahmen derselben Szene). Gibt es einen Komprimierungsalgorithmus, der diese Tatsache ausnutzt, um diese Bilder effektiv zu komprimieren? 7zip (LZMA) ist nutzlos.

Erik
quelle

Antworten:

11

Sie können Paq 8 (fp8_v2.zip) ausprobieren. Ich habe es selbst auf 1440 ähnlichen PNG-Bildern und dann wieder auf 111 ähnlichen JPG-Bildern versucht. Hier sind die Ergebnisse.

  • 1440 PNG-Dateien, 28.631.615 Byte => 2.058.653 Byte komprimiert
  • 111 JPG-Dateien, 15.003.820 Bytes => 489.096 Bytes komprimiert

Die Komprimierung der PNG-Dateien dauerte ca. 8 Minuten und 550 MB Speicher, wenn:

fp8_v2.exe -7 images *.png

Die Komprimierung der JPG-Dateien dauerte ca. 5 Minuten und 125 MB Speicher, wenn:

fp8_v2.exe -5 images image12*.jpg

Siehe auch: Verlustfreier JPG-Bildkomprimierungstest

jftuga
quelle
Eine Komprimierung von 97% für die JPGs scheint unrealistisch. Die Zahlen in dem Vergleichstest, den Sie verlinken, um zu sagen, dass die Komprimierung ungefähr 20%
beträgt
@OneSolitaryNoob Hast du vergessen, dass die JPEGs ähnlich sind? 110/111 = 99,1% erwartete Komprimierung. Bei dem von ihm verknüpften Vergleichstest geht es um das Komprimieren eines einzelnen JPEG.
Navin
@ Navin ist es wirklich unwahrscheinlich. Selbst wenn sie nahezu identisch aussehen, unterscheiden sich die meisten Pixel geringfügig.
OneSolitaryNoob
@OneSolitaryNoob Na und? 1 Sekunde Video (30 Bilder) kann auf ungefähr die gleiche Größe wie ein einzelnes Bild komprimiert werden. Solange der kleine Unterschied einen kleinen Teil der Daten ausmacht, sind Sie alle gut.
Navin
@ Navin das ist verlustbehaftete Komprimierung, viele Details sind weg, aber die meisten Leute werden es nicht bemerken. Paq * ist verlustfreie Komprimierung
OneSolitaryNoob
1

Ich würde mir vorstellen, dass die Burrows-Wheeler-Transformation mit einem arithmetischen Codierer bei einem ausreichend großen Fenster ideal dafür wäre. Was passiert, wenn Sie BZIP2 so konfigurieren, dass eine Blockgröße verwendet wird, die einer kleinen Anzahl von Fotos entspricht? Es wird langsamer und benötigt mehr Speicher, aber das Komprimierungsverhältnis sollte in die Höhe schnellen. Und haben Sie LZMA schon mit größeren Blockgrößen ausprobiert?

Peter Hanneman
quelle
1

Hier ist eine einfache Lösung, die für Fotos nicht funktioniert, aber möglicherweise funktioniert, wenn mehrere Bilder mit großen pixelweisen identischen Bereichen vorhanden sind: Speichern Sie die Bilder in einem entpackten Format wie BMP (nicht PNG oder GIF) und tarieren Sie sie und komprimieren Sie sie mit einem anständigen Kompressor wie XZ, zB unter Linux mit so etwas

tar -c myDirectory | xz -9 >myDirectory.tar.xz

Anstelle von TAR und XZ kann 7-Zip mit der Option "Solid Archive" verwendet werden, um ungefähr die gleiche Leistung zu erzielen. Auf diese Weise konnte ich 16 ähnliche Screenshots, die beim Speichern als separate PNG-Dateien jeweils etwa 900 KB benötigten, in einem 2-MB-Archiv komprimieren. Der Vorteil dieser Lösung besteht darin, dass gängige Dateiformate verwendet werden, sodass keine neue Software installiert werden muss. (Leider haben die älteren und noch häufigeren Programme GZIP und BZIP2 keine gute Arbeit für mich geleistet - möglicherweise, weil die Blockgröße von BZIP2 nicht so konfiguriert werden kann, dass sie größer als 900 KB ist.)

Jaan
quelle
0

Nicht dass ich es gesehen hätte. Wahrscheinlich wäre es am nächsten, mehrere ähnliche JPEGs in einen MJPEG-Film zu integrieren. Sie können auch APNG oder animierte GIFs für einen ähnlichen Zweck verwenden.

Ich bin mir nicht sicher, wie gut das funktionieren würde, und es hört sich so an, als würden Sie bereits über Film-Screencaps sprechen. Das Umpacken in eine Filmdatei klingt also ... kontraproduktiv.

Wenn Sie noch über die Clips verfügen, von denen die Bildschirme stammen, ist es möglicherweise besser, einfach ein Befehlszeilenprogramm zu finden, mit dem Sie den genauen Rahmen für Sie extrahieren, diese eindeutige Kennung in eine Textdatei kopieren und dann jederzeit Ziehen Sie den Rahmen bei Bedarf einfach wieder heraus.

afrazier
quelle
GIF eignet sich nicht zum Komprimieren von Fotos, und animiertes GIF ist noch weniger. Selbst das Komprimieren von Fotos zu einem MJPEG-Video scheint mir nicht sinnvoll zu sein, da das Wiederherstellen einzelner Bilder schwierig wäre.
Martin
Ich habe nicht gesagt, dass es eine gute Idee ist ... :-) Die ultimative Idee war, die Fotos in eine animierte Variante ihres ursprünglichen Formats zu bringen.
Afrazier