[研究]图像压缩质量研究

图像压缩质量研究

问题的提出

我有大量的图片存储于硬盘上,并大多数时间只做浏览。考虑到占用空间的性价比,我需要一种二次备份方案,将随身硬盘上的这些图片减小体积,将原图冷存储于另一个机械硬盘中,以兼顾存储成本和效率。

因此,一种面向PNG、JPG的压缩技术是首先就需要考虑且十分必要的。而在实践中,我发现利用JPEG压缩和WebP压缩可以在某种程度上压缩图片,从而降低体积。然而,质量数字不同,图片体积也不同,并且压缩后效果也不一样,那么,这个质量数字应该取值多少呢?

对此,笔者进行了一定的研究。在研究时,使用的照片是NSFW类型(不适合工作场所访问),下文中将使用Lena图片进行介绍。

有趣的是,Lena图本身其实也是一张NSFW图。

对Lena图感兴趣的读者可以去Lenna 97: A Complete Story of Lenna进行了解,然而,如前文所述,Lena图本身也是一张不适合工作场所访问的图。

实验结论

talk is cheap,先把结论放出来

image

如上图所示:

当压缩质量设置为70时,JPEG和WebP都能获得较好的尺寸和图像质量。

而图上也告诉我们其他信息:

  • 质量=100时,webp总比jpeg能够节省约一半的空间
  • 质量>80时,提升质量获得的图像质量并不明显(<10%),而体积成指数形式飙升
  • 质量<30时,JPEG的图像质量开始明显下降,并随着质量数字的降低而飞快身高,最终将生成完全不可用的图片
  • 质量<10时,图像将被压缩到原体积的不足5%,而WebP还能保持可读

JPEG压缩损失的像素距离-频数分布图

image

image

上图显示了JPEG将一张图片压缩到质量5时,损失的像素信息的分布。如图所示,可以确认99.9%的像素差异集中于0.4以内(归一化距离,计算方法是将所有距离按照最大值规范化到\([0,1]\)内),而95%的损失集中于0.2以内。

近似的,JPEG压缩时损失的像素距离及其频率的关系符合卡方分布。如上图的红色线所示。

WEBP压缩损失的像素距离-频数分布图

image

image

WebP在压缩时也符合相似的规律,然而,其像素差异更集中,可以确认99%的像素差异集中于0.2以内。

WebP的像素差异-频数近似符合指数分布,如上图的红色线所示。

低画质下的压缩效果

webp在质量<10下有损压缩的效果

image

jpeg在质量<10下有损压缩的效果
image

尤其是,当质量<5时,JPEG的可读性已经非常差。

image

如上图所示,JPEG的低画质压缩效果是毁灭性的。

实验过程

通过使用mozjpeg(mozjpeg version 4.1.5 (build 20231110))和libwebp(v1.4.0)进行压缩。基本过程是:将实验照片进行压缩,分别保存为100个级别的图片,随后对这些图片进行图片像素对比。对比的方法是:计算图片的每个像素RGB值的欧几里得距离\(d\)(此处忽略了Alpha通道),当欧几里得距离\(d <10\)时,认为像素存在肉眼可见的差异,并进行标记。随后,统计压缩前后的体积和差异像素点数量,并整理总结成上图。

diff_webp_overlay

如上图所示,压缩后的图片与原图片的像素差异点在图片中使用紫色点标识出。

附录

多次实验、多张图片取均值得到的另一实验结果。

image

posted @ 2025-07-24 22:52  二氢茉莉酮酸甲酯  阅读(99)  评论(0)    收藏  举报