Comprimir sem perdas imagens semelhantes?

9

Eu preciso reduzir o tamanho da minha biblioteca de fotos, então, naturalmente, quero compactá-los. Muitos deles não são muito idênticos, mas ainda são muito semelhantes (tomadas subsequentes da mesma cena). Existe algum algoritmo de compressão que aproveite esse fato para compactar efetivamente essas imagens? 7zip (LZMA) é inútil.

    
por Erik 29.04.2012 / 12:44

4 respostas

11

Você pode tentar o Paq 8 (fp8_v2.zip). Eu tentei eu mesmo em 1440 imagens PNG semelhantes e, em seguida, novamente em 111 imagens JPG semelhantes. Aqui estão os resultados.

  • 1440 arquivos PNG, 28.631.615 bytes = > 2.058.653 bytes compactados
  • 111 arquivos JPG, 15.003.820 bytes = > 489.096 bytes compactados

A compactação dos arquivos PNG levou cerca de 8 minutos e 550 MB de memória ao usar:

fp8_v2.exe -7 images *.png

A compactação dos arquivos JPG levou cerca de 5 minutos e 125 MB de memória ao usar:

fp8_v2.exe -5 images image12*.jpg

Veja também: teste de compactação de imagens jpg sem perdas

    
por 29.04.2012 / 18:42
1

Eu imagino que o transbordador de tocas com um codificador aritmético seria ideal para isso, dada uma janela grande o suficiente. O que acontece se você configurar o BZIP2 para usar um tamanho de bloco igual a uma pequena sequência de fotos? Vai ser mais lento e ter mais memória, mas a taxa de compressão deve disparar. E você já experimentou o LZMA com tamanhos maiores de blocos?

    
por 29.04.2012 / 18:15
1

Aqui está uma solução simples que não funciona para fotos, mas pode funcionar se houver várias imagens com grandes áreas idênticas pixel-a-pixel: salve as imagens em um formato descompactado como BMP (não PNG ou GIF) e TAR eles e comprimir com um compressor decente como XZ, e. g. no Linux com algo como

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

Em vez de TAR e XZ, pode-se usar o 7-Zip com a opção "arquivo sólido" para obter aproximadamente o mesmo desempenho. Dessa forma, eu poderia compactar 16 capturas de tela semelhantes, que levaram cerca de 900 KB cada, quando salvas como arquivos PNG separados, em um arquivo de 2 MB. O benefício dessa solução é que ela usa formatos de arquivo comuns, por isso funciona sem instalar um novo software. (Infelizmente os programas mais antigos e mais comuns GZIP e BZIP2 não fizeram um bom trabalho para mim - talvez porque o tamanho de bloco do BZIP2 não pode ser configurado para ser maior que 900 KB.)

    
por 11.03.2014 / 23:18
0

Não que eu tenha visto. Provavelmente, o mais próximo seria tirar vários JPEGs semelhantes e colocá-los em um filme MJPEG. Você também pode usar o APNG ou GIFs animados para um propósito semelhante.

Não sei bem o quão bem isso funcionaria, e parece que você já está falando sobre screencaps de filmes, então reempacotá-los em um arquivo de filme soa ... contraproducente.

Talvez seja melhor, se você ainda tiver os clipes de onde vieram as telas, encontrar uma ferramenta de linha de comando que possa extrair o quadro exato para você, copiar esse identificador exclusivo em um arquivo de texto e, em seguida, você sempre pode re-extrair o quadro facilmente quando precisar.

    
por 29.04.2012 / 15:54