《数据万象带你玩转视图场景》第一期:avif图片压缩详解

news2025/1/9 16:52:30

前言

随着硬件的发展,不管是手机还是专业摄像设备拍出的图片随便可能就有几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 的最先受益者!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/385331.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ARM架构Ubuntu下使用Docker安装MySQL

大家好,我是中国码农摘星人。 欢迎分享/收藏/赞/在看! 由于ARM架构的限制,许多软件还没有做到完全适配,CentOS、MySQL等软件安装频繁出错。于是决定做一栏相关软件环境安装的文章。 基础信息 Apple M1 ProUbuntu 22.04 运行 使…

Python 如何安装 MySQLdb ?

人生苦短 我用python Python 标准数据库接口为 Python DB-API, Python DB-API为开发人员提供了数据库应用编程接口。 Python 数据库接口支持非常多的数据库, 你可以选择适合你项目的数据库: GadFlymSQLMySQLPostgreSQLMicrosoft SQL Serve…

来 CSDN 三年,我写了一本Python书

大家好,我是朱小五。转眼间已经来 CSDN 3年了,其中给大家一共分享了252篇Python文章。 但这三年,最大的收获还是写了一本Python书! 在这个自动化时代,我们有很多重复无聊的工作要做。想想这些你不再需要一次又一次地做…

站内信箱系统的设计与实现

技术:Java、JSP等摘要:在经济全球化和信息技术成为发展迅速的今时今日,人们通过电子邮件收发进行信息传递已经成为主流。随着互联网和网络办公的发展,电子邮件正在被广泛应用在人们的日常生活中。跟据调查研究统计,在全…

文件系统-

文件系统 是一个面向用户的可视化管理类型的操作系统 其实就是管理硬盘的基本单位扇区,然后将存储数据可视化管理给用户 文件系统包含两个部分 文件的集合和目录结构 对于用户和系统来说文件系统时不一样的 操作系统只解释可执行文件 文件内部结构 文件就是基本…

【JVM】详解Java内存区域和分配

这里写目录标题一、前言二、运行时数据分区2.1程序计数器(PC)2.2 Java虚拟机栈2.3 本地方法栈2.4 Java堆2.5 方法区2.5.1 运行时常量池2.6 直接内存三、HotSpot虚拟机对象探秘3.1 对象的创建3.2 对象的内存布局3.3 对象的访问定位一、前言 C/C需要自行回收和释放已经没用的对象…

2023年 Java 发展趋势

GitHub 语言统计表明,Java在编程语言中排名第二,而在2022年的TIOBE指数中,Java排在第四。 抛开排名,Java是自诞生以来企业使用率最高的编程语言,作为一种编程语言,它比许多竞争对手都有更多的优点&#xf…

【C/C++】逗号表达式、算术运算符优先级

一、逗号表达式 1、如下图中代码,为变量d赋值,d的值为逗号表达式中的哪一个呢? 运行结果:d的值为6 2、再举个例子 运行结果:d的结果还是6 3、再举个例子 运行结果 以上面三种不同的逗号表达式为例,…

IronOCR 2023.3.2 Crack by Xacker

适用于 .NET 2023.3.2 的 IronOCR 提高了从 PDF 阅读文本时的可靠性。2023 年 3 月 2 日 - 10:22 新版本特征 添加了与 Amazon AWS (Amazon Linux) 的兼容性。添加了对各种旧版 Linux 发行版的兼容性。提高了从 PDF 阅读文本时的可靠性。创建可搜索的 PDF 时提高了速度和保真度…

JVM调优面试题——基础知识

文章目录1、JDK,JRE以及JVM的关系2、编译器到底干了什么事?3、类加载机制是什么?3.1、装载(Load)3.2、链接(Link)3.3、初始化(Initialize)4、类加载器有哪些?5、什么是双亲委派机制?6、介绍一下JVM内存划分&#xff08…

[蓝桥杯] 数学与简单DP问题

文章目录 一、简单数学问题习题练习 1、1 买不到的数目 1、1、1 题目描述 1、1、2 题解关键思路与解答 1、2 饮料换购 1、2、1 题目描述 1、2、2 题解关键思路与解答 二、DP问题习题练习 2、1 背包问题 2、1、1 题目描述 2、1、2 题解关键思路与解答 2、2 摘花生 2、2、1 题目…

收个滴滴Offer:从小伙三面经历,看看需要学点啥?

说在前面 在尼恩的(50)读者社群中,经常有小伙伴,需要面试大厂。 后续结合一些大厂的面试真题,给大家梳理一下学习路径,看看大家需要学点啥? 这里也一并把题目以及参考答案,收入咱…

Spring 容器创建初始化,获取bean流程分析

Spring 容器创建初始化,获取bean流程分析 Spring 容器创建初始化 流程分析 1、首先读取bean.xml 文件 2、扫描指定的包 com.hspedu.spring.component 2.1、扫描包,得到bean的class对象,排除包下不是bean的 2.2、扫描将bean信息封装BeanDef…

python之selenium库安装及用法(定位法、获取文本、文本框输入、鼠标点击、滑动滚动条)

一、selenium库安装 pip install selenium二、浏览器驱动安装 谷歌浏览器驱动下载地址:https://chromedriver.storage.googleapis.com/index.html 根据你电脑的谷歌浏览器版本,下载相应的就行。我下载的是110.0.5481.XX中的chromedriver_win32.zip 下载…

无公网IP快解析实现U+随时随地访问

现阶段商品从生产到消费者手中要经过多个环节,为实现对每一个环节进行管理,越来越多的企业选择通过信息化手段来实现。供应链管理系统配合供应链中各实体的业务需求,使操作流程和信息系统紧密配合,做到各环节无缝链接,…

【C++】string类的使用

目录 一、标准库中的string类 二、string类的常用接口 1、string类对象的常见构造 2、string类对象的容量操作 2.1、size 与 length 2.2、capacity 与 reserve 2.3、resize 2.4、总结 3、string类对象的访问及遍历操作 3.1、operator[] 与 at 3.2、begin end 3.3、…

Portraiture5人像磨皮润色修饰插件

Portraiture3和Portraiture4这两个版本大家用的比较多,那是因为这两个版本是中文比较全的版本。portraiture是一款强大的64位PS磨皮滤镜,利用该PS滤镜插件可以对图片中的人物进行润色,磨皮等操作,处理皮肤材质、头发等。帮您消除了…

HNU工训中心:平台 2HDL 语言与验证实验报告

一、自定 FSM 说明 1、状态描述 State0:睡觉,如果闹钟响则起床吃早餐,否则继续睡觉 State1:吃早餐,吃完去上课 State2:上课,上完课后如果要开会就去开会,否则去自习 State3&…

LiveGBS国标GB/T28181视频流媒体平台-功能视频集中录制存储云端录像H264|H265|HEVC视频存储

LiveGBS国标GB/T28181视频流媒体平台-视频集中录制存储云端录像H264|H265|HEVC视频存储1、云端录像存储2、手动配置录像2.1、按需录像2.2、一直录像3、录像计划3.1、录像计划入口3.2、新增录像计划3.3、编辑录像计划3.4、关联通道4、查看云端录像4.1、查看录像4.1.1、时间轴模式…

vue路由文件拆分管理

随着项目的原来越大,路由越来越多,我们的路由也会越来越多,如果都集中在一个文件中,会很冗杂文件很长。这时候我们可以将路由文件拆分,可读、方便管理。多人合作添加路由也能更多的避免代码冲突 代码拆分目录如图&…