¿Alguien sabe de alguna técnica de compresión de imágenes con las siguientes características:
- sin pérdidas
- transmisión: quiero comprimir sobre la marcha, píxel por píxel.
- sobrecarga de poca memoria: puedo permitirme amortiguar una sola línea, pero idealmente ni siquiera eso.
- no hay diccionarios dinámicos
- Solo imágenes del "mundo real", por lo que el rendimiento en "casos desagradables" como los tableros de ajedrez no es importante
- Compresión 2-3x (5x-10x sería aún mejor, pero eso es mucho lo que sé)
- puede operar en píxeles de 10-16 bits (dependiendo de mi cámara)
Mis imágenes tendrán ~ 1k píxeles de ancho, con tasas de píxeles de ~ 20Mpix / seg. La profundidad de píxel será algo entre 10 y 16 bits por píxel (dependiendo de la elección de la cámara). Suponga que los anchos de píxeles de menos de 16 bits estarían representados dentro de una palabra de 16 bits por ahora, en lugar de tener que extraerse de un flujo continuo de bits.
¿Alguna forma de codificación aritmética delta + quizás?
image-processing
image-compression
Martin Thompson
fuente
fuente
Respuestas:
Puede considerar usar Huffyuv: http://neuron2.net/www.math.berkeley.edu/benrg/huffyuv.html
Esto no es mucho mejor que un simple zip, pero todavía está ligeramente optimizado para imágenes.
Cualquier compresión relacionada con la imagen proviene de técnicas como la cuantización vectorial o la codificación de transformación. Para utilizar transformaciones como DCT / Wavelet y sin pérdidas, puede pensar en JPEG-LS o JPEG2000 para la compresión. Lo único es que no se está transmitiendo en su sentido de definición.
fuente
Esto se parece a lo que pondrías en una cámara digital para un RAW sin pérdidas.
1 / Verifique el código fuente de dcraw para ver lo que varios fabricantes de cámaras ya están haciendo. Por ejemplo, Pentax usa un esquema int de longitud variable (longitud N codificada con un código huffman, luego N bits) para codificar el delta de un píxel wrt el píxel anterior del mismo color en el mosaico Bayer; y esto logra rutinariamente proporciones de 1: 1.5 a 1: 2.
2 / Los archivos DNG también se pueden comprimir. Verifique cómo se hace desde las especificaciones de Adobe ... No estoy seguro si se basa en una predicción similar + codificación int de longitud variable (que es streaming); o si utiliza el JPEG-LS más avanzado basado en LOCO (y que desafortunadamente requiere varios pases en los datos).
fuente
zlib tiene un modo de compresión ("HUFFMAN_ONLY") que es rápido y no requiere mucha memoria. Para fotos típicas que usan zlib con libpng, obtengo relaciones de compresión de 1: 2. Puede probarlo con ImageMagick, GraphicsMagick o pngcrush.
Todos estos ejemplos usan el filtro "sub" PNG (1) que es efectivo para fotos. Para * Magick, "-quality 1" y para pngcrush, "-m 12" significa utilizar el filtro "sub" y la compresión "huffman_only".
fuente