压缩许多类似的大图像?


17

我正在处理一个大的地球卫星图像档案,每个卫星相隔15分钟在同一区域拍摄,因此它们彼此非常相似。两个连续的看起来像这样: 在此处输入图片说明

视频算法可以很好地压缩多个相似的图像。但是,此图像对于视频而言太大(10848x10848),并且使用视频编码器会删除图像的元数据,因此即使我让视频编码器可以处理如此大的图像,提取图像并恢复元数据也很麻烦。

为了进行一些测试,我将一天的96张图像减少到1080x1080像素,总计40.1MB,并尝试以下结果进行不同的压缩:

  1. 邮编: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

最后三个应该可以更好地利用上下文,并且确实比传统压缩更好地工作,但是与mp4视频相比,其压缩率仍然很差,可以将其压缩到15 MB甚至更少,以保持图像质量。

但是,这些压缩实用程序使用的算法似乎都没有像视频压缩那样利用图像的相似性。实际上,使用packJPG分别压缩每个图像时,整个程序集减少到32.9 MB,非常接近fp8和paq8pxd,但没有充分利用图像之间的相似性(因为每个图像都是单独压缩的)。

在另一个实验中,我在Matlab中计算了上面两个图像的差,看起来像这样:

在此处输入图片说明

使用fp8压缩两个原始图像(总共219.5 + 217.0 = 436.5 kB)会使它们降至350.0 kB(80%),但是压缩其中一个和差异图像(作为相同质量的jpg并使用122.5 kB),结果在270.8 kB(62%)的文件中,因此再次显示(如mp4和packJPG比较所示),fp8似乎并没有充分利用相似之处。即使使用rar压缩,一张图像加上差异也会比原始图像上的fp8更好。在这种情况下,rar可以将其降至333.6 kB(76%)。

我猜想对于这个问题必须有一个很好的压缩解决方案,因为我可以设想许多应用程序。除了我的特殊情况外,我猜很多专业摄影师会因顺序拍摄或延时图像等而拍摄出许多类似的照片。所有情况都将从这种压缩中受益。

另外,我不需要无损压缩,至少不需要图像数据(必须保留元数据)。

那么... 是否有一种压缩方法可以利用压缩图像之间的相似性呢?

上述试验的两个图像可以被下载这里,和第一测试的96个图像此处


1
搁置该问题的人们的更多反馈将不胜感激。我觉得这个问题很笼统,可以回答而无需指出特定产品,而是针对方法,算法或技术。
卡米洛·拉达

1
花生画廊(我没有投票接近),但Is there a compression utility that take advantage of the similarities between images better than zpaq and fp8?Is there a updated/maintained version of the fp8 utility?很可能有问题的线路。与之形成鲜明对比的是,Is there a compression *method, algorithm or technique* that take advantage of the similarities between images better than zpaq and fp8?焦点可能大不相同。无论如何,询问软件可能都是多余的,因为在给出的任何答案中几乎肯定都会提到特定的软件(如果适用)。
Anaksunaman

1
我同意。并做了。祝好运。=)
Anaksunaman

2
“视频太大了吗?” 不确定我是否同意这一点。一些编解码器具有很高的分辨率或无限的最大分辨率。您并不是要制作可观看的视频,而只是压缩一些静态图像。您可以将元数据编码为字幕还是其他数据?
benshepherd

1
要添加到应用程序列表中,我将需要此文件来存储延时项目的原始帧,这些项目将来会得到更多使用。当前的10000 x 4K JPG图像占用25 GB的空间,其中由它们组成的MP4仅占用85 MB。
阿克塞利·帕伦(AkseliPalén)

Answers:


6

我不知道执行此操作的特定软件,但是对此有一些研究。例如,请参阅文章压缩相似图片的设置由萨米艾特Aoudia,Abdelhalim Gabis,阿米娜纳伊米,以及压缩台使用混合压缩模型相似的图像由Jiann明镜李舒颜万,Chemg民马睿冯武

在更实际的水平上,您可以扩展您的减法技术,例如,编写一个使用ImageMagick来计算连续图像之间的差异的脚本,然后将结果另存为jpeg(或压缩后的png,如果您希望它无损)。您将获得一个基本映像和一组压缩的“增量”映像,这些映像应该小得多。要使用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

通过加回来重新计算:

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

(您可以改用jpg来做同样的事情,并节省大量空间)。


看来这并不能解决溢出问题。我有一些颜色非常不同的相似图像,因此,通过使用减号/加号或减号/加号,重新计算的图像中有一些伪影。
Adrien Clerc '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.