无损压缩类似图像?


10

我需要减小照片库的大小,因此自然要对其进行压缩。它们中的许多不是完全相同,但是仍然非常相似(相同场景的后续镜头)。是否有任何压缩算法可以利用这一事实有效地压缩这些图像?7zip(LZMA)没有用。

Answers:


11

您可以尝试Paq 8(fp8_v2.zip)。我只是自己在1440张类似的PNG图片上尝试过,然后再在111张相似的JPG图片上尝试过。这是结果。

  • 1440个PNG文件,28,631,615字节=> 2,058,653字节已压缩
  • 111个JPG文件,15,003,820字节=> 489,096字节已压缩

使用以下命令时,压缩PNG文件大约需要8分钟和550 MB的内存:

fp8_v2.exe -7 images *.png

使用以下文件时,压缩JPG文件大约需要5分钟和125 MB的内存:

fp8_v2.exe -5 images image12*.jpg

另请参阅:jpg无损图像压缩测试


JPG的97%压缩似乎是不现实的。您链接到的比较测试中的数字表示压缩率约为20%
OneSolitaryNoob,2015年

@OneSolitaryNoob您是否忘记了JPEG相似?110/111 = 99.1%预期压缩率。他链接的比较测试是关于压缩单个JPEG。
纳文

@Navin真的不太可能。即使它们看起来几乎相同,大多数像素也会略有不同。
OneSolitaryNoob

@OneSolitaryNoob那么呢?1秒的视频(30帧)可以压缩为与单个帧相同的大小。只要细微的差异构成了数据的一小部分,就可以了。
纳文

@Navin多数民众赞成在有损压缩,许多细节都消失了,但大多数人不会注意到。Paq *是无损压缩
OneSolitaryNoob

1

我想像一下,考虑到足够大的窗口,采用算术编码器的burrows-wheeler变换将是理想的选择。如果将BZIP2配置为使用等于一小段照片的块大小,会发生什么情况?它将变慢并占用更多内存,但压缩率应会飙升。您是否尝试过使用更大块大小的LZMA?


1

这是一个简单的解决方案,不适用于照片,但是如果其中有几张图像具有大的逐像素相同区域,则可能有效:将图像保存为未压缩的格式,例如BMP(不是PNG或GIF),然后将其压缩并压缩使用像XZ这样的压缩器,例如在Linux上使用类似

tar -c myDirectory | xz -9 >myDirectory.tar.xz

代替TAR和XZ,可以使用带有“ solid archive”选项的7-Zip获得大致相同的性能。这样,我可以将16个类似的屏幕截图压缩为2 MB的存档,每个屏幕截图分别保存为单独的PNG文件时大约需要900 KB。该解决方案的好处是它使用通用的文件格式,因此无需安装新软件即可工作。(不幸的是,较旧的甚至更通用的程序GZIP和BZIP2对我来说做得不好-可能是因为BZIP2的块大小无法配置为大于900 KB。)


0

不是我所见。可能最接近的事情是拍摄几个相似的JPEG并将其放入MJPEG电影中。您也可以将APNG或动画GIF用于类似目的。

我不确定这样做的效果如何,听起来您已经在谈论电影屏幕截图了,所以将它们重新打包到电影文件中听起来……适得其反。

也许还有更好的方法,如果您仍然拥有屏幕的剪辑,只需找到一个命令行工具即可为您提取准确的帧,将唯一标识符复制到某个文本文件中,然后您就可以始终在需要时可以轻松地重新提取框架。


GIF不适合压缩照片,而动画GIF则更不适合。在我看来,即使将照片压缩为MJPEG视频也似乎没有用,因为恢复单个图像会很困难。
马丁

我并不是说这是个主意... :-)最终的主意是将照片放入原始格式的动画版本中。
afrazier 2012年
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.