专栏名称: 高可用架构
高可用架构公众号。
目录
相关文章推荐
字节跳动技术团队  ·  基于LLM的AI应急:多模态信息智能化分析整 ... ·  17 小时前  
字节跳动技术团队  ·  远程访问代理+内网穿透:火山引擎边缘网关助力 ... ·  昨天  
字节跳动技术团队  ·  稀土掘金 x Trae ... ·  昨天  
51好读  ›  专栏  ›  高可用架构

WebP已经适合主流使用?美图图像选型评测及优化历程

高可用架构  · 公众号  · 架构  · 2017-05-23 10:00

正文

请到「今天看啥」查看全文


  • V_PRED(Vertical-垂直预测):使用 Block 上边的一行 Above 来填充 Block 中的每一行;

  • DC_PRED(Average-均值预测):使用 Left 和 Above 中所有像素的平均值作为唯一的值填充 Block;

  • TM_PRED(TrueMotion-运动预测):使用渐进的方式,记录上面一行的渐进差,以同样的差值,以 Left 为基准拓展每一行。


  • Figure 1: 帧内预测模型


    除了三种宏块通用的四种模型之外,对于 4x4 的亮度块,还有额外的 6 种近似于水平和垂直预测的模型,可以在示意图中找到。


    据官方介绍,WebP 有损压缩优于JPEG 算法的原因主要有三点,除了上面介绍的预测编码之外,自适应分块策略通过将图像划分为若干个(默认是 4 )视觉效果相近的区域,每个区域根据其特性个性化设置压缩参数(例如量化步长);最后相对于 JPEG 采用的哈夫曼编码,WebP 的布尔算术编码也带来了额外 5%-10% 的压缩比。


    业务应用和兼容性


    在业务普及上,Google 的 Youtube、Gmail、Google Play 等产品都已经应用了 WebP 格式,其应用商店也早已经完全使用了 WebP,除此之外,国外如 Facebook,ebay 等巨头,国内如淘宝,腾讯等一线公司都已经在使用 WebP 作为新的图像格式。


    兼容性上,对于目前据统计, 目前全球约有 73.35%, 国内约 60.67% 的用户可以直接体验 WebP。 除了本家兄弟 Chrome(23+) 和 Android (4.0+)支持 WebP 之外,QQ 和 UC 等基于 Chromium 内核的浏览器也支持,并且对于移动端,除了 Android 4.0 以上版本对 WebP 的原生支持以外,其他版本和 iOS 也可以通过官方提供的解析库支持 WebP:Android 和 iOS,并且 Safari 和 Firefox 也都有支持的 WebP 的计划,对于动态 WebP,目前 Chrome 32+ 和 Opera 19+ 已经有支持,详细数据请参考:兼容性神器 [3]。


    对比测试


    通过上述的调研,我们最后选取了 WebP 作为图像业务优化的方向,并通过一系列测试和现有的 JPEG 编码器做对比。对于传统的 JPEG 编码实现,主要包括 Libjpeg-turbo 和 Mozjpeg,其中 Libjpeg-turbo 是经典 Libjpeg 的复刻,采用单指令流多数据流(SIMD)指令来加速JPEG编码和解码基础效率,也就是优化传统算法的编解码速度,目前许多地方使用的 Libjpeg 大多是指 Libjpeg-turbo,Mozjpeg 则是 Libjpeg-turbo 的复刻,旨在通过减少文件大小(约10%)来加快网页的加载时间,以及在不改变图像质量的前提下提高编码效率,因此这里对比将会同时考虑这两种编码器:Libjpeg-turbo version 1.5.1 和 Mozjpeg version 3.1; WebP 使用的则是 Libwebp-0.6.0。


    为了衡量不同编码器的压缩效果,我们采用 SSIM(结构相似性)作为图像质量指标,数值介于 0-1 之间,压缩后图像质量越高,和原图的 SSIM 越接近于 1,可以用来表示图像压缩前后的相似度/失真度,这是一种公认的比 SNR 更好的质量标准。需要说明的是,Guetzli 使用的 Butteraugli 指标是基于人眼对图像的视觉效果的一种度量器,本身是一种很符合肉眼的一种标准,但是由于该指标的正确性和成熟度有待论证,所以这里也就没有选择其作为衡量质量的手段。


    我们从压缩比,压缩时间,压缩质量三个维度对比这三种编码器,为了尽可能接近线上真实需求,测试场景为电商服务(随机抓取 100 张 JPEG 图像)和广告服务(随机抓取 50 张 JPEG 图像),测试环境为 macOS Sierra V10.12,2.5 GHz Intel Core i7 处理器,内存为 16 GB 1600 MHz DDR3。


    测试一:单位像素比特数-SSIM


    测试方法:


    1. 利用三种编码器分别将 JPEG 原图在所有可选 Quality 参数下压缩,记录图像 BPP (bits per pixel) 和 SSIM 数值,其中 Mozjpeg 和 Libjpeg-turbo 均加上参数 “-optimize”,其余使用默认值,WebP 除 “-q” 外,其余使用默认值;

    2. 根据 BPP 和 SSIM 的对应关系绘图。


    电商服务


    电商图片集合按照大小一分为二,分开对比,以考量不同图像大小对编码器编码性能的影响:


    AVG File Size=803.38KB

    Figure 2: BPP-SSIM

    AVG File Size=72.27KB


    Figure 3: BPP-SSIM

    广告服务


    AVG File Size=322.49KB







    请到「今天看啥」查看全文