WebP 压缩研究
简介
我们根据我们在 libwebp
中发布的新编码器对 WebP 和 JPEG 图片压缩进行了比较评估。目标是使用公开提供的工具运行一组易于重复的实验,并比较 WebP 和 JPEG 实现的图片压缩效果。
我们之前对 WebP 的比较研究侧重于从大量网络中抓取的 JPEG 来源,评估大量图片。JPEG 是一种有损压缩格式,会在来源中引入压缩失真。此外,我们最初还使用峰值信噪比 (PSNR) 作为质量指标。将 PSNR 用作图片的质量指标时,它存在一些缺点。根据社区的反馈,我们会对 PNG 图片(包括一些标准测试套件中提供的图片)进行实验。在本研究中,我们使用结构相似度 (SSIM) 作为这项研究的质量指标。SSIM 被视为更好的视觉质量指标。
方法
我们介绍了两种类型的评估。在第一种情况下,我们研究了 WebP 在相同质量的 JPEG 级别下实现的额外压缩。具体来说,我们会生成与 JPEG 图片相同质量(根据 SSIM 索引)的 WebP 图片,然后比较 WebP 和 JPEG 图片的文件大小。在第二种情况下,我们会针对 WebP 和 JPEG 分析 SSIM 与每像素位数 (bpp) 的对比情况。这些图表显示了针对 WebP 和 JPEG 的速率失真权衡。
实验数据集包含 PNG 图片。这些图片是从可公开访问的标准测试套件和从网络中抓取的大量 PNG 图片获得的。
每个实验都包含运行一组命令。只有公开提供的命令行工具可用于确保实验在合理范围内可重现。用于此实验的命令行工具包括:
identify
和convert
是 ImageMagick 中的命令行工具。我们使用版本 6.5.7 进行此分析。我们使用convert
在 PNG 和 PPM 格式之间进行转换。我们使用identify
提取了图片的宽度和高度信息。cwebp
和dwebp
是命令行工具,属于我们在 2011 年第 1 季度发布的libwebp
库的一部分。我们使用的是 0.1.2 版库。我们使用cwebp
和dwebp
对 WebP 图片进行了编码和解码。我们使用了这些工具的默认编码和解码参数。cjpeg
和djpeg
是属于libjpeg
库的命令行工具。我们使用的是该库的 6b 版。我们使用cjpeg
和djpeg
对 JPEG 图片进行编码和解码。我们将cjpeg
与-optimize
标志结合使用可以优化文件大小。我们将所有其他参数都设置为默认值。
使用 SSIM 测量图像质量。如前所述,SSIM 通常被认为优于 PSNR。对于 SSIM 索引计算,我们使用 C++ 中的公开实现。读者可以从代码库中下载我们在实验中使用的 Python 脚本。
图片数据集
我们选择这些数据集来评估标准测试图片集合以及对大量图片进行测试。以下是实验中使用的数据集列表。
- Lenna:广泛使用的 Lenna 图片(512 x 512 像素)。
- 柯达:柯达真彩色图片套件中的 24 张图片。
- Tecnick:在 Tecnick.com 上提供的 100 张图像。我们使用了 100 张原始尺寸的 RGB 彩色图像。
- Image_crawl:为了测试大量图片,我们从 Google 图片搜索网页抓取数据库中随机收集了一个 PNG 图片样本。大多数被抓取的 PNG 图片都是图标、图形、图表、扫描的文档等。不过,标准测试集合中的大多数图片都是照片,而不是计算机生成的图片。为了使此数据集在本质上与标准测试套件类似,我们对这些 PNG 图片运行了人脸检测算法,并在此实验中仅考虑了大约 11000 张(通过了此检测测试的图片)。
实验 1:WebP 与 JPEG(相等的 SSIM 索引)
在本实验中,我们会使用类似的 SSIM 值生成 JPEG 和 WebP 图片,并衡量文件大小之比。实验步骤如下:
- 使用固定质量参数 Q 将源 PNG 图片压缩为 JPEG,并录制源 PNG 图片和压缩的 JPEG 图片之间的 SSIM。
- 使用可尽可能实现上述记录的 SSIM 的质量参数将同一来源图片压缩到 WebP 中。
我们对数据集中的所有图片运行了这两个步骤,然后衡量了 JPEG 和 WebP 图片的平均文件大小和 SSIM。
下表显示了 JPEG 质量参数 Q 的三个不同值(50、75 和 95)的实验结果。质量参数 50 和 95 分别表示低比特率和高比特率的图像压缩。我们还添加了 JPEG 质量参数 75,因为它是 JPEG 图片的一般建议质量级别。
表 1:与 JPEG Q=50 对应的同一 SSIM 索引的 WebP 和 JPEG 的平均文件大小
伦纳 | Kodak | 特克尼克 | 图片抓取 | |
---|---|---|---|---|
WebP:平均文件大小 (平均 SSIM) | 17.4 KB (0.841) | 31.0 KB (0.898) | 92.4 KB (0.917) | 6.5 KB (0.901) |
JPEG:平均文件大小 (平均 SSIM) | 23.5 KB (0.840) | 42.7 KB (0.897) | 124.6 KB (0.916) | 9.9 KB (0.899) |
WebP 与 JPEG 文件大小之比 | 0.74 | 0.72 | 0.74 | 0.66 |
表 2:对应 JPEG Q=75 的同一 SSIM 索引的 WebP 和 JPEG 的平均文件大小
伦纳 | Kodak | 特克尼克 | 图片抓取 | |
---|---|---|---|---|
WebP:平均文件大小 (平均 SSIM) | 26.7 KB (0.864) | 46.5 KB (0.932) | 139.0 KB (0.939) | 9.9 KB (0.930) |
JPEG:平均文件大小 (平均 SSIM) | 37.0 KB (0.863) | 66.0 KB (0.931) | 191.0 KB (0.938) | 14.4 KB (0.929) |
WebP 与 JPEG 文件大小之比 | 0.72 | 0.70 | 0.73 | 0.69 欧元 |
表 3:对应 JPEG Q=95 的同一 SSIM 索引的 WebP 和 JPEG 的平均文件大小
伦纳 | Kodak | 特克尼克 | 图片抓取 | |
---|---|---|---|---|
WebP:平均文件大小 (平均 SSIM) | 74.3 KB (0.910) | 118.0 KB (0.978) | 356.0 KB (0.970) | 23.4 KB (0.969) |
JPEG:平均文件大小 (平均 SSIM) | 104 KB (0.907) | 162 KB (0.976) | 492 KB (0.970) | 31.3 KB (0.968) |
WebP 与 JPEG 文件大小之比 | 0.71 | 0.73 | 0.72 | 0.75 |
从上表可以看出,与 JPEG 相比,S/3 索引在 SSIM 指数相同或略高的情况下,可提供 25%-34% 的压缩增益。
实验 2:针对 WebP 和 JPEG 的 SSIM 与 BPP 的关系
我们研究了 JPEG 和 WebP 的速率失真权衡。特别是,对于 JPEG 和 WebP,我们研究了 SSIM 与每像素比特数 (bpp) 的比较。我们采用源 PNG 图片,使用所有可能 (0-100) 的质量值将其压缩为 JPEG 和 WebP。然后,我们会显示针对每个 JPEG 和 WebP 实现的 SSIM 和 bpp。下图显示了从我们使用的 3 个公共数据集中选择的 3 张图片的 SSIM 与 bpp 关系图。
图 1:Lenna 的 SSIM 与 BPP
图 2:Kodak 数据集中 kodim19.png 的 SSIM 与 BPP 对比
图 3:Tecnick 数据集中 RGB_OR_1200x1200_061.png 的 SSIM 与 BPP 对比
此外,我们还研究了 Kodak 和 Tecnick 数据集 SSIM 与 bpp 图的平均行为。为了绘制出平均行为,我们使用 WebP 和 JPEG 以 100 个不同的质量值压缩数据集中的所有图片。然后,我们绘制每个质量值的 SSIM 和 bpp 的平均值。图片抓取数据集由不能用于进行这种数据汇总的异构图片组成。以下图表分别显示了 Kodak 和 Tecnick 数据集 SSIM 和 bpp 的平均行为。
图 4:柯达数据集的 SSIM 与 BPP。
图 5:Tecnick 数据集的 SSIM 与 BPP 对比
总体而言,从上面的曲线图中我们可以看到,WebP 需要的每像素位数少于 JPEG 才能达到相同的 SSIM 指数。
总结
该研究评估了 WebP 压缩与 JPEG 的对比情况。我们观察到,与等效的 SSIM 索引对应的 JPEG 文件大小相比,WebP 的平均文件大小要小 25%-34%。SSIM 与 bpp 曲线图表明,对于相同的 SSIM 索引,WebP 每像素所需的位数总是少于 JPEG。这些结果表明,与 JPEG 相比,WebP 可以显著提升压缩效果。