Kennt jemand Bildkomprimierungstechniken mit den folgenden Eigenschaften:
- verlustfrei
- Streaming - Ich möchte Pixel für Pixel im laufenden Betrieb komprimieren.
- Low-Memory-Overhead - Ich kann es mir leisten, eine einzelne Zeile zu puffern, aber im Idealfall nicht einmal das.
- keine dynamischen Wörterbücher
- Nur "reale" Bilder, daher ist die Leistung in "bösen Fällen" wie Schachbrettern nicht wichtig
- 2-3x Komprimierung (5x-10x wäre noch besser, aber das verlangt viel, was ich weiß)
- kann mit 10-16 Bit Pixel arbeiten (abhängig von meiner Kamera)
Meine Bilder werden ~ 1k Pixel breit sein, mit Pixelraten von ~ 20Mpix / Sek. Die Pixeltiefe liegt zwischen 10 und 16 Bit pro Pixel (abhängig von der Wahl der Kamera). Angenommen, Sub-16-Bit-Pixelbreiten würden vorerst in einem 16-Bit-Wort dargestellt, anstatt aus einem kontinuierlichen Bitstrom extrahiert werden zu müssen.
Vielleicht irgendeine Form von Delta + arithmetischer Codierung?
image-processing
image-compression
Martin Thompson
quelle
quelle
Antworten:
Sie können Huffyuv verwenden: http://neuron2.net/www.math.berkeley.edu/benrg/huffyuv.html
Dies ist nicht besser als ein einfacher Reißverschluss, aber dennoch leicht für Bilder optimiert.
Jede bildbezogene Komprimierung beruht auf Techniken wie Vektorquantisierung oder Transformationscodierung. Um Transformationen wie DCT / Wavelet zu nutzen und dennoch verlustfrei zu machen, können Sie sich JPEG-LS oder JPEG2000 für die Komprimierung vorstellen. Das einzige ist, dass es nicht im Sinne Ihrer Definition gestreamt wird .
quelle
Dies sieht so aus, als würden Sie eine Digitalkamera für eine verlustfreie RAW einsetzen.
1 / Überprüfen Sie den Quellcode von dcraw, um festzustellen, was verschiedene Kamerahersteller bereits tun. Zum Beispiel verwendet Pentax ein int-Schema variabler Länge (Länge N, codiert mit einem Huffman-Code, dann N Bits), um das Delta eines Pixels gegenüber dem vorherigen Pixel derselben Farbe im Bayer-Mosaik zu codieren. und dies erreicht routinemäßig Verhältnisse von 1: 1,5 bis 1: 2.
2 / DNG-Dateien können ebenfalls komprimiert werden. Überprüfen Sie anhand der Adobe-Spezifikationen, wie es gemacht wird. Sie sind sich nicht sicher, ob es auf einer ähnlichen Vorhersage + int-Codierung mit variabler Länge (Streaming) basiert. oder wenn es das fortgeschrittenere JPEG-LS verwendet, das auf LOCO basiert (und das leider mehrere Durchgänge für die Daten erfordert).
quelle
zlib hat einen Komprimierungsmodus ("HUFFMAN_ONLY"), der schnell ist und nicht viel Speicher benötigt. Für typische Fotos mit zlib mit libpng erhalte ich etwa 1: 2 Komprimierungsverhältnisse. Sie können es mit ImageMagick, GraphicsMagick oder pngcrush ausprobieren.
Diese Beispiele verwenden alle den PNG "Sub" -Filter (1), der für Fotos wirksam ist. Für * Magick bedeutet "-quality 1" und für pngcrush "-m 12" die Verwendung des "sub" -Filters und der "huffman_only" -Komprimierung.
quelle