WebP、JPEG 和 JPEG 2000 的比较研究(2010 年 9 月)
注意:我们使用发布的第一个 WebP 版本(使用 libvpx
库)进行了这项初步研究。此外,源图片是我们从网络抓取的 JPEG 图片。根据社区的反馈,我们现在开始使用 libwebp
0.1.2 版开展新研究,并以无损图片 (PNG) 作为源。新研究取代了此研究。
WebP 团队对三种图片压缩方法进行了一项对比研究,使用了 100 万张随机图片。该研究的目标是衡量这些方法实现的压缩率,并分析图片大小和压缩之间的权衡。
我们对数据集中包含的 90 万张 JPEG 图片应用了三种压缩方法:WebP、JPEG 2000 和 Re-JPEG。JPEG 图片使用 Re-JPEG 重新压缩,以便每个图片都尽可能接近目标峰值信噪比 (PSNR) 值。该团队对图片进行了压缩后,再对其进行了分析。
除了大规模研究之外,该团队还手动检查了 100 张随机图片,发现在大多数情况下,WebP 提供的可接受的视觉质量。
总结
与 JPEG 或 JPEG 2000 相比,WebP 的整体压缩率更高。对于网络上最常见的小图片,文件大小最小化带来的好处尤为显著。
数据集
研究中使用的数据集是从从网络抓取的图片库中随机抽取的 100 万张图片。下表显示了数据集中不同类型图片的分布情况。
类型 | 计数 |
---|---|
JPEG | 约 90 万 |
PNG | 约 4.7 万 |
GIF | 约 4.7 万 |
其他 | 约 6,000 |
实验设计
实验分两个阶段进行:
该团队对图片运行了 WebP,目标 PSNR 为 42。他们调整了 WebP 编码器的质量参数 (QP),直到针对给定图片获得的结果尽可能接近 42。因此,每张图片获得的实际 PSNR 值不一定是 42。
该团队将 WebP 压缩图片的 PSNR 值用作 JPEG 2000 和重新 JPEG 图片的目标 PSNR。他们还对 JPEG 2000 和 JPEG 图片的质量参数进行了线搜索,以尽可能接近目标 PSNR。
实际压缩结果以百分比的形式按以下公式计算得出:
compression_percentage = 100 * (original_image.length - compressed_image.length) / original_image.length
结果
测试针对负压缩增益和非负压缩增益分别得出了以下结果:
非负压缩增益
如果某种方法在压缩后增加了图片大小,该团队不会对其进行处罚。也就是说,当 compressed_image.length 大于 original_image.length 时,compression_percentage 被视为 0。
负压缩增益
该团队允许出现负压缩百分比结果,以便更好地了解各种压缩工具的原始性能。
以下是三种方法分别实现的平均压缩百分比。
类型 | 获得的平均 PSNR | 平均压缩百分比 (非负压缩增益) |
平均压缩百分比 (负压缩增益) |
---|---|---|---|
WebP | 39.38 | 41.30 | 39.80 |
JPEG 2000 | 39.49 | 27.67 | 9.71 |
Re-JPEG | 39.36 | 22.37 | 14.62 |
允许负压缩增益时,JPEG 2000 的平均性能低于 JPEG。这可能是因为 JPEG 图片中存在高频伪影;这些伪影可能会导致压缩效果不理想。
实验中用于转换为 JPEG 2000 的 Kakadu 实现未能转换约 24 万张图片。
JPEG 2000 的压缩百分比低于重新 JPEG 压缩,这主要是因为对于许多图片,JPEG 2000 的压缩结果是负压缩。因此,JPEG 图片的总体压缩得分较低。
下图显示了三种方法的分布图:
图 1:图片大小受众群体分布
该图表显示,大多数图片都很小。大小超过 50 万的图片的频率通常低于 100 次。
图 2:WebP、JPEG 和 JPEG 2000 图片的压缩百分比
此图表表明,与重新压缩的 JPEG 和 JPEG 2000 相比,使用 WebP 压缩的图片正文的压缩效果更好。此外,与其他格式相比,使用 WebP 压缩的图片压缩效果更好。
图 3:图片大小和压缩百分比的比较
此图表显示,与其他格式相比,WebP 实现的压缩效果更好,尤其是对于较小的图片。