AV1:编码块划分

2024-03-13 02:36
文章标签 编码 划分 av1

本文主要是介绍AV1:编码块划分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

​AV1是AOM于2018年发布的一代视频编码标准,相比于VP9其编码效率提升30%,相对于H.26X系列标准,AV1完全免去专利费可以自由使用。

AV1和其他视频编码标准类似,也采用基于块的编码架构。当编码器读进一帧图像,首先将其划分为互不重叠的super block(SB),然后对SB进一步划分编码。

Super Block


SB是AV1中的最大编码单元,类似于HEVC中的CTU,在AV1中SB的尺寸可以是128x128或64x64,由sequence header中的语法元素use_128x128_superblock指定

SB可以进一步划分,类似于HEVC中的CTU划分为CU,亮度划分块的尺寸从128x128到4x4(色度最小到4x4)。AV1支持10种划分模式,

图1 AV1编码块划分方式

图1是AV1编码块支持的10种划分方式,其中R表示可以递归划分,可见AV1的矩形划分块不能再进行子划分,只有QT划分能进行子划分。

图2 AV1具体划分模式

除PARTITION_NONE外,AV1支持的9种划分模式具体如图2,可以分为三类,第一类4子块划分包括PARTITION_SPLIT, PARTITION_VERT_4, PARTITION_HORZ_4,第二类3子块划分(T-Shape)包括PARTITION_HORZ_A, PARTITION_HORZ_B, PARTITION_VERT_A, PARTITION_HORZ_B ,第三类2子块划分包括PARTITION_HORZ, PARTITION_VERT 。对于8x8和128x128块不允许使用PARTITION_VERT_4 ,PARTITION_HORZ_4 划分。且对于8x8块还不能使用T-Shape划分。
Tile


AV1中的Tile划分和HEVC类似,用于提升编码的并行效率,不同Tile之间互不依赖。

图3 AV1的Tile划分

如图3,Tile就是将图像划分为一些矩形区域,每个区域内包含一些SB块。图像中每个Tile相互独立,各自编码。AV1规定最小的Tile可以只包含一个SB,最大的Tile宽度不超过4096,尺寸不超过4096x2304,一帧图像最多有512个Tile。

参考


  1. https://aomedia.org/

  2. https://aomedia.googlesource.com/aom/

  3. J. Han et al., "A Technical Overview of AV1," in Proceedings of the IEEE, vol. 109, no. 9, pp. 1435-1462, Sept. 2021, doi: 10.1109/JPROC.2021.3058584.

  4. Y. Chen et al., "An Overview of Core Coding Tools in the AV1 Video Codec," 2018 Picture Coding Symposium (PCS), San Francisco, CA, USA, 2018, pp. 41-45, doi: 10.1109/PCS.2018.8456249. 

这篇关于AV1:编码块划分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/803387

相关文章

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

Thread如何划分为Warp?

1 .Thread如何划分为Warp? https://jielahou.com/code/cuda/thread-to-warp.html  Thread Index和Thread ID之间有什么关系呢?(线程架构参考这里:CUDA C++ Programming Guide (nvidia.com)open in new window) 1维的Thread Index,其Thread

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

form表单提交编码的问题

浏览器在form提交后,会生成一个HTTP的头部信息"content-type",标准规定其形式为Content-type: application/x-www-form-urlencoded; charset=UTF-8        那么我们如果需要修改编码,不使用默认的,那么可以如下这样操作修改编码,来满足需求: hmtl代码:   <meta http-equiv="Conte

4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)

一、Camera 简化思路 在 Camera 的开发中,其实我们通常只关注打开相机、图像预览和关闭相机,其他的步骤我们不应该花费太多的精力 为此,应该提供一个工具类,它有处理相机的一些基本工具方法,包括获取摄像头 ID、选择最优预览尺寸以及打印相机参数信息 二、Camera 工具类 CameraIdResult.java public class CameraIdResult {

Python字符编码及应用

字符集概念 字符集就是一套文字符号及其编码的描述。从第一个计算机字符集ASCII开始,为了处理不同的文字,发明过几百种字符集,例如ASCII、USC、GBK、BIG5等,这些不同的字符集从收录到编码都各不相同。在编程中出现比较严重的问题是字符乱码。 几个概念 位:计算机的最小单位二进制中的一位,用二进制的0,1表示。 字节:八位组成一个字节。(位与字节有对应关系) 字符:我们肉眼可见的文字与符号。

在Eclipse环境下修改Tomcat编码的问题

问题: 由于BMS需要设置UTF-8编码,要不就会出现中文乱码问题; 一、项目保持UTF-8格式; 二、由于可能会多次移除项目、加载项目,不想每次都要修改tmp0\conf 原因: 如果在eclipse中配置了tomcat后,其实,tomcat所用的所有tomcat配置文件,都不是catalina_home/config下面的xml文件,而是在eclipse所创建的Serve

在Unity环境中使用UTF-8编码

为什么要讨论这个问题         为了避免乱码和更好的跨平台         我刚开始开发时是使用VS开发,Unity自身默认使用UTF-8 without BOM格式,但是在Unity中创建一个脚本,使用VS打开,VS自身默认使用GB2312(它应该是对应了你电脑的window版本默认选取了国标编码,或者是因为一些其他的原因)读取脚本,默认是看不到在VS中的编码格式,下面我介绍一种简单快

【电子通识】洁净度等级划分及等级标准

洁净度常用于评估半导体、生物制药、医疗、实验室及科研院所、新能源等领域的洁净室、无尘室或者无菌室等环境。         一般来说,晶圆光刻、制造、测试等级为100级或1000级的洁净间,百级洁净间要求空气中0.5微米的尘埃粒子数不得超过每立方米3520个;等级为1000级的洁净间要求0.5微米的尘埃粒子数不得超过每立方米35200个。         晶圆切割或封装工序一