Compactando muitas imagens grandes semelhantes?

16

Estou lidando com um grande arquivo de imagens de satélite da Terra, cada uma com 15 minutos de distância na mesma área, portanto são bastante parecidas entre si. Dois contíguos são assim: insira a descrição da imagem aqui

Os algoritmos de vídeo fazem muito bem ao compactar várias imagens semelhantes. No entanto, essas imagens são muito grandes para vídeo (10848x10848) e o uso de codificadores de vídeo excluiria os metadados das imagens, portanto, extraí-las e restaurar os metadados seria complicado, mesmo que eu tenha um codificador de vídeo para trabalhar com imagens grandes.

Para fazer alguns testes, reduzi as 96 imagens de um dia para 1080x1080 pixels, totalizando 40,1MB e tente uma compactação diferente com os seguintes resultados:

  1. zip: 39.8 MB
  2. rar: 39,8 MB
  3. 7z: 39.6 MB
  4. tar.bz2: 39.7 MB
  5. zpaq v7.14: 38.3 MB
  6. fp8 v2: 32.5 MB
  7. paq8pxd v45: 30.9 MB

Os três últimos devem tirar vantagem muito melhor do contexto e, de fato, funcionar melhor que a compactação tradicional, mas a taxa de compactação ainda é muito baixa em comparação com o vídeo em mp4, que pode levar a 15 MB ou até menos, preservando a qualidade da imagem.

No entanto, nenhum dos algoritmos usados ​​por esses utilitários de compactação parece tirar proveito da semelhança das imagens como a compactação de vídeo. De fato, usando o packJPG , que comprime cada imagem separadamente, todo o conjunto chega a 32,9 MB, bem perto de fp8 e paq8pxd, mas sem tirar o máximo partido das semelhanças entre as imagens (porque cada imagem é compactada individualmente).

Em outro experimento, calculei no Matlab a diferença das duas imagens acima, e fica assim:

insira a descrição da imagem aqui

A compactação de ambas as imagens originais (219,5 + 217,0 = 436,5 kB total) com o fp8 reduz para 350,0 kB (80%), mas a compactação de uma delas e a imagem da diferença (como um jpg da mesma qualidade e usando 122,5 kB) resultam em em um arquivo de 270,8 kB (62%), novamente (como revelado pela comparação mp4 e packJPG), o fp8 não parece tirar muito proveito das semelhanças. Mesmo compactada com rar, uma imagem mais a diferença se saem melhor do que o FP8 nas imagens originais. Nesse caso, o rar reduz para 333,6 kB (76%).

Acho que deve haver uma boa solução de compactação para esse problema, pois posso visualizar muitos aplicativos. Além do meu caso particular, acho que muitos fotógrafos profissionais têm muitas fotos semelhantes devido a filmagem seqüencial ou imagens com lapso de tempo, etc. Todos os casos que se beneficiariam dessa compactação.

Além disso, não preciso de compactação perdida, pelo menos não para os dados da imagem (os metadados devem ser preservados).

Então ... Existe um método de compactação que explora as semelhanças entre as imagens que foram compactadas?

As duas imagens do teste acima podem ser baixadas aqui e as 96 imagens do primeiro teste aqui .

Camilo Rada
fonte
1
Seria apreciado mais feedback das pessoas que colocaram a questão em espera. Sinto que a pergunta é suficientemente geral e pode ser respondida sem apontar para um produto específico, mas para um método, algoritmo ou técnica.
Camilo Rada
1
Galeria de amendoim (não votei para fechar), mas Is there a compression utility that take advantage of the similarities between images better than zpaq and fp8?e Is there a updated/maintained version of the fp8 utility?provavelmente as linhas ofensivas. Compare isso com, por exemplo, Is there a compression *method, algorithm or technique* that take advantage of the similarities between images better than zpaq and fp8?o foco é sem dúvida muito diferente. Solicitar software é provavelmente redundante de qualquer maneira, já que software específico (se aplicável) será quase certamente mencionado em qualquer resposta fornecida.
Anaksunaman
1
Concordo. E feito. Boa sorte. =)
Anaksunaman
2
"Grande demais para o vídeo"? Não tenho certeza se concordo com isso. Alguns codecs têm resoluções máximas muito altas ou ilimitadas. Você não está tentando criar um vídeo assistível, apenas comprima algumas imagens estáticas. Você poderia codificar os metadados como legendas ou outros dados?
benshepherd
1
Para adicionar à lista de aplicativos, eu precisaria disso para armazenar quadros originais de um projeto de lapso de tempo que obterá peças adicionais no futuro. As atuais imagens de 10 000 x 4K JPG ocupam 25 GB de espaço, enquanto um MP4 composto por elas ocupa apenas 85 MB.
Akseli Palén 15/10/19

Respostas:

5

Não conheço um software específico que faça isso, mas há algumas pesquisas sobre o assunto. Por exemplo, consulte os artigos Compactando conjuntos de imagens semelhantes de Samy Ait-Aoudia, Abdelhalim Gabis, Amina Naimi e Compactando conjuntos de imagens semelhantes usando o modelo de compressão híbrido de Jiann-Der Lee, Shu-Yen Wan, Chemg-Min Ma, Rui -Feng Wu.

Em um nível mais prático, você pode estender sua técnica de subtração, por exemplo, escrevendo um script que use o ImageMagick para calcular a diferença entre imagens consecutivas, salvando o resultado como um jpeg (ou um png compactado, se desejar, sem perdas). Você obterá uma imagem base e um conjunto de imagens "delta" compactadas que devem ser muito menores. Para calcular a diferença usando o ImageMagick:

convert image2.png image1.png -compose MinusSrc -composite -depth 24 -define png:compression-filter=2 -define png:compression-level=9 -define png:compression-strategy=1 difference-2-1.png

Para recalcular adicionando novamente:

convert image1.png difference-2-1.png -compose Plus -composite image2-reconstructed.png

(Você pode fazer o mesmo usando jpg e economizar muito espaço).

Marco Pantaleoni
fonte
Parece que isso não gerencia estouros. Tenho algumas imagens semelhantes com cores muito diferentes e, portanto, tenho alguns artefatos nas imagens recalculadas, usando Minus / Plus ou Subtract / Add.
Adrien Clerc