前言

随着硬件的发展,不管是手机还是专业摄像设备拍出的图片随便可能就有几M,甚至几十M,并且现在我们处于随处可及的信息海洋里,海量的图片带来了存储问题、带宽问题、加载时延问题等等。对图片信息进行有效的压缩处理无疑会极大的降低存储成本、流量压力,并且还能显著提升页面加载速度。

图片压缩指在图片质量保持不变的情况,尽可能的减小图片大小,以达到节省图片存储空间、减少图片访问流量、提升图片访问速度的效果。数据万象(Cloud Infinite,CI) 产品推出了 AVIF 压缩功能,可将图片转换为 avif 格式,avif 是基于 av1 的一种全新图片格式,在2020年2月由 Netflix 首次公布于众,目前已支持 Chrome、Firefox 等浏览器。

** AVIF技术原理**

AVIF(AV1 image format)压缩格式,是采用 AV1 帧内编码的一种图像编码格式,是目前最新的图片压缩格式。AV1 是由开放媒体联盟(AOMedia)的成员共同推动研发的一个标准。而 AVIF 则是基于 AV1 编码产生的具有更高压缩能力、保留更佳画面细节的图形压缩格式,相比于其他格式,其帧内编码具有非常多的改进优化:

更灵活的编码树划分:引入更大的编码/变换块单元,编码单元尺寸可达128x128,划分方式更加灵活,多达10种。

更精细的帧内预测模式:56种角度模式,intra copy 调色板模式、帧内预测滤波CFL等使得帧内预测更为精确。

更先进的滤波技术:基于方向约束的增强滤波(CDEF),环路复原滤波(restoration)等有效改善了图像质量。

** TXAV1图片编码器**

数据万象所使用的 AVIF 压缩能力,底层编解码所使用的是腾讯自研的 AV1 编解码器——TXAV1 编码器。在2021年MSU比赛中,关于 AV1 的比赛指标,TXAV1 参加了29项,取得了28项领先,获得综合最佳。

腾讯作为AOM联盟的成员之一,一直致力于技术研发上的深耕,TXAV1 中包含了很多腾讯自研技术:

1、核心数据架构设计

AVIF的划分模式非常复杂,可能性非常多。为了更好的获取数据、减少重复计算和数据的拷贝,设计了一套以treeNode(方便获取节点属性信息, 避免重复计算),IdenticalCU(利用相同Cu计算结果,减少计算量),和SwapBuffer(通过内存交替使用,减少拷贝和重算)为核心的数据架构。在算法和输出码流不变的情况下,为AVIF编码提速20%以上。

2、帧内快速CU,TU决策算法设计

以周边块的信息,包括划分尝试,划分模式,失真代价等,提前决策当前块是否继续划分。

以当前块的CU/TU或子CU/TU的信息为参考, 提前终止当前划分。

3、帧内模式算法设计

采用多级帧内预测算法,通过简单估算,初步筛选出几个重要候选,然后做完整变换,再根据模式和代价补做角度和滤波,大幅加速帧内编码效率。

4、滤波快速算法

AV1中deblock,cdef,restoration等滤波耗时很高,通过对图像内容及参考图像的滤波使用情况分析,对当前帧的滤波进行搜索范围的缩小或跳过处理, 从而大帧提前滤波的处理速度。

5、编码后处理滤波按行并行处理

在图片上可以提速50%。AV1的后处理滤波包括deblock,cdef,restoration等,deblock和cdef滤波的参数导出过程均依赖整帧的数据,这与HEVC标准中的基于块导出参数的过程有很大不同,不利于按行级并行处理;在TXAV1针对图片的优化中实现了基于部分图像进行参数导出,并针对图片优化了参数导出算法。

6、编码intra block copy优化,提速240%

intra block copy对一些游戏或者文字较多的图片收益很大,但intra block copy在搜索最优匹配块的过程中通常使用hash搜索,而对图片生成hash的过程耗时很长。因此在TXAV1的优化中,使用了网格运动搜索算法替换原有的hash搜索,并针对图片优化了网格搜索算法,最终优化后相对原有算法提速240%,压缩性能仅损失2.9%。在大幅加速的同时,保留了intra block copy大部分性能。

** 数据万象产出的AVIF图片效果对比**

1、AVIF 图片视觉对比

以下面一张图作为例子说明 AVIF 图片的优势,保持图片分辨率不变,将图片分别转成 JPG,WebP,AVIF 格式。

从上面四张图可以看到,在经过压缩后,图片原有尺寸均不变的情况下,JPG格式的图片画质相对较差,房屋后面的云层变成大片的明显的色块色条;webp虽然没有出现色块,但整体颜色和原图相比有明显失真;avif格式的图形显示依旧平滑,体积也很小,效果明显优于JPG和WEBP。此时的AVIF相比无损PNG有约42倍的压缩性能,仍保留了原图数据的大部分细节,堪称完美。说明了avif有着更高的压缩效率,很好的保真效果。

2、AVIF 图片质量数据对比

通过大量图片样本测试,不同的压缩质量比较图片压缩前后的文件大小、 PSNR、SSIM,将 AVIF 与最为常见的图片格式 JPG、WebP 、PNG 进行了对比,从以下的实测数据可以看出,AVIF 在压缩方面具有绝对的优势。

AVIF 图片相对 WebP 图片大小平均减小30%多,相对 JPG 图片大小平均减小50%多,相对 PNG 图片平均减少90%左右。

3、AVIF 图片编解码速度对比

通过样本测试比较得到解码时间平均耗时只有某竞品AVIF解码器的58.83%,编码平均耗时只有竞品的63.76%,性能相对竞品在耗时方面优势明显。

** 数据万象AVIF图片压缩的使用方法**

1、通过数据万象接口使用

AVIF 图片压缩可通过数据万象图片处理的 imageMogr2 参数进行使用。

该参数支持以下的处理方式:下载时处理、上传时处理、云上数据处理。

使用前提条件

需要先开通数据万象图片高级压缩功能,您需要在已绑定数据万象服务的存储桶中,开启图片高级压缩功能。

操作指引

a. 登录对象存储控制台,选择指定存储桶,然后选择界面左边红框内“数据处理”,再选择“图片处理”,然后点击编辑,开通后保存即可。



b. 选择该存储桶的一张图片,复制图片链接,比如:https://XXXXXXX-1258125638.cos.ap-nanjing.myqcloud.com/1.png

c. 使用基础图片处理中图片格式转换的参数,在图片链接后面拼上参数:https://XXXXXXX-1258125638.cos.ap-nanjing.myqcloud.com/1.png?imageMogr2/format/avif

d. 即可获取 AVIF 格式图片。

2、通过 CDN 的 AVIF 自适应功能使用

在使用腾讯云 CDN 进行海量图片分发时,可通过开启图片优化,对符合要求的图片请求,自动进行 webp、guetzli、tpg、avif 格式图片压缩,可有效降低因图片产生的下行流量,降低成本。配置步骤如下:

a. 登录 CDN 控制台,在菜单栏里选择域名管理(右侧红框),单击域名右侧管理(左下角红框),即可进入指定域名配置页面。

b. 源站为 COS 对象存储时,可看到图片优化菜单栏,将 AVIF 自适应打开,点击确认之后即可。



c. 开启了 AVIF 自适应图片压缩功能后,满足以下条件的请求,将直接返回 AVIF 处理后的图片:

HTTP 请求头中 accept 头部包含 image/avif。

图片后缀为:jpg、png、bmp、gif。

【具体详情及收费细节请参考】:https://cloud.tencent.com/document/product/228/43121

** 总结**

与传统的压缩格式相比,AVIF 在解决了图片保存、传播、下载过程中的成本和效率问题的同时,还可以在保证更高压缩性能的基础上保留更多的图像细节、支持更多的图片种类、传递更多的图片信息,大大提升用户体验。

赶快来使用腾讯云吧,将图片存储在腾讯云 COS,通过数据万象将业务图片轻松转为 AVIF,让您成为 AVIF 的最先受益者!

《数据万象带你玩转视图场景》第一期:avif图片压缩详解的更多相关文章

  1. Qt开发技术:图形视图框架(二)场景QGraphicsScene、QGraphicsItem与QGraphicsView详解

    前话   Qt的图形视图框架,最核心的三个类为:QGraphicsScene.QGraphicsItem与QGraphicsView.   基于图形框架的高级白板软件Demo QGraphicsSce ...

  2. Flume自定义拦截器(Interceptors)或自带拦截器时的一些经验技巧总结(图文详解)

    不多说,直接上干货! 一.自定义拦截器类型必须是:类全名$内部类名,其实就是内部类名称 如:zhouls.bigdata.MySearchAndReplaceInterceptor$Builder 二 ...

  3. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  4. 21个项目玩转深度学习:基于TensorFlow的实践详解03—打造自己的图像识别模型

    书籍源码:https://github.com/hzy46/Deep-Learning-21-Examples CNN的发展已经很多了,ImageNet引发的一系列方法,LeNet,GoogLeNet ...

  5. 21个项目玩转深度学习:基于TensorFlow的实践详解01—MNIST机器学习入门

    数据集 由Yann Le Cun建立,训练集55000,验证集5000,测试集10000,图片大小均为28*28 下载 # coding:utf-8 # 从tensorflow.examples.tu ...

  6. Java数据持久层框架 MyBatis之API学习六(Mapper XML 文件详解)

    对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...

  7. 21个项目玩转深度学习:基于TensorFlow的实践详解02—CIFAR10图像识别

    cifar10数据集 CIFAR-10 是由 Hinton 的学生 Alex Krizhevsky 和 Ilya Sutskever 整理的一个用于识别普适物体的小型数据集.一共包含 10 个类别的 ...

  8. 视图UIView的大小和位置属性详解

    UIView类中定义了三个属性,分别是frame.bounds与center属性: IKit中的坐标系X轴正方向为水平向右,Y轴正方向为竖直向下. frame属性指的是视图在其父视图坐标系中的位置与尺 ...

  9. 用Ogre实现《天龙八部》场景中水面(TerrainLiquid)详解

    本文主要讲的是<天龙八部>游戏中水面(TerrainLiquid)的具体实现,使用C++,Ogre1.6. 天龙的水面做的比较简单,虽然没有倒影,但动态纹理+深度图做出的效果还行,看着不是 ...

  10. 数据在数组中存储的顺序:小端 OR 大端模式 详解

    大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放: 小端模式,是指数据的高 ...

随机推荐

  1. [namespace hdk] diff.h

    Example cth.txt 12345 54321 114514 hdk.txt 12345 54321 114514 #include"diff.h" using names ...

  2. SuperMap iServer&iPortal&iEdge结合CAS 5.3服务器实现单点登录

    2023-10-19 更新,由于阿里云maven镜像仓库里缺失了很多CAS5.3 依赖,如果缺少可以用附件里的同步到本地仓库 链接:https://pan.baidu.com/s/14DhRci_Am ...

  3. 【赵渝强老师】NoSQL数据库之Cassandra基础

    一.Cassandra简介 Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable.其主要功能比Dynamo (分布式的Key-Value存储系统)更丰富,但支持度却不如 ...

  4. 五,MyBatis-Plus 当中的 “ActiveRecord模式”和“SimpleQuery工具类”(详细实操)

    五,MyBatis-Plus 当中的 "ActiveRecord模式"和"SimpleQuery工具类"(详细实操) @ 目录 五,MyBatis-Plus 当 ...

  5. 《Vue.js 设计与实现》读书笔记 - 第 4 章、响应系统的作用与实现

    第 4 章.响应系统的作用与实现 4.1 响应式数据与副作用 副作用函数就是会对外部造成影响的函数,比如修改了全局变量. 响应式:修改了某个值的时候,某个会读取该值的副作用函数能够自动重新执行. 4. ...

  6. CSP 联训 3

    好吧,又倒数了,就签了个 T2,100 pts. T1 我把相同颜色的存起来,每种颜色找出枚举选哪两个座位不合法的矩阵的左上和右下,如果找到的矩阵左下和右上也相同,则这个矩阵确实不合法,减去,但判断左 ...

  7. /proc/zoneinfo

    root@pita2_mr813_tina35:/# cat /proc/zoneinfo Node 0, zone DMA per-node stats nr_inactive_anon 4749 ...

  8. 数据库运维实操优质文章文档分享(含Oracle、MySQL等) | 2024年8月刊

    本文为大家整理了墨天轮数据社区2024年8月发布的优质技术文章/文档,主题涵盖Oracle.MySQL.PostgreSQL等主流数据库系统以及国产数据库的技术实操,从基础的安装配置到复杂的故障排查, ...

  9. KubeSphere 社区双周报|2024.04.26-05.09

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  10. 云原生周刊:Helm Charts 深入探究 | 2024.3.11

    开源项目推荐 Glasskube Glasskube 提供了一个用于 Kubernetes 的缺失的包管理器.它具有图形用户界面(GUI)和命令行界面(CLI).Glasskube 包是具备依赖感知. ...