¿Comprimir sin pérdida imágenes similares?

10

Necesito reducir el tamaño de mi biblioteca de fotos, así que naturalmente quiero comprimirlas. Muchos de ellos no son idénticos, pero siguen siendo muy similares (tomas posteriores de la misma escena). ¿Existe algún algoritmo de compresión que aproveche este hecho para comprimir efectivamente estas imágenes? 7zip (LZMA) es inútil.

Erik
fuente

Respuestas:

11

Puede probar Paq 8 (fp8_v2.zip). Solo lo probé en 1440 imágenes PNG similares y luego nuevamente en 111 imágenes JPG similares. Aquí están los resultados.

  • 1440 archivos PNG, 28,631,615 bytes => 2,058,653 bytes comprimidos
  • 111 archivos JPG, 15,003,820 bytes => 489,096 bytes comprimidos

La compresión de los archivos PNG tomó aproximadamente 8 minutos y 550 MB de memoria al usar:

fp8_v2.exe -7 images *.png

La compresión de los archivos JPG tomó aproximadamente 5 minutos y 125 MB de memoria al usar:

fp8_v2.exe -5 images image12*.jpg

Ver también: prueba de compresión de imagen sin pérdida jpg

jftuga
fuente
La compresión del 97% para los JPG parece poco realista. Los números en la prueba de comparación que vincula para decir que la compresión es aproximadamente del 20%
OneSolitaryNoob
@OneSolitaryNoob ¿Olvidó que los JPEG son similares? 110/111 = 99,1% de compresión esperada. La prueba de comparación que vinculó se trata de comprimir un solo JPEG.
Navin
@Navin es realmente poco probable. Incluso si se ven casi idénticos, la mayoría de los píxeles serán ligeramente diferentes.
OneSolitaryNoob
@OneSolitaryNoob ¿Y qué? 1 segundo de video (30 cuadros) se puede comprimir a aproximadamente el mismo tamaño que un solo cuadro. Mientras la ligera diferencia constituya una pequeña fracción de los datos, todo está bien.
Navin
@Navin es una compresión con pérdida, muchos detalles se han ido, pero la mayoría de la gente no se dará cuenta. Paq * es compresión sin pérdidas
OneSolitaryNoob
1

Me imagino que la transformación de madriguera con un codificador aritmético sería ideal para esto dada una ventana lo suficientemente grande. ¿Qué sucede si configura BZIP2 para usar un tamaño de bloque igual a una pequeña serie de fotos? Será más lento y tomará más memoria, pero la relación de compresión debería dispararse. ¿Y ya has probado LZMA con bloques de mayor tamaño?

Peter Hanneman
fuente
1

Aquí hay una solución simple que no funciona para fotos, pero puede funcionar si uno tiene varias imágenes con grandes áreas idénticas de píxel a píxel: guarde las imágenes en un formato desempaquetado como BMP (no PNG o GIF) y luego TAR y comprima con un compresor decente como XZ, por ejemplo, en Linux con algo como

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

En lugar de TAR y XZ, uno puede usar 7-Zip con la opción de "archivo sólido" para obtener aproximadamente el mismo rendimiento. De esta forma, podría comprimir 16 capturas de pantalla similares, que tomaban aproximadamente 900 KB cada una cuando se guardaban como archivos PNG separados, en un archivo de 2 MB. El beneficio de esta solución es que utiliza formatos de archivo comunes, por lo que funciona sin instalar un nuevo software. (Desafortunadamente, los programas más antiguos e incluso más comunes, GZIP y BZIP2, no hicieron un buen trabajo para mí, tal vez porque el tamaño de bloque de BZIP2 no se puede configurar para que sea mayor de 900 KB).

Jaan
fuente
0

No es que lo haya visto. Probablemente lo más cercano sería tomar varios archivos JPEG similares y ponerlos en una película MJPEG. También puede usar APNG o GIF animados para un propósito similar.

Sin embargo, no estoy seguro de qué tan bien funcionaría, y parece que ya estás hablando de capturas de pantalla de películas, por lo que volver a empaquetarlas en un archivo de película suena ... contraproducente.

Quizás una mejor manera, si todavía tiene los clips de los que provienen las pantallas, sería simplemente encontrar una herramienta de línea de comando que pueda extraer el marco exacto para usted, copiar ese identificador único en un archivo de texto en algún lugar, y luego siempre puede Vuelva a extraer fácilmente el marco cuando lo necesite.

afrazier
fuente
GIF no es adecuado para comprimir fotos, y GIF animado es aún menos. Incluso comprimir fotos en un video MJPEG no parece útil a mis ojos, porque restaurar imágenes individuales sería difícil.
Martin
No dije que fuera una buena idea ... :-) La idea final era poner las fotos en una variante animada de su formato original.
Afrazier