本文主要是介绍【视频编码\VVC】编码结构基础知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编码结构概述
包含两个方面:编码时的分层处理架构和编码后码流的语法架构。
为支持视频编码标准的通用性,标准只规定码流的语法语义。
高级语法:片头及其以上的语法架构。
VVC编码码流包含一个或多个编码视频序列(CVS),每个CVS以帧内随机接入点(IRAP)图像或逐渐解码刷新(GDR)图像开始。
编码视频序列
CVS是时域独立可解码的基本单元。每个包含一个或多个按解码顺序排列的访问单元(AU),每个AU包含一个或多个同一时刻的图像单元(PU)(一副编码图像)。所以AU中的不同PU被归属为不同的层(Layer),一个CVS中所有同层的PU组成了编码视频序列层(CLVS)。
每个PU包含一个多多个片(slice),每个slice由相同的树形编码单元(CTU)组成,每个CTU包含亮度树形编码块(CTB)和两个色度分量树形编码块。每个CTU按照二、三、四叉树划分为不同的矩形编码单元(CU)。
为了保证视频编码层的灵活使用,VVC也采用了视频编码层(VCL)和网络适配层(NAL)的双层架构。编码视频流被封装成NAL单元,并且对视频流进行标识,一遍适配网络传输或存储。
参数集
参数集是一个独立的数据单元,包含视频不同层级编码单元的共用信息。包括
- 视频参数集(VPS):层级信息和输出层信息,用于支持分层编码
- 序列参数集(SPS):包含一个CVS中所有图像共用的信息,档次、级别、分辨率、编码工具开关
- 图像参数集(PPS):一副图像所有slice的共用信息,编码工具开关标识、量化参数、分块信息
- 图像头(PH):图像级信息, 包含频繁变化的信息。
- 自适应参数集(APS):类似图像头信息或slice头信息,会被多个slice使用
- 解码能力信息(DCI):profile、tile、level信息,用于编码流的会话协商
- 附加增强信息(SEI):视频内容的附加信息
非编码数据的参数集作为Non-VCLU进行传输,提升了传输关键数据的鲁棒性。
VPS
包含的信息:
- 每个PU子层标识,子层间的相互依赖关系
- 标识输出层集合
- 会话所需的有关操作点关键信息,档次、级别
SPS
- 图像格式信息:采样格式、图像分辨率、量化深度、解码图像是否需要裁剪及裁剪参数
- 编码参数信息:编码块、变换块的最小尺度和最大尺度,帧内预测、帧间预测时变换块的最大划分升读
- 与参考图像相关的信息:参考图像序列号POC
- 档次、层和级
- 时域分级信息:时域子层的最大数目、控制传输POC进位的参数、时域顺序标识开关、与子层相关的参数
- 可视化可用信息VUI:用于表征视频格式的额外信息。
- 其他信息:包括当前SPS引用的VPS\SPS编号和SPS拓展信息
PPS
- 编码工具的可用性标志:符号位隐藏、帧内预测受限、去方块滤波、P/B图像的加权预测、环路滤波边界处理、变化跳过模式
- 量化过程相关语法元素:QP初始值设定、计算每个CU的QP所需要的参数、量化参数偏移量、色度参数的偏移量
- Tile的相关语法元素:tile的划分、总行数、总列数
- 去方块滤波相关语法元素
- slice头中的控制信息,是否有额外的slice头比特、图像编码顺序与输出顺序的先后哦关系、基于上下文的自适应算术编码中确定上下文初始化表格使用的方法
- 编码一副图像时可以共用的其他信息。
多层视频
多层视频编码结构
可分级视频编码
Scalability可分级视频指对视频进行一次编码得到包含多个子集的码流,解码部分子集即可得到一定质量的重建视频。分为时域可分级、质量可分级、空域可分级。
多视点视频编码
由摄像机整列从不同角度拍摄同一场景得到的一组视频信号。除了利用单视点视频的空时域相关性,还可以利用视点间的相关性。
多层视频编码
为了支持上述两个视频的需求,VVC采用了多层给视频编码结构。
每个AU可以包含多个PU,每个PU属于一层,各层间可以独立编码也可以使用层间参考预测编码。各层间的依赖关系由VPS描述,参曹真管理模块根据VPS信息吧参考图像按照规则放入参考帧列表即可。
VVC将图形划分到多个时域层,每层都有一个标识所属时域层的时域层标识号。
VVC允许一个CVS内的图像具有不同的空间分辨率,即参考图像重采样(RPR),可以生成自适应视频流,具有更强的信道匹配能力。需要利用重采样技术。
视频序列
编码视频序列
视频序列由若干时间连续的图像构成,对其进行压缩时,先将该视频序列分割为若干小的图像组(GOP),在VVC中,一个GOP编码后所生成的压缩数据对应标准中的CVS。是时域独立可解码的基本单元,可以作为随机接入点对视频流进行解码。
解码顺序和播放顺序
图像类型
IRAP
IRAP后的第一幅解码图像被称为IRAP图像。
前置图像:解码顺序在IRAP之后而播放顺序在前面的图像。分为随机接入可解码前置(RADL)和随机接入跳过前置(RASL)
后置图像:解码顺序在IRAP之后并播放顺序也在后。
VVC规定了2种IRAP图像
即时刷新(IDR)图像:其前置图像必须是RADL图像,不依赖IDR图像前的室内流信息进行独立解码。
完全随机接入(CRA)图像:允许参考CRA图像前的视频流获得更高编码效率。
GDR
每帧GDR图像中的部分区域仅采用帧内编码,连续多帧GDR(不同帧不同区域)采用帧内编码的区域可以组成一个完整的帧,该帧包含帧内编码模式,可以随机接入。
GDR从non-IDR图像开始解码,在解码特定数量的图像后就能获得内容正确的解码图像 的能力,九二一实现从帧间预测图像随机接入,可以将I帧的高码率分散到一小段时间内传输,防止码率在短时间内突然增大。
GDR图像中的刷新区域与非刷新区域的边界被标识为虚拟边界。
图像
除了PPS,还使用PH和APS来标识图像的共用编码参数。
APS包含大量数据,主要传递自适应环路滤波参数ALF、亮度映射和色度缩放LMCS参数、量化矩阵参数。
图像头
对图像中所有slice有效,承载slice的共用参数
PH承载频繁变换的编码参数信息:图像标识、slice类型允许、图像序列、去方块滤波参数、SAO参数。
PH用于识别一幅图像的第一个slice。
Slice
slice划分的目的时压缩数据的高效存储、传输,每个slice对应一个单独的NAL单元。独立解码。
熵编码在每个slice开始前进行初始化。
分为:I\P\B Slice后面在前面的基础上增加
Tile
一副图像可以划分为若干个Tile,从水平方向和垂直方向将一副图像分割为若干个矩形区域,每个tile包含整数个CTU。
划分tile是为了增强并行处理能力的同时又不引入新的错误扩散。每个tile中的CTU按照光栅扫描进行编码。
子图像
由图像内一块矩形区域的一个或多个slice组成。
树形编码单元
CTU由一个亮度CTB和两个对应的色度CTB组成。
CTU可以进一步划分为多个编码端元CU。
划分方式:垂直二叉树划分、水平二叉树划分、垂直三叉树划分、水平三叉树划分。
嵌套了多类型树的四叉树划分提供了一种内容自适应的编码树结构划分,如何划分采用率失真优化确定。
还有对图像边界上CU划分的处理。
档次profile、层tier和级别level
档次、层和级别指定了对比特流的限制,从而限制了解码比特流需要的能力
- 档次主要规定编码器可采用哪些编码工具或者算法。VVC中主要有6个档次,分别是main 10\main 10 still picture\main 4:4:10\main 4:4:4 10 still picture\multilayer main 10\multilayer main 10 4:4:4
- 两个层main tier\high tier
- 级别则指根据解码端的负载和存储空间情况对关键参数加以限制。13个级别
这篇关于【视频编码\VVC】编码结构基础知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!