目录
WebP简介
\(\quad\)目前在互联网上,图片流量仍占据较大的一部分。因此,在保证图片质量不变的情况下,节省流量带宽是大家一直需要去解决的问题。传统的图片格式,如 JPEG,PNG,GIF 等格式图片已经没有太多的优化空间(某些研究在搞二次压缩)。因此 Google 于 2010 年提出了一种新的图片压缩格式 — WebP,给图片的优化提供了新的可能。
\(\quad\)WebP 图片格式来源于 VP8 视频编解码器,VP8 编解码器的一个强大功能就是能够进行帧内压缩,或者更确切地说,能将视频的每个帧都被压缩,再压缩帧与帧之间的差异。
更具体的描述可以关注官方文档https://developers.google.com/speed/webp/docs/webp_study
WebP格式在相同图像质量条件下压缩率高于JPEG。
原理
与JPEG算法相比WebP多了黄色部分的操作,即:
- 对图像数据生成预测块,并与原始数据做差,残差数据进行DCT变换
- WebP使用的统计压缩器是算术压缩器,替换 JPEG使用的霍夫曼编码器。
进一步解释以上两条原因:
为什么对预测数据做残差就可以提高压缩率呢?
残差块通常包含了较小的数值范围,同时数据分布更加集中(如下图所示),熵值更低。
通过结合预测和做残差,残差通常包含许多零值,可以更有效地压缩。
为什么使用算术编码压缩率高于哈夫曼编码?
算术编码:算术编码通常比哈夫曼编码更加高效。算术编码将整个数据流映射到一个单一的数值范围内,而哈夫曼编码则是将数据映射到变长的编码字串。由于算术编码对整个数据流进行编码,因此它可以更好地利用数据中的统计特性,达到更高的压缩率。
哈夫曼编码:哈夫曼编码通过根据字符出现频率来分配变长的编码字串,出现频率高的字符使用较短的编码,出现频率低的字符使用较长的编码。虽然哈夫曼编码在理论上可以达到信息论的熵下限,但它需要构建编码树,这可能会导致一些额外的编码开销。