Compression de nombreuses grandes images similaires?


17

J'ai affaire à une grande archive d'images satellites de la Terre, chacune prise à 15 minutes d'intervalle sur la même zone, elles sont donc assez similaires les unes aux autres. Deux contigus ressemblent à ceci: entrez la description de l'image ici

Les algorithmes vidéo compressent très bien plusieurs images similaires. Cependant, ces images sont trop grandes pour la vidéo (10848x10848) et l'utilisation d'encodeurs vidéo supprimerait les métadonnées des images, donc les extraire et restaurer les métadonnées serait encombrant même si j'obtiens un encodeur vidéo pour travailler avec des images aussi grandes.

Pour faire des tests, j'ai réduit les 96 images d'une journée à 1080x1080 pixels, totalisant 40,1 Mo et j'essaie une compression différente avec les résultats suivants:

  1. zip: 39,8 Mo
  2. rar: 39,8 Mo
  3. 7z: 39,6 Mo
  4. tar.bz2: 39,7 Mo
  5. zpaq v7.14: 38,3 Mo
  6. fp8 v2: 32,5 Mo
  7. paq8pxd v45: 30,9 Mo

Les trois derniers, sont censés profiter beaucoup mieux du contexte et fonctionnent mieux que la compression traditionnelle, mais le taux de compression est encore assez faible par rapport à la vidéo mp4 qui peut le porter à 15 Mo voire moins en préservant la qualité de l'image.

Cependant, aucun des algorithmes utilisés par ces utilitaires de compression ne semble tirer parti de la similitude des images comme le fait la compression vidéo. En fait, en utilisant packJPG , qui compresse chaque image séparément, l'ensemble descend à 32,9 Mo, assez proche de fp8 et paq8pxd mais sans tirer le meilleur parti des similitudes entre les images (car chaque image est compressée individuellement).

Dans une autre expérience, j'ai calculé dans Matlab la différence des deux images ci-dessus, et cela ressemble à ceci:

entrez la description de l'image ici

La compression des deux images originales (219,5 + 217,0 = 436,5 kB au total) avec fp8 les ramène à 350,0 kB (80%), mais en compressant l'une d'entre elles et l'image de différence (en jpg de même qualité et en utilisant 122,5 kB), résultat dans un fichier de 270,8 ko (62%), encore une fois (comme le révèlent les comparaisons mp4 et packJPG), fp8 ne semble pas tirer grand avantage des similitudes. Même compressé avec rar, une image plus la différence font mieux que fp8 sur les images originales. Dans ce cas, rar le réduit à 333,6 ko (76%).

Je suppose qu'il doit y avoir une bonne solution de compression pour ce problème, car je peux envisager de nombreuses applications. À côté de mon cas particulier, je suppose que de nombreux photographes professionnels ont de nombreux clichés similaires en raison de la prise de vue séquentielle, des images en accéléré, etc. Tous les cas qui bénéficieraient d'une telle compression.

De plus, je n'ai pas besoin de compression sans perte, du moins pas pour les données d'image (les métadonnées doivent être préservées).

Alors ... Existe-t-il une méthode de compression qui exploite les similitudes entre les images compressées?

Les deux images du test ci-dessus peuvent être téléchargées ici , et les 96 images du premier test ici .


1
Plus de commentaires des personnes qui ont mis la question en attente seraient appréciés. Je pense que la question est suffisamment générale et qu'on peut y répondre sans pointer vers un produit spécifique, mais vers une méthode, un algorithme ou une technique.
Camilo Rada

1
Galerie d'arachide (je n'ai pas voté pour fermer) mais Is there a compression utility that take advantage of the similarities between images better than zpaq and fp8?et Is there a updated/maintained version of the fp8 utility?sont probablement les lignes offensantes. Comparez cela avec, par exemple, Is there a compression *method, algorithm or technique* that take advantage of the similarities between images better than zpaq and fp8?la mise au point est sans doute très différente. La demande de logiciel est probablement redondante de toute façon, car un logiciel spécifique (le cas échéant) sera presque certainement mentionné dans toute réponse donnée.
Anaksunaman

1
Je suis d'accord. Et.. Voila. Bonne chance. =)
Anaksunaman

2
"Trop gros pour la vidéo"? Je ne suis pas sûr d'être d'accord avec cela. Certains codecs ont des résolutions maximales très élevées ou illimitées. Vous n'essayez pas de créer une vidéo consultable, compressez simplement des images statiques. Pourriez-vous encoder les métadonnées sous forme de sous-titres ou d'autres données?
benshepherd

1
Pour ajouter à la liste des applications, j'aurais besoin de cela pour stocker les images originales d'un projet time-lapse qui obtiendra des pièces supplémentaires à l'avenir. Les images JPG 10 000 x 4K actuelles prennent 25 Go d'espace, alors qu'un MP4 composé ne prend que 85 Mo.
Akseli Palén

Réponses:


6

Je ne connais pas de logiciel spécifique qui le fasse, mais il y a des recherches sur le sujet. Par exemple, voir les articles Compression d'ensembles d'images similaires de Samy Ait-Aoudia, Abdelhalim Gabis, Amina Naimi et Compression d'ensembles d'images similaires à l'aide d'un modèle de compression hybride par Jiann-Der Lee, Shu-Yen Wan, Chemg-Min Ma, Rui -Feng Wu.

À un niveau plus pratique, vous pouvez étendre votre technique de soustraction, par exemple en écrivant un script qui utilise ImageMagick pour calculer la différence entre des images consécutives, en enregistrant le résultat en jpeg (ou en png compressé si vous le souhaitez sans perte). Vous obtiendrez une image de base et un ensemble d'images "delta" compressées qui devraient être beaucoup plus petites. Pour calculer la différence à l'aide d'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

Pour recalculer en ajoutant:

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

(Vous pouvez faire la même chose en utilisant jpg à la place et économiser beaucoup d'espace).


Il semble que cela ne gère pas les débordements. J'ai des images similaires avec des couleurs très différentes, et donc, j'ai des artefacts dans les images recalculées, soit en utilisant Minus / Plus ou Subtract / Add.
Adrien Clerc
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.