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:
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:
- zip: 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
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:
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 .
Is there a compression utility that take advantage of the similarities between images better than zpaq and fp8?
eIs 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.Respostas:
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:
Para recalcular adicionando novamente:
(Você pode fazer o mesmo usando jpg e economizar muito espaço).
fonte