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:
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:
- zip: 39,8 Mo
- rar: 39,8 Mo
- 7z: 39,6 Mo
- tar.bz2: 39,7 Mo
- zpaq v7.14: 38,3 Mo
- fp8 v2: 32,5 Mo
- 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:
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 .
Is there a compression utility that take advantage of the similarities between images better than zpaq and fp8?
etIs 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.Réponses:
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:
Pour recalculer en ajoutant:
(Vous pouvez faire la même chose en utilisant jpg à la place et économiser beaucoup d'espace).
la source