对比研究

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

实验设计

实验分两个阶段进行:

  1. 该团队对图片运行了 WebP,目标 PSNR 为 42。他们调整了 WebP 编码器的质量参数 (QP),直到针对给定图片获得的结果尽可能接近 42。因此,每张图片获得的实际 PSNR 值不一定是 42。

  2. 该团队将 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 实现的压缩效果更好,尤其是对于较小的图片。