Estoy tratando con un gran archivo de imágenes satelitales de la Tierra, cada una con 15 minutos de diferencia en la misma área, por lo tanto, son bastante similares entre sí. Dos contiguos se ven así:
Los algoritmos de video funcionan muy bien al comprimir múltiples imágenes similares. Sin embargo, estas imágenes son demasiado grandes para video (10848x10848) y el uso de codificadores de video eliminaría los metadatos de las imágenes, por lo que extraerlas y restaurar los metadatos sería engorroso incluso si obtengo un codificador de video para trabajar con imágenes tan grandes.
Para hacer algunas pruebas, reduje las 96 imágenes de un día a 1080x1080 píxeles, con un total de 40.1MB y probé una compresión diferente con los siguientes resultados:
- código postal: 39.8 MB
- rar: 39.8 MB
- 7z: 39,6 MB
- tar.bz2: 39.7 MB
- zpaq v7.14: 38.3 MB
- fp8 v2: 32.5 MB
- paq8pxd v45: 30.9 MB
Se supone que los tres últimos aprovechan mucho mejor el contexto y, de hecho, funcionan mejor que la compresión tradicional, pero la relación de compresión sigue siendo bastante pobre en comparación con el video mp4 que puede llevarlo a 15 MB o incluso menos, preservando la calidad de la imagen.
Sin embargo, ninguno de los algoritmos utilizados por esas utilidades de compresión parece aprovechar la similitud de las imágenes como lo hace la compresión de video. De hecho, usando packJPG , que comprime cada imagen por separado, todo el conjunto se reduce a 32.9 MB, bastante cerca de fp8 y paq8pxd, pero sin aprovechar en absoluto las similitudes entre las imágenes (porque cada imagen se comprime individualmente).
En otro experimento, calculé en Matlab la diferencia de las dos imágenes anteriores, y se ve así:
La compresión de ambas imágenes originales (219.5 + 217.0 = 436.5 kB en total) con fp8 las reduce a 350.0 kB (80%), pero al comprimir una de ellas y la imagen de diferencia (como un jpg de la misma calidad y usar 122.5 kB), el resultado en un archivo de 270.8 kB (62%), de nuevo (como lo revela la comparación mp4 y packJPG), fp8 no parece aprovechar mucho las similitudes. Incluso comprimido con rar, una imagen más la diferencia funciona mejor que fp8 en las imágenes originales. En ese caso, rar desciende a 333,6 kB (76%).
Supongo que debe haber una buena solución de compresión para este problema, ya que puedo imaginar muchas aplicaciones. Además de mi caso particular, supongo que muchos fotógrafos profesionales tienen muchas tomas similares debido a disparos secuenciales o imágenes de lapso de tiempo, etc. Todos los casos que se beneficiarían de dicha compresión.
Además, no necesito compresión sin pérdidas, al menos no para los datos de la imagen (se deben preservar los metadatos).
Entonces ... ¿Existe algún método de compresión que explote las similitudes entre las imágenes comprimidas?
Las dos imágenes de la prueba anterior se pueden descargar aquí , y las 96 imágenes de la primera prueba aquí .
Is there a compression utility that take advantage of the similarities between images better than zpaq and fp8?
, yIs there a updated/maintained version of the fp8 utility?
es probable que las líneas ofensivos. Contraste eso con, por ejemplo,Is there a compression *method, algorithm or technique* that take advantage of the similarities between images better than zpaq and fp8?
el enfoque podría decirse que es muy diferente. Solicitar software es probablemente redundante de todos modos, ya que el software específico (si corresponde) seguramente se mencionará en cualquier respuesta dada.Respuestas:
No conozco un software específico que haga esto, pero hay algunas investigaciones sobre el tema. Por ejemplo, vea los artículos Conjuntos de compresión de imágenes similares de Samy Ait-Aoudia, Abdelhalim Gabis, Amina Naimi, y Conjuntos de compresión de imágenes similares utilizando modelos de compresión híbrida de Jiann-Der Lee, Shu-Yen Wan, Chemg-Min Ma, Rui -Feng Wu.
En un nivel más práctico, podría extender su técnica de resta, por ejemplo, escribiendo un script que use ImageMagick para calcular la diferencia entre imágenes consecutivas, guardando el resultado como un jpeg (o un png comprimido si lo desea sin pérdidas). Obtendrá una imagen base y un conjunto de imágenes "delta" comprimidas que deberían ser mucho más pequeñas. Para calcular la diferencia usando ImageMagick:
Para volver a calcular agregando de nuevo:
(Puede hacer lo mismo usando jpg en su lugar y ahorrar mucho espacio).
fuente